)
).
-
-strip_module(M0, G0, M1, G1) :-
- ( nonvar(G0),
- G0 = (MG1:G2) ->
- strip_module(MG1, G2, M1, G1)
- ; M0 = M1,
- G0 = G1
- ).
-
strip_module(Goal, M, G) :-
- strip_module(_, Goal, M, G).
+ '$strip_module'(Goal, M, G).
+:- non_counted_backtracking expand_subgoal/5.
expand_subgoal(UnexpandedGoals, MS, Module, ExpandedGoals, HeadVars) :-
( var(UnexpandedGoals) ->
).
+:- non_counted_backtracking expand_module_name/4.
+
expand_module_name(ESG0, MS, M, ESG) :-
( var(ESG0) ->
ESG = M:ESG0
).
+:- non_counted_backtracking expand_meta_predicate_subgoals/5.
+
expand_meta_predicate_subgoals([SG | SGs], [MS | MSs], M, [ESG | ESGs], HeadVars) :-
( ( integer(MS),
MS >= 0
expand_meta_predicate_subgoals([], _, _, [], _).
+:- non_counted_backtracking expand_module_names/5.
+
expand_module_names(Goals, MetaSpecs, Module, ExpandedGoals, HeadVars) :-
Goals =.. [GoalFunctor | SubGoals],
( GoalFunctor == (:),
).
+:- non_counted_backtracking expand_goal/3.
+
expand_goal(UnexpandedGoals, Module, ExpandedGoals) :-
% if a goal isn't callable, defer to call/N to report the error.
catch('$call'(loader:expand_goal(UnexpandedGoals, Module, ExpandedGoals, [])),
'$call'(UnexpandedGoals = ExpandedGoals)),
!.
+:- non_counted_backtracking expand_goal_cases/4.
+
expand_goal_cases((Goal0, Goals0), Module, ExpandedGoals, HeadVars) :-
( expand_goal(Goal0, Module, Goal1, HeadVars) ->
expand_goal(Goals0, Module, Goals1, HeadVars),
expand_goal(Goals0, Module, Goals1, HeadVars),
ExpandedGoals = (Module:Goals1).
+:- non_counted_backtracking expand_goal/4.
+
expand_goal(UnexpandedGoals, Module, ExpandedGoals, HeadVars) :-
( var(UnexpandedGoals) ->
expand_module_names(call(UnexpandedGoals), [0], Module, ExpandedGoals, HeadVars)
)
).
+:- non_counted_backtracking thread_goals/4.
+
thread_goals(Goals0, Goals1, Hole, Functor) :-
( var(Goals0) ->
Goals1 =.. [Functor, Goals0, Hole]
; Goals1 =.. [Functor, Goals0, Hole]
).
+:- non_counted_backtracking thread_goals/3.
+
thread_goals(Goals0, Goals1, Functor) :-
( var(Goals0) ->
Goals0 = Goals1
% The program used to generate the call/N predicates:
%
%
+%
% :- use_module(library(between)).
% :- use_module(library(error)).
% :- use_module(library(lists)).
% length(Args, N),
% Head =.. [call, G | Args],
% N1 is N + 1,
+% CallClause0 =.. ['$prepare_call_clause', G1, M, G0 | Args],
+% CallClause =.. ['$prepare_call_clause', G1, M, G | Args],
% Clause = (Head :- ( var(G) ->
-% instantiation_error(call/N1)
-% ; call_clause(G, Args, N1, G0) ->
-% '$call'(G0)
-% ; type_error(callable, G, call/N1)
-% )).
+% instantiation_error(call/N1)
+% ; G = '$call'(G0) ->
+% CallClause0,
+% '$call_with_inference_counting'('$call'(M:G1))
+% ; CallClause,
+% expand_goal(call(M:G1), M, call(G2)),
+% '$call_with_inference_counting'('$call'(G2))
+% )
+% ).
%
% generate_call_forms :-
% between(1, 64, N),
% n_call_clause(N, Clause),
+% N1 is N+1,
+% portray_clause((:- non_counted_backtracking call/N1)),
% portray_clause(Clause),
% nl,
% false.
-%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
% The '$call' functor is an escape hatch from goal expansion. So far,
% it is used only to avoid infinite recursion into expand_goal/3.
-call_clause('$call'(G), G0) :-
- ( var(G),
- instantiation_error(call/1)
- ; G = M:G1,
- !,
- callable(G1),
- functor(G1, F, _),
- atom(F),
- atom(M),
- F \== [],
- G0 = M:G1
- ; !,
- callable(G),
- functor(G, F, _),
- atom(F),
- F \== [],
- load_context(M),
- G0 = M:G
- ).
-
-call_clause(G, G0) :-
- strip_module(G, M, G1),
- callable(G1),
- functor(G1, F, _),
- atom(F),
- F \== [],
- ( var(M) ->
- load_context(M)
- ; true
- ),
- expand_goal(call(M:G1), M, call(G0)).
-
-
+:- non_counted_backtracking call/1.
call(G) :-
- ( var(G) ->
- instantiation_error(call/1)
- ; call_clause(G, G0) ->
- '$call'(G0)
- ; type_error(callable, G, call/1)
- ).
-
-
-call_clause('$call'(G1), Args, N, G0) :-
- ( var(G1),
- instantiation_error(call/N)
- ; G1 = M:G2,
- !,
- atom(M),
- G2 =.. [F | As],
- atom(F),
- F \== [],
- append(As, Args, As1),
- G3 =.. [F | As1],
- callable(G3),
- G0 = M:G3
- ; !,
- G1 =.. [F | As],
- atom(F),
- F \== [],
- load_context(M),
- append(As, Args, As1),
- G2 =.. [F | As1],
- callable(G2),
- G0 = M:G2
- ).
-
-call_clause(G, Args, _, G0) :-
- strip_module(G, M, G1),
- G1 =.. [F | As],
- atom(F),
- F \== [],
- ( var(M) ->
- load_context(M)
- ; true
- ),
- append(As, Args, As1),
- G2 =.. [F | As1],
- callable(G2),
- expand_goal(call(M:G2), M, call(G0)).
-
-
+ ( var(G) ->
+ instantiation_error(call/1)
+ ; G = '$call'(G0) ->
+ '$prepare_call_clause'(G1, M, G0),
+ '$call_with_inference_counting'('$call'(M:G1))
+ ; '$prepare_call_clause'(G1, M, G),
+ expand_goal(call(M:G1), M, call(G2)),
+ '$call_with_inference_counting'('$call'(G2))
+ ).
+
+:-non_counted_backtracking call/2.
call(A,B) :-
- ( var(A) ->
- instantiation_error(call/2)
- ; call_clause(A,[B],2,C) ->
- '$call'(C)
- ; type_error(callable,A,call/2)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/2)
+ ; A= '$call'(C) ->
+ '$prepare_call_clause'(D,E,C,B),
+ '$call_with_inference_counting'('$call'(E:D))
+ ; '$prepare_call_clause'(D,E,A,B),
+ expand_goal(call(E:D),E,call(F)),
+ '$call_with_inference_counting'('$call'(F))
+ ).
+
+:-non_counted_backtracking call/3.
call(A,B,C) :-
- ( var(A) ->
- instantiation_error(call/3)
- ; call_clause(A,[B,C],3,D) ->
- '$call'(D)
- ; type_error(callable,A,call/3)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/3)
+ ; A= '$call'(D) ->
+ '$prepare_call_clause'(E,F,D,B,C),
+ '$call_with_inference_counting'('$call'(F:E))
+ ; '$prepare_call_clause'(E,F,A,B,C),
+ expand_goal(call(F:E),F,call(G)),
+ '$call_with_inference_counting'('$call'(G))
+ ).
+
+:-non_counted_backtracking call/4.
call(A,B,C,D) :-
- ( var(A) ->
- instantiation_error(call/4)
- ; call_clause(A,[B,C,D],4,E) ->
- '$call'(E)
- ; type_error(callable,A,call/4)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/4)
+ ; A= '$call'(E) ->
+ '$prepare_call_clause'(F,G,E,B,C,D),
+ '$call_with_inference_counting'('$call'(G:F))
+ ; '$prepare_call_clause'(F,G,A,B,C,D),
+ expand_goal(call(G:F),G,call(H)),
+ '$call_with_inference_counting'('$call'(H))
+ ).
+
+:-non_counted_backtracking call/5.
call(A,B,C,D,E) :-
- ( var(A) ->
- instantiation_error(call/5)
- ; call_clause(A,[B,C,D,E],5,F) ->
- '$call'(F)
- ; type_error(callable,A,call/5)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/5)
+ ; A= '$call'(F) ->
+ '$prepare_call_clause'(G,H,F,B,C,D,E),
+ '$call_with_inference_counting'('$call'(H:G))
+ ; '$prepare_call_clause'(G,H,A,B,C,D,E),
+ expand_goal(call(H:G),H,call(I)),
+ '$call_with_inference_counting'('$call'(I))
+ ).
+
+:-non_counted_backtracking call/6.
call(A,B,C,D,E,F) :-
- ( var(A) ->
- instantiation_error(call/6)
- ; call_clause(A,[B,C,D,E,F],6,G) ->
- '$call'(G)
- ; type_error(callable,A,call/6)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/6)
+ ; A= '$call'(G) ->
+ '$prepare_call_clause'(H,I,G,B,C,D,E,F),
+ '$call_with_inference_counting'('$call'(I:H))
+ ; '$prepare_call_clause'(H,I,A,B,C,D,E,F),
+ expand_goal(call(I:H),I,call(J)),
+ '$call_with_inference_counting'('$call'(J))
+ ).
+
+:-non_counted_backtracking call/7.
call(A,B,C,D,E,F,G) :-
- ( var(A) ->
- instantiation_error(call/7)
- ; call_clause(A,[B,C,D,E,F,G],7,H) ->
- '$call'(H)
- ; type_error(callable,A,call/7)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/7)
+ ; A= '$call'(H) ->
+ '$prepare_call_clause'(I,J,H,B,C,D,E,F,G),
+ '$call_with_inference_counting'('$call'(J:I))
+ ; '$prepare_call_clause'(I,J,A,B,C,D,E,F,G),
+ expand_goal(call(J:I),J,call(K)),
+ '$call_with_inference_counting'('$call'(K))
+ ).
+
+:-non_counted_backtracking call/8.
call(A,B,C,D,E,F,G,H) :-
- ( var(A) ->
- instantiation_error(call/8)
- ; call_clause(A,[B,C,D,E,F,G,H],8,I) ->
- '$call'(I)
- ; type_error(callable,A,call/8)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/8)
+ ; A= '$call'(I) ->
+ '$prepare_call_clause'(J,K,I,B,C,D,E,F,G,H),
+ '$call_with_inference_counting'('$call'(K:J))
+ ; '$prepare_call_clause'(J,K,A,B,C,D,E,F,G,H),
+ expand_goal(call(K:J),K,call(L)),
+ '$call_with_inference_counting'('$call'(L))
+ ).
+
+:-non_counted_backtracking call/9.
call(A,B,C,D,E,F,G,H,I) :-
- ( var(A) ->
- instantiation_error(call/9)
- ; call_clause(A,[B,C,D,E,F,G,H,I],9,J) ->
- '$call'(J)
- ; type_error(callable,A,call/9)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/9)
+ ; A= '$call'(J) ->
+ '$prepare_call_clause'(K,L,J,B,C,D,E,F,G,H,I),
+ '$call_with_inference_counting'('$call'(L:K))
+ ; '$prepare_call_clause'(K,L,A,B,C,D,E,F,G,H,I),
+ expand_goal(call(L:K),L,call(M)),
+ '$call_with_inference_counting'('$call'(M))
+ ).
+
+:-non_counted_backtracking call/10.
call(A,B,C,D,E,F,G,H,I,J) :-
- ( var(A) ->
- instantiation_error(call/10)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J],10,K) ->
- '$call'(K)
- ; type_error(callable,A,call/10)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/10)
+ ; A= '$call'(K) ->
+ '$prepare_call_clause'(L,M,K,B,C,D,E,F,G,H,I,J),
+ '$call_with_inference_counting'('$call'(M:L))
+ ; '$prepare_call_clause'(L,M,A,B,C,D,E,F,G,H,I,J),
+ expand_goal(call(M:L),M,call(N)),
+ '$call_with_inference_counting'('$call'(N))
+ ).
+
+:-non_counted_backtracking call/11.
call(A,B,C,D,E,F,G,H,I,J,K) :-
- ( var(A) ->
- instantiation_error(call/11)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K],11,L) ->
- '$call'(L)
- ; type_error(callable,A,call/11)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/11)
+ ; A= '$call'(L) ->
+ '$prepare_call_clause'(M,N,L,B,C,D,E,F,G,H,I,J,K),
+ '$call_with_inference_counting'('$call'(N:M))
+ ; '$prepare_call_clause'(M,N,A,B,C,D,E,F,G,H,I,J,K),
+ expand_goal(call(N:M),N,call(O)),
+ '$call_with_inference_counting'('$call'(O))
+ ).
+
+:-non_counted_backtracking call/12.
call(A,B,C,D,E,F,G,H,I,J,K,L) :-
- ( var(A) ->
- instantiation_error(call/12)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L],12,M) ->
- '$call'(M)
- ; type_error(callable,A,call/12)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/12)
+ ; A= '$call'(M) ->
+ '$prepare_call_clause'(N,O,M,B,C,D,E,F,G,H,I,J,K,L),
+ '$call_with_inference_counting'('$call'(O:N))
+ ; '$prepare_call_clause'(N,O,A,B,C,D,E,F,G,H,I,J,K,L),
+ expand_goal(call(O:N),O,call(P)),
+ '$call_with_inference_counting'('$call'(P))
+ ).
+
+:-non_counted_backtracking call/13.
call(A,B,C,D,E,F,G,H,I,J,K,L,M) :-
- ( var(A) ->
- instantiation_error(call/13)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M],13,N) ->
- '$call'(N)
- ; type_error(callable,A,call/13)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/13)
+ ; A= '$call'(N) ->
+ '$prepare_call_clause'(O,P,N,B,C,D,E,F,G,H,I,J,K,L,M),
+ '$call_with_inference_counting'('$call'(P:O))
+ ; '$prepare_call_clause'(O,P,A,B,C,D,E,F,G,H,I,J,K,L,M),
+ expand_goal(call(P:O),P,call(Q)),
+ '$call_with_inference_counting'('$call'(Q))
+ ).
+
+:-non_counted_backtracking call/14.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N) :-
- ( var(A) ->
- instantiation_error(call/14)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N],14,O) ->
- '$call'(O)
- ; type_error(callable,A,call/14)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/14)
+ ; A= '$call'(O) ->
+ '$prepare_call_clause'(P,Q,O,B,C,D,E,F,G,H,I,J,K,L,M,N),
+ '$call_with_inference_counting'('$call'(Q:P))
+ ; '$prepare_call_clause'(P,Q,A,B,C,D,E,F,G,H,I,J,K,L,M,N),
+ expand_goal(call(Q:P),Q,call(R)),
+ '$call_with_inference_counting'('$call'(R))
+ ).
+
+:-non_counted_backtracking call/15.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) :-
- ( var(A) ->
- instantiation_error(call/15)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O],15,P) ->
- '$call'(P)
- ; type_error(callable,A,call/15)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/15)
+ ; A= '$call'(P) ->
+ '$prepare_call_clause'(Q,R,P,B,C,D,E,F,G,H,I,J,K,L,M,N,O),
+ '$call_with_inference_counting'('$call'(R:Q))
+ ; '$prepare_call_clause'(Q,R,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O),
+ expand_goal(call(R:Q),R,call(S)),
+ '$call_with_inference_counting'('$call'(S))
+ ).
+
+:-non_counted_backtracking call/16.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) :-
- ( var(A) ->
- instantiation_error(call/16)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P],16,Q) ->
- '$call'(Q)
- ; type_error(callable,A,call/16)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/16)
+ ; A= '$call'(Q) ->
+ '$prepare_call_clause'(R,S,Q,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P),
+ '$call_with_inference_counting'('$call'(S:R))
+ ; '$prepare_call_clause'(R,S,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P),
+ expand_goal(call(S:R),S,call(T)),
+ '$call_with_inference_counting'('$call'(T))
+ ).
+
+:-non_counted_backtracking call/17.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) :-
- ( var(A) ->
- instantiation_error(call/17)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q],17,R) ->
- '$call'(R)
- ; type_error(callable,A,call/17)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/17)
+ ; A= '$call'(R) ->
+ '$prepare_call_clause'(S,T,R,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q),
+ '$call_with_inference_counting'('$call'(T:S))
+ ; '$prepare_call_clause'(S,T,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q),
+ expand_goal(call(T:S),T,call(U)),
+ '$call_with_inference_counting'('$call'(U))
+ ).
+
+:-non_counted_backtracking call/18.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) :-
- ( var(A) ->
- instantiation_error(call/18)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R],18,S) ->
- '$call'(S)
- ; type_error(callable,A,call/18)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/18)
+ ; A= '$call'(S) ->
+ '$prepare_call_clause'(T,U,S,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R),
+ '$call_with_inference_counting'('$call'(U:T))
+ ; '$prepare_call_clause'(T,U,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R),
+ expand_goal(call(U:T),U,call(V)),
+ '$call_with_inference_counting'('$call'(V))
+ ).
+
+:-non_counted_backtracking call/19.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) :-
- ( var(A) ->
- instantiation_error(call/19)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S],19,T) ->
- '$call'(T)
- ; type_error(callable,A,call/19)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/19)
+ ; A= '$call'(T) ->
+ '$prepare_call_clause'(U,V,T,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S),
+ '$call_with_inference_counting'('$call'(V:U))
+ ; '$prepare_call_clause'(U,V,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S),
+ expand_goal(call(V:U),V,call(W)),
+ '$call_with_inference_counting'('$call'(W))
+ ).
+
+:-non_counted_backtracking call/20.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) :-
- ( var(A) ->
- instantiation_error(call/20)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T],20,U) ->
- '$call'(U)
- ; type_error(callable,A,call/20)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/20)
+ ; A= '$call'(U) ->
+ '$prepare_call_clause'(V,W,U,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T),
+ '$call_with_inference_counting'('$call'(W:V))
+ ; '$prepare_call_clause'(V,W,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T),
+ expand_goal(call(W:V),W,call(X)),
+ '$call_with_inference_counting'('$call'(X))
+ ).
+
+:-non_counted_backtracking call/21.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U) :-
- ( var(A) ->
- instantiation_error(call/21)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U],21,V) ->
- '$call'(V)
- ; type_error(callable,A,call/21)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/21)
+ ; A= '$call'(V) ->
+ '$prepare_call_clause'(W,X,V,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U),
+ '$call_with_inference_counting'('$call'(X:W))
+ ; '$prepare_call_clause'(W,X,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U),
+ expand_goal(call(X:W),X,call(Y)),
+ '$call_with_inference_counting'('$call'(Y))
+ ).
+
+:-non_counted_backtracking call/22.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V) :-
- ( var(A) ->
- instantiation_error(call/22)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V],22,W) ->
- '$call'(W)
- ; type_error(callable,A,call/22)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/22)
+ ; A= '$call'(W) ->
+ '$prepare_call_clause'(X,Y,W,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V),
+ '$call_with_inference_counting'('$call'(Y:X))
+ ; '$prepare_call_clause'(X,Y,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V),
+ expand_goal(call(Y:X),Y,call(Z)),
+ '$call_with_inference_counting'('$call'(Z))
+ ).
+
+:-non_counted_backtracking call/23.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W) :-
- ( var(A) ->
- instantiation_error(call/23)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W],23,X) ->
- '$call'(X)
- ; type_error(callable,A,call/23)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/23)
+ ; A= '$call'(X) ->
+ '$prepare_call_clause'(Y,Z,X,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W),
+ '$call_with_inference_counting'('$call'(Z:Y))
+ ; '$prepare_call_clause'(Y,Z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W),
+ expand_goal(call(Z:Y),Z,call(A1)),
+ '$call_with_inference_counting'('$call'(A1))
+ ).
+
+:-non_counted_backtracking call/24.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X) :-
- ( var(A) ->
- instantiation_error(call/24)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X],24,Y) ->
- '$call'(Y)
- ; type_error(callable,A,call/24)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/24)
+ ; A= '$call'(Y) ->
+ '$prepare_call_clause'(Z,A1,Y,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X),
+ '$call_with_inference_counting'('$call'(A1:Z))
+ ; '$prepare_call_clause'(Z,A1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X),
+ expand_goal(call(A1:Z),A1,call(B1)),
+ '$call_with_inference_counting'('$call'(B1))
+ ).
+
+:-non_counted_backtracking call/25.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y) :-
- ( var(A) ->
- instantiation_error(call/25)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y],25,Z) ->
- '$call'(Z)
- ; type_error(callable,A,call/25)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/25)
+ ; A= '$call'(Z) ->
+ '$prepare_call_clause'(A1,B1,Z,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y),
+ '$call_with_inference_counting'('$call'(B1:A1))
+ ; '$prepare_call_clause'(A1,B1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y),
+ expand_goal(call(B1:A1),B1,call(C1)),
+ '$call_with_inference_counting'('$call'(C1))
+ ).
+
+:-non_counted_backtracking call/26.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) :-
- ( var(A) ->
- instantiation_error(call/26)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z],26,A1) ->
- '$call'(A1)
- ; type_error(callable,A,call/26)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/26)
+ ; A= '$call'(A1) ->
+ '$prepare_call_clause'(B1,C1,A1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z),
+ '$call_with_inference_counting'('$call'(C1:B1))
+ ; '$prepare_call_clause'(B1,C1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z),
+ expand_goal(call(C1:B1),C1,call(D1)),
+ '$call_with_inference_counting'('$call'(D1))
+ ).
+
+:-non_counted_backtracking call/27.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1) :-
- ( var(A) ->
- instantiation_error(call/27)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1],27,B1) ->
- '$call'(B1)
- ; type_error(callable,A,call/27)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/27)
+ ; A= '$call'(B1) ->
+ '$prepare_call_clause'(C1,D1,B1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1),
+ '$call_with_inference_counting'('$call'(D1:C1))
+ ; '$prepare_call_clause'(C1,D1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1),
+ expand_goal(call(D1:C1),D1,call(E1)),
+ '$call_with_inference_counting'('$call'(E1))
+ ).
+
+:-non_counted_backtracking call/28.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1) :-
- ( var(A) ->
- instantiation_error(call/28)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1],28,C1) ->
- '$call'(C1)
- ; type_error(callable,A,call/28)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/28)
+ ; A= '$call'(C1) ->
+ '$prepare_call_clause'(D1,E1,C1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1),
+ '$call_with_inference_counting'('$call'(E1:D1))
+ ; '$prepare_call_clause'(D1,E1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1),
+ expand_goal(call(E1:D1),E1,call(F1)),
+ '$call_with_inference_counting'('$call'(F1))
+ ).
+
+:-non_counted_backtracking call/29.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1) :-
- ( var(A) ->
- instantiation_error(call/29)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1],29,D1) ->
- '$call'(D1)
- ; type_error(callable,A,call/29)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/29)
+ ; A= '$call'(D1) ->
+ '$prepare_call_clause'(E1,F1,D1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1),
+ '$call_with_inference_counting'('$call'(F1:E1))
+ ; '$prepare_call_clause'(E1,F1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1),
+ expand_goal(call(F1:E1),F1,call(G1)),
+ '$call_with_inference_counting'('$call'(G1))
+ ).
+
+:-non_counted_backtracking call/30.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1) :-
- ( var(A) ->
- instantiation_error(call/30)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1],30,E1) ->
- '$call'(E1)
- ; type_error(callable,A,call/30)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/30)
+ ; A= '$call'(E1) ->
+ '$prepare_call_clause'(F1,G1,E1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1),
+ '$call_with_inference_counting'('$call'(G1:F1))
+ ; '$prepare_call_clause'(F1,G1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1),
+ expand_goal(call(G1:F1),G1,call(H1)),
+ '$call_with_inference_counting'('$call'(H1))
+ ).
+
+:-non_counted_backtracking call/31.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1) :-
- ( var(A) ->
- instantiation_error(call/31)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1],31,F1) ->
- '$call'(F1)
- ; type_error(callable,A,call/31)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/31)
+ ; A= '$call'(F1) ->
+ '$prepare_call_clause'(G1,H1,F1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1),
+ '$call_with_inference_counting'('$call'(H1:G1))
+ ; '$prepare_call_clause'(G1,H1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1),
+ expand_goal(call(H1:G1),H1,call(I1)),
+ '$call_with_inference_counting'('$call'(I1))
+ ).
+
+:-non_counted_backtracking call/32.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1) :-
- ( var(A) ->
- instantiation_error(call/32)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1],32,G1) ->
- '$call'(G1)
- ; type_error(callable,A,call/32)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/32)
+ ; A= '$call'(G1) ->
+ '$prepare_call_clause'(H1,I1,G1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1),
+ '$call_with_inference_counting'('$call'(I1:H1))
+ ; '$prepare_call_clause'(H1,I1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1),
+ expand_goal(call(I1:H1),I1,call(J1)),
+ '$call_with_inference_counting'('$call'(J1))
+ ).
+
+:-non_counted_backtracking call/33.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1) :-
- ( var(A) ->
- instantiation_error(call/33)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1],33,H1) ->
- '$call'(H1)
- ; type_error(callable,A,call/33)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/33)
+ ; A= '$call'(H1) ->
+ '$prepare_call_clause'(I1,J1,H1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1),
+ '$call_with_inference_counting'('$call'(J1:I1))
+ ; '$prepare_call_clause'(I1,J1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1),
+ expand_goal(call(J1:I1),J1,call(K1)),
+ '$call_with_inference_counting'('$call'(K1))
+ ).
+
+:-non_counted_backtracking call/34.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1) :-
- ( var(A) ->
- instantiation_error(call/34)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1],34,I1) ->
- '$call'(I1)
- ; type_error(callable,A,call/34)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/34)
+ ; A= '$call'(I1) ->
+ '$prepare_call_clause'(J1,K1,I1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1),
+ '$call_with_inference_counting'('$call'(K1:J1))
+ ; '$prepare_call_clause'(J1,K1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1),
+ expand_goal(call(K1:J1),K1,call(L1)),
+ '$call_with_inference_counting'('$call'(L1))
+ ).
+
+:-non_counted_backtracking call/35.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1) :-
- ( var(A) ->
- instantiation_error(call/35)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1],35,J1) ->
- '$call'(J1)
- ; type_error(callable,A,call/35)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/35)
+ ; A= '$call'(J1) ->
+ '$prepare_call_clause'(K1,L1,J1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1),
+ '$call_with_inference_counting'('$call'(L1:K1))
+ ; '$prepare_call_clause'(K1,L1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1),
+ expand_goal(call(L1:K1),L1,call(M1)),
+ '$call_with_inference_counting'('$call'(M1))
+ ).
+
+:-non_counted_backtracking call/36.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1) :-
- ( var(A) ->
- instantiation_error(call/36)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1],36,K1) ->
- '$call'(K1)
- ; type_error(callable,A,call/36)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/36)
+ ; A= '$call'(K1) ->
+ '$prepare_call_clause'(L1,M1,K1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1),
+ '$call_with_inference_counting'('$call'(M1:L1))
+ ; '$prepare_call_clause'(L1,M1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1),
+ expand_goal(call(M1:L1),M1,call(N1)),
+ '$call_with_inference_counting'('$call'(N1))
+ ).
+
+:-non_counted_backtracking call/37.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1) :-
- ( var(A) ->
- instantiation_error(call/37)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1],37,L1) ->
- '$call'(L1)
- ; type_error(callable,A,call/37)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/37)
+ ; A= '$call'(L1) ->
+ '$prepare_call_clause'(M1,N1,L1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1),
+ '$call_with_inference_counting'('$call'(N1:M1))
+ ; '$prepare_call_clause'(M1,N1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1),
+ expand_goal(call(N1:M1),N1,call(O1)),
+ '$call_with_inference_counting'('$call'(O1))
+ ).
+
+:-non_counted_backtracking call/38.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1) :-
- ( var(A) ->
- instantiation_error(call/38)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1],38,M1) ->
- '$call'(M1)
- ; type_error(callable,A,call/38)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/38)
+ ; A= '$call'(M1) ->
+ '$prepare_call_clause'(N1,O1,M1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1),
+ '$call_with_inference_counting'('$call'(O1:N1))
+ ; '$prepare_call_clause'(N1,O1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1),
+ expand_goal(call(O1:N1),O1,call(P1)),
+ '$call_with_inference_counting'('$call'(P1))
+ ).
+
+:-non_counted_backtracking call/39.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1) :-
- ( var(A) ->
- instantiation_error(call/39)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1],39,N1) ->
- '$call'(N1)
- ; type_error(callable,A,call/39)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/39)
+ ; A= '$call'(N1) ->
+ '$prepare_call_clause'(O1,P1,N1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1),
+ '$call_with_inference_counting'('$call'(P1:O1))
+ ; '$prepare_call_clause'(O1,P1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1),
+ expand_goal(call(P1:O1),P1,call(Q1)),
+ '$call_with_inference_counting'('$call'(Q1))
+ ).
+
+:-non_counted_backtracking call/40.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1) :-
- ( var(A) ->
- instantiation_error(call/40)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1],40,O1) ->
- '$call'(O1)
- ; type_error(callable,A,call/40)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/40)
+ ; A= '$call'(O1) ->
+ '$prepare_call_clause'(P1,Q1,O1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1),
+ '$call_with_inference_counting'('$call'(Q1:P1))
+ ; '$prepare_call_clause'(P1,Q1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1),
+ expand_goal(call(Q1:P1),Q1,call(R1)),
+ '$call_with_inference_counting'('$call'(R1))
+ ).
+
+:-non_counted_backtracking call/41.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1) :-
- ( var(A) ->
- instantiation_error(call/41)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1],41,P1) ->
- '$call'(P1)
- ; type_error(callable,A,call/41)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/41)
+ ; A= '$call'(P1) ->
+ '$prepare_call_clause'(Q1,R1,P1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1),
+ '$call_with_inference_counting'('$call'(R1:Q1))
+ ; '$prepare_call_clause'(Q1,R1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1),
+ expand_goal(call(R1:Q1),R1,call(S1)),
+ '$call_with_inference_counting'('$call'(S1))
+ ).
+
+:-non_counted_backtracking call/42.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1) :-
- ( var(A) ->
- instantiation_error(call/42)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1],42,Q1) ->
- '$call'(Q1)
- ; type_error(callable,A,call/42)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/42)
+ ; A= '$call'(Q1) ->
+ '$prepare_call_clause'(R1,S1,Q1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1),
+ '$call_with_inference_counting'('$call'(S1:R1))
+ ; '$prepare_call_clause'(R1,S1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1),
+ expand_goal(call(S1:R1),S1,call(T1)),
+ '$call_with_inference_counting'('$call'(T1))
+ ).
+
+:-non_counted_backtracking call/43.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1) :-
- ( var(A) ->
- instantiation_error(call/43)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1],43,R1) ->
- '$call'(R1)
- ; type_error(callable,A,call/43)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/43)
+ ; A= '$call'(R1) ->
+ '$prepare_call_clause'(S1,T1,R1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1),
+ '$call_with_inference_counting'('$call'(T1:S1))
+ ; '$prepare_call_clause'(S1,T1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1),
+ expand_goal(call(T1:S1),T1,call(U1)),
+ '$call_with_inference_counting'('$call'(U1))
+ ).
+
+:-non_counted_backtracking call/44.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1) :-
- ( var(A) ->
- instantiation_error(call/44)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1],44,S1) ->
- '$call'(S1)
- ; type_error(callable,A,call/44)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/44)
+ ; A= '$call'(S1) ->
+ '$prepare_call_clause'(T1,U1,S1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1),
+ '$call_with_inference_counting'('$call'(U1:T1))
+ ; '$prepare_call_clause'(T1,U1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1),
+ expand_goal(call(U1:T1),U1,call(V1)),
+ '$call_with_inference_counting'('$call'(V1))
+ ).
+
+:-non_counted_backtracking call/45.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1) :-
- ( var(A) ->
- instantiation_error(call/45)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1],45,T1) ->
- '$call'(T1)
- ; type_error(callable,A,call/45)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/45)
+ ; A= '$call'(T1) ->
+ '$prepare_call_clause'(U1,V1,T1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1),
+ '$call_with_inference_counting'('$call'(V1:U1))
+ ; '$prepare_call_clause'(U1,V1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1),
+ expand_goal(call(V1:U1),V1,call(W1)),
+ '$call_with_inference_counting'('$call'(W1))
+ ).
+
+:-non_counted_backtracking call/46.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1) :-
- ( var(A) ->
- instantiation_error(call/46)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1],46,U1) ->
- '$call'(U1)
- ; type_error(callable,A,call/46)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/46)
+ ; A= '$call'(U1) ->
+ '$prepare_call_clause'(V1,W1,U1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1),
+ '$call_with_inference_counting'('$call'(W1:V1))
+ ; '$prepare_call_clause'(V1,W1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1),
+ expand_goal(call(W1:V1),W1,call(X1)),
+ '$call_with_inference_counting'('$call'(X1))
+ ).
+
+:-non_counted_backtracking call/47.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1) :-
- ( var(A) ->
- instantiation_error(call/47)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1],47,V1) ->
- '$call'(V1)
- ; type_error(callable,A,call/47)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/47)
+ ; A= '$call'(V1) ->
+ '$prepare_call_clause'(W1,X1,V1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1),
+ '$call_with_inference_counting'('$call'(X1:W1))
+ ; '$prepare_call_clause'(W1,X1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1),
+ expand_goal(call(X1:W1),X1,call(Y1)),
+ '$call_with_inference_counting'('$call'(Y1))
+ ).
+
+:-non_counted_backtracking call/48.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1) :-
- ( var(A) ->
- instantiation_error(call/48)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1],48,W1) ->
- '$call'(W1)
- ; type_error(callable,A,call/48)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/48)
+ ; A= '$call'(W1) ->
+ '$prepare_call_clause'(X1,Y1,W1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1),
+ '$call_with_inference_counting'('$call'(Y1:X1))
+ ; '$prepare_call_clause'(X1,Y1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1),
+ expand_goal(call(Y1:X1),Y1,call(Z1)),
+ '$call_with_inference_counting'('$call'(Z1))
+ ).
+
+:-non_counted_backtracking call/49.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1) :-
- ( var(A) ->
- instantiation_error(call/49)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1],49,X1) ->
- '$call'(X1)
- ; type_error(callable,A,call/49)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/49)
+ ; A= '$call'(X1) ->
+ '$prepare_call_clause'(Y1,Z1,X1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1),
+ '$call_with_inference_counting'('$call'(Z1:Y1))
+ ; '$prepare_call_clause'(Y1,Z1,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1),
+ expand_goal(call(Z1:Y1),Z1,call(A2)),
+ '$call_with_inference_counting'('$call'(A2))
+ ).
+
+:-non_counted_backtracking call/50.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1) :-
- ( var(A) ->
- instantiation_error(call/50)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1],50,Y1) ->
- '$call'(Y1)
- ; type_error(callable,A,call/50)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/50)
+ ; A= '$call'(Y1) ->
+ '$prepare_call_clause'(Z1,A2,Y1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1),
+ '$call_with_inference_counting'('$call'(A2:Z1))
+ ; '$prepare_call_clause'(Z1,A2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1),
+ expand_goal(call(A2:Z1),A2,call(B2)),
+ '$call_with_inference_counting'('$call'(B2))
+ ).
+
+:-non_counted_backtracking call/51.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1) :-
- ( var(A) ->
- instantiation_error(call/51)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1],51,Z1) ->
- '$call'(Z1)
- ; type_error(callable,A,call/51)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/51)
+ ; A= '$call'(Z1) ->
+ '$prepare_call_clause'(A2,B2,Z1,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1),
+ '$call_with_inference_counting'('$call'(B2:A2))
+ ; '$prepare_call_clause'(A2,B2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1),
+ expand_goal(call(B2:A2),B2,call(C2)),
+ '$call_with_inference_counting'('$call'(C2))
+ ).
+
+:-non_counted_backtracking call/52.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1) :-
- ( var(A) ->
- instantiation_error(call/52)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1],52,A2) ->
- '$call'(A2)
- ; type_error(callable,A,call/52)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/52)
+ ; A= '$call'(A2) ->
+ '$prepare_call_clause'(B2,C2,A2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1),
+ '$call_with_inference_counting'('$call'(C2:B2))
+ ; '$prepare_call_clause'(B2,C2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1),
+ expand_goal(call(C2:B2),C2,call(D2)),
+ '$call_with_inference_counting'('$call'(D2))
+ ).
+
+:-non_counted_backtracking call/53.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2) :-
- ( var(A) ->
- instantiation_error(call/53)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2],53,B2) ->
- '$call'(B2)
- ; type_error(callable,A,call/53)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/53)
+ ; A= '$call'(B2) ->
+ '$prepare_call_clause'(C2,D2,B2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2),
+ '$call_with_inference_counting'('$call'(D2:C2))
+ ; '$prepare_call_clause'(C2,D2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2),
+ expand_goal(call(D2:C2),D2,call(E2)),
+ '$call_with_inference_counting'('$call'(E2))
+ ).
+
+:-non_counted_backtracking call/54.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2) :-
- ( var(A) ->
- instantiation_error(call/54)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2],54,C2) ->
- '$call'(C2)
- ; type_error(callable,A,call/54)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/54)
+ ; A= '$call'(C2) ->
+ '$prepare_call_clause'(D2,E2,C2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2),
+ '$call_with_inference_counting'('$call'(E2:D2))
+ ; '$prepare_call_clause'(D2,E2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2),
+ expand_goal(call(E2:D2),E2,call(F2)),
+ '$call_with_inference_counting'('$call'(F2))
+ ).
+
+:-non_counted_backtracking call/55.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2) :-
- ( var(A) ->
- instantiation_error(call/55)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2],55,D2) ->
- '$call'(D2)
- ; type_error(callable,A,call/55)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/55)
+ ; A= '$call'(D2) ->
+ '$prepare_call_clause'(E2,F2,D2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2),
+ '$call_with_inference_counting'('$call'(F2:E2))
+ ; '$prepare_call_clause'(E2,F2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2),
+ expand_goal(call(F2:E2),F2,call(G2)),
+ '$call_with_inference_counting'('$call'(G2))
+ ).
+
+:-non_counted_backtracking call/56.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2) :-
- ( var(A) ->
- instantiation_error(call/56)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2],56,E2) ->
- '$call'(E2)
- ; type_error(callable,A,call/56)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/56)
+ ; A= '$call'(E2) ->
+ '$prepare_call_clause'(F2,G2,E2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2),
+ '$call_with_inference_counting'('$call'(G2:F2))
+ ; '$prepare_call_clause'(F2,G2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2),
+ expand_goal(call(G2:F2),G2,call(H2)),
+ '$call_with_inference_counting'('$call'(H2))
+ ).
+
+:-non_counted_backtracking call/57.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2) :-
- ( var(A) ->
- instantiation_error(call/57)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2],57,F2) ->
- '$call'(F2)
- ; type_error(callable,A,call/57)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/57)
+ ; A= '$call'(F2) ->
+ '$prepare_call_clause'(G2,H2,F2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2),
+ '$call_with_inference_counting'('$call'(H2:G2))
+ ; '$prepare_call_clause'(G2,H2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2),
+ expand_goal(call(H2:G2),H2,call(I2)),
+ '$call_with_inference_counting'('$call'(I2))
+ ).
+
+:-non_counted_backtracking call/58.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2) :-
- ( var(A) ->
- instantiation_error(call/58)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2],58,G2) ->
- '$call'(G2)
- ; type_error(callable,A,call/58)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/58)
+ ; A= '$call'(G2) ->
+ '$prepare_call_clause'(H2,I2,G2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2),
+ '$call_with_inference_counting'('$call'(I2:H2))
+ ; '$prepare_call_clause'(H2,I2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2),
+ expand_goal(call(I2:H2),I2,call(J2)),
+ '$call_with_inference_counting'('$call'(J2))
+ ).
+
+:-non_counted_backtracking call/59.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2) :-
- ( var(A) ->
- instantiation_error(call/59)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2],59,H2) ->
- '$call'(H2)
- ; type_error(callable,A,call/59)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/59)
+ ; A= '$call'(H2) ->
+ '$prepare_call_clause'(I2,J2,H2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2),
+ '$call_with_inference_counting'('$call'(J2:I2))
+ ; '$prepare_call_clause'(I2,J2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2),
+ expand_goal(call(J2:I2),J2,call(K2)),
+ '$call_with_inference_counting'('$call'(K2))
+ ).
+
+:-non_counted_backtracking call/60.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2) :-
- ( var(A) ->
- instantiation_error(call/60)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2],60,I2) ->
- '$call'(I2)
- ; type_error(callable,A,call/60)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/60)
+ ; A= '$call'(I2) ->
+ '$prepare_call_clause'(J2,K2,I2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2),
+ '$call_with_inference_counting'('$call'(K2:J2))
+ ; '$prepare_call_clause'(J2,K2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2),
+ expand_goal(call(K2:J2),K2,call(L2)),
+ '$call_with_inference_counting'('$call'(L2))
+ ).
+
+:-non_counted_backtracking call/61.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2) :-
- ( var(A) ->
- instantiation_error(call/61)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2],61,J2) ->
- '$call'(J2)
- ; type_error(callable,A,call/61)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/61)
+ ; A= '$call'(J2) ->
+ '$prepare_call_clause'(K2,L2,J2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2),
+ '$call_with_inference_counting'('$call'(L2:K2))
+ ; '$prepare_call_clause'(K2,L2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2),
+ expand_goal(call(L2:K2),L2,call(M2)),
+ '$call_with_inference_counting'('$call'(M2))
+ ).
+
+:-non_counted_backtracking call/62.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2) :-
- ( var(A) ->
- instantiation_error(call/62)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2],62,K2) ->
- '$call'(K2)
- ; type_error(callable,A,call/62)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/62)
+ ; A= '$call'(K2) ->
+ '$prepare_call_clause'(L2,M2,K2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2),
+ '$call_with_inference_counting'('$call'(M2:L2))
+ ; '$prepare_call_clause'(L2,M2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2),
+ expand_goal(call(M2:L2),M2,call(N2)),
+ '$call_with_inference_counting'('$call'(N2))
+ ).
+
+:-non_counted_backtracking call/63.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2) :-
- ( var(A) ->
- instantiation_error(call/63)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2],63,L2) ->
- '$call'(L2)
- ; type_error(callable,A,call/63)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/63)
+ ; A= '$call'(L2) ->
+ '$prepare_call_clause'(M2,N2,L2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2),
+ '$call_with_inference_counting'('$call'(N2:M2))
+ ; '$prepare_call_clause'(M2,N2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2),
+ expand_goal(call(N2:M2),N2,call(O2)),
+ '$call_with_inference_counting'('$call'(O2))
+ ).
+
+:-non_counted_backtracking call/64.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2) :-
- ( var(A) ->
- instantiation_error(call/64)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2],64,M2) ->
- '$call'(M2)
- ; type_error(callable,A,call/64)
- ).
-
+ ( var(A) ->
+ instantiation_error(call/64)
+ ; A= '$call'(M2) ->
+ '$prepare_call_clause'(N2,O2,M2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2),
+ '$call_with_inference_counting'('$call'(O2:N2))
+ ; '$prepare_call_clause'(N2,O2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2),
+ expand_goal(call(O2:N2),O2,call(P2)),
+ '$call_with_inference_counting'('$call'(P2))
+ ).
+
+:-non_counted_backtracking call/65.
call(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2,M2) :-
- ( var(A) ->
- instantiation_error(call/65)
- ; call_clause(A,[B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2,M2],65,N2) ->
- '$call'(N2)
- ; type_error(callable,A,call/65)
- ).
+ ( var(A) ->
+ instantiation_error(call/65)
+ ; A= '$call'(N2) ->
+ '$prepare_call_clause'(O2,P2,N2,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2,M2),
+ '$call_with_inference_counting'('$call'(P2:O2))
+ ; '$prepare_call_clause'(O2,P2,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1,M1,N1,O1,P1,Q1,R1,S1,T1,U1,V1,W1,X1,Y1,Z1,A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2,M2),
+ expand_goal(call(P2:O2),P2,call(Q2)),
+ '$call_with_inference_counting'('$call'(Q2))
+ ).