enforce same queue in more constraints

This commit is contained in:
Markus Triska
2023-08-15 21:44:39 +02:00
parent 04fbb0c1ce
commit 67c1b171c7

View File

@@ -2246,7 +2246,8 @@ all_distinct(Ls) :-
maplist(fd_variable, Ls), maplist(fd_variable, Ls),
make_propagator(pdistinct(Ls), Prop), make_propagator(pdistinct(Ls), Prop),
new_queue(Q0), new_queue(Q0),
phrase((distinct_attach(Ls, Prop, []),trigger_prop(Prop),do_queue), [Q0], _). phrase((distinct_attach(Ls, Prop, []),trigger_prop(Prop),do_queue), [Q0], _),
variables_same_queue(Ls).
%% nvalue(?N, +Vars). %% nvalue(?N, +Vars).
% %
@@ -2906,7 +2907,8 @@ match_goal(p(Prop), _) -->
[make_propagator(Prop, P)], [make_propagator(Prop, P)],
{ term_variables(Prop, Vs) }, { term_variables(Prop, Vs) },
parse_init(Vs, P), parse_init(Vs, P),
[trigger_once(P)]. [variables_same_queue(Vs),
trigger_once(P)].
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -4348,7 +4350,9 @@ tuples_in(Tuples, Relation) :-
must_be(list(list), Tuples), must_be(list(list), Tuples),
maplist(maplist(fd_variable), Tuples), maplist(maplist(fd_variable), Tuples),
must_be(list(list(integer)), Relation), must_be(list(list(integer)), Relation),
maplist(relation_tuple(Relation), Tuples). maplist(relation_tuple(Relation), Tuples),
append(Tuples, Vs),
variables_same_queue(Vs).
relation_tuple(Relation, Tuple) :- relation_tuple(Relation, Tuple) :-
relation_unifiable(Relation, Tuple, Us, _, _), relation_unifiable(Relation, Tuple, Us, _, _),