FIXED: variables in reified propagators must share the same queue
Otherwise, propagation steps may be inadvertently omitted, if propagators are scheduled in a different queue. This addresses #2084.
This commit is contained in:
@@ -3625,7 +3625,8 @@ reified_goal(g(Goal), _) --> [{Goal}].
|
|||||||
reified_goal(p(Vs, Prop), _) -->
|
reified_goal(p(Vs, Prop), _) -->
|
||||||
[{make_propagator(Prop, P)}],
|
[{make_propagator(Prop, P)}],
|
||||||
parse_init_dcg(Vs, P),
|
parse_init_dcg(Vs, P),
|
||||||
[{trigger_once(P)}],
|
[{variables_same_queue(Vs),
|
||||||
|
trigger_once(P)}],
|
||||||
[( { propagator_state(P, S), S == dead } -> [] ; [p(P)])].
|
[( { propagator_state(P, S), S == dead } -> [] ; [p(P)])].
|
||||||
reified_goal(p(Prop), Ds) -->
|
reified_goal(p(Prop), Ds) -->
|
||||||
{ term_variables(Prop, Vs) },
|
{ term_variables(Prop, Vs) },
|
||||||
|
|||||||
Reference in New Issue
Block a user