From: Markus Triska Date: Tue, 11 Apr 2023 20:31:09 +0000 (+0200) Subject: FIXED: enforce equality also for ground elements in tuples X-Git-Tag: v0.9.2~154^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=5dce7d907572f7646a26214f129c9200340939f7;p=scryer-prolog.git FIXED: enforce equality also for ground elements in tuples 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. --- diff --git a/src/lib/clpz.pl b/src/lib/clpz.pl index daed1471..0e42bd92 100644 --- a/src/lib/clpz.pl +++ b/src/lib/clpz.pl @@ -4357,14 +4357,14 @@ list_first_rest([L|Ls], L, Ls). 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).