Example:
?- tuples_in([[A,B]], [[1,2],[3,4]]),
tuples_in([[A,B]], [[3,2]]).
false.
See https://github.com/SWI-Prolog/swipl-devel/issues/1160.
tuple_domain([], _) --> [].
tuple_domain([T|Ts], Relation0) -->
{ maplist(list_first_rest, Relation0, Firsts, Relation1) },
- ( var(T) ->
- ( Firsts = [Unique] -> T = Unique
- ; { list_to_domain(Firsts, FDom),
+ ( Firsts = [Unique] -> T = Unique
+ ; ( var(T) ->
+ { list_to_domain(Firsts, FDom),
fd_get(T, TDom, TPs),
domains_intersection(TDom, FDom, TDom1) },
fd_put(T, TDom1, TPs)
+ ; []
)
- ; []
),
tuple_domain(Ts, Relation1).