From 5dce7d907572f7646a26214f129c9200340939f7 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Tue, 11 Apr 2023 22:31:09 +0200 Subject: [PATCH] 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. --- src/lib/clpz.pl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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). -- 2.54.0