shift morphing to the more general p/2 case

This commit is contained in:
Markus Triska
2023-10-12 23:01:37 +02:00
parent 6ed9a99832
commit 721cf20cf7

View File

@@ -3647,16 +3647,16 @@ reified_goal(d(D), Ds) -->
; { domain_error(one_or_two_element_list, Ds) }
).
reified_goal(g(Goal), _) --> [{Goal}].
reified_goal(p(Vs, Prop), _) -->
reified_goal(p(Vs, Prop0), _) -->
{ morphing_propagator(Prop0, Prop, Target) },
[{make_propagator(Prop, P)}],
target_propagator(Target),
parse_init_dcg(Vs, P),
[{variables_same_queue(Vs),
trigger_once(P)}],
[( { propagator_state(P, S), S == dead } -> [] ; [p(P)])].
reified_goal(p(Prop0), Ds) -->
{ term_variables(Prop0, Vs),
morphing_propagator(Prop0, Prop, Target) },
target_propagator(Target),
reified_goal(p(Prop), Ds) -->
{ term_variables(Prop, Vs) },
reified_goal(p(Vs,Prop), Ds).
reified_goal(function(D,Op,A,B,R), Ds) -->
reified_goals([d(D),p(pfunction(Op,A,B,R)),a(A,B,R)], Ds).