enforce same queue in more constraints
This commit is contained in:
@@ -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, _, _),
|
||||||
|
|||||||
Reference in New Issue
Block a user