call_or_cut(!, B) :-
'$set_cp_by_default'(B).
+call_or_cut(_:!, B) :-
+ '$set_cp_by_default'(B).
call_or_cut((G1, G2), B) :-
!,
'$call_with_default_policy'(','(G1, G2, B)).
+call_or_cut(_:(G1, G2), B) :-
+ !,
+ '$call_with_default_policy'(','(G1, G2, B)).
call_or_cut((G1 ; G2), B) :-
!,
'$call_with_default_policy'(';'(G1, G2, B)).
+call_or_cut(_:(G1 ; G2), B) :-
+ !,
+ '$call_with_default_policy'(';'(G1, G2, B)).
call_or_cut((G1 -> G2), B) :-
!,
'$call_with_default_policy'(->(G1, G2, B)).
+call_or_cut(_:(G1 -> G2), B) :-
+ !,
+ '$call_with_default_policy'(->(G1, G2, B)).
call_or_cut(G, _) :-
'$call_with_default_policy'(G).
!,
'$call_with_default_policy'(','(G1, G2, B)),
'$call_with_default_policy'(call_or_cut(G3, B, (',')/2)).
+','(_:(G1, G2), G3, B) :-
+ !,
+ '$call_with_default_policy'(','(G1, G2, B)),
+ '$call_with_default_policy'(call_or_cut(G3, B, (',')/2)).
','((G1; G2), G3, B) :-
!,
'$call_with_default_policy'(';'(G1, G2, B)),
'$call_with_default_policy'(call_or_cut(G3, B, (',')/2)).
+','(_:(G1; G2), G3, B) :-
+ !,
+ '$call_with_default_policy'(';'(G1, G2, B)),
+ '$call_with_default_policy'(call_or_cut(G3, B, (',')/2)).
','((G1 -> G2), G3, B) :-
!,
'$call_with_default_policy'(->(G1, G2, B)),
'$call_with_default_policy'(call_or_cut(G3, B, (',')/2)).
+','(_:(G1 -> G2), G3, B) :-
+ !,
+ '$call_with_default_policy'(->(G1, G2, B)),
+ '$call_with_default_policy'(call_or_cut(G3, B, (',')/2)).
','(G1, G2, B) :-
'$call_with_default_policy'(call_or_cut(G1, B, (',')/2)),
'$call_with_default_policy'(call_or_cut(G2, B, (',')/2)).
( '$call_with_default_policy'(','(G1, G2, B))
; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2))
).
+';'(_:(G1, G2), G3, B) :-
+ !,
+ ( '$call_with_default_policy'(','(G1, G2, B))
+ ; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2))
+ ).
';'((G1; G2), G3, B) :-
!,
( '$call_with_default_policy'(';'(G1, G2, B))
; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2))
).
+';'(_:(G1; G2), G3, B) :-
+ !,
+ ( '$call_with_default_policy'(';'(G1, G2, B))
+ ; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2))
+ ).
';'((G1 -> G2), G3, B) :-
!,
( '$call_with_default_policy'(call_or_cut(G1, B, (->)/2)) ->
'$call_with_default_policy'(call_or_cut(G2, B, (->)/2))
; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2))
).
+';'(_:(G1 -> G2), G3, B) :-
+ !,
+ ( '$call_with_default_policy'(call_or_cut(G1, B, (->)/2)) ->
+ '$call_with_default_policy'(call_or_cut(G2, B, (->)/2))
+ ; '$call_with_default_policy'(call_or_cut(G3, B, (;)/2))
+ ).
';'(G1, G2, B) :-
( '$call_with_default_policy'(call_or_cut(G1, B, (;)/2))
; '$call_with_default_policy'(call_or_cut(G2, B, (;)/2))
( '$call_with_default_policy'(','(G1, G2, B)) ->
'$call_with_default_policy'(call_or_cut(G3, B, (->)/2))
).
+->(_:(G1, G2), G3, B) :-
+ !,
+ ( '$call_with_default_policy'(','(G1, G2, B)) ->
+ '$call_with_default_policy'(call_or_cut(G3, B, (->)/2))
+ ).
->((G1 ; G2), G3, B) :-
!,
( '$call_with_default_policy'(';'(G1, G2, B)) ->
'$call_with_default_policy'(call_or_cut(G3, B, (->)/2))
).
+->(_:(G1 ; G2), G3, B) :-
+ !,
+ ( '$call_with_default_policy'(';'(G1, G2, B)) ->
+ '$call_with_default_policy'(call_or_cut(G3, B, (->)/2))
+ ).
->((G1 -> G2), G3, B) :-
!,
( '$call_with_default_policy'(->(G1, G2, B)) ->
'$call_with_default_policy'(call_or_cut(G3, B, (->)/2))
).
+->(_:(G1 -> G2), G3, B) :-
+ !,
+ ( '$call_with_default_policy'(->(G1, G2, B)) ->
+ '$call_with_default_policy'(call_or_cut(G3, B, (->)/2))
+ ).
->(G1, G2, B) :-
( '$call_with_default_policy'(call_or_cut(G1, B, (->)/2))
-> '$call_with_default_policy'(call_or_cut(G2, B, (->)/2))