annotate tc.pl @ 4:f864bb4ba9a4 default tip

update tags
author convert-repo
date Fri, 07 Nov 2008 20:36:52 +0000
parents cfb7c6b24319
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
1 /*
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
2 Copyright (C) 1988,2005, Shinji Kono
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
3 Everyone is permitted to copy and distribute verbatim copies
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
4 of this license, but changing it is not allowed. You can also
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
5 use this wording to make the terms for other programs.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
6
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
7 send your comments to kono@ie.u-ryukyu.ac.jp
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
8 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
9
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
10 /*
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
11
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
12 Tokio compiler to prolog
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 Thu Aug 15 12:17:04 JST 1985
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14 Fri Jan 10 16:11:31 JST 1986
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15 Fri Sep 5 09:51:36 JST 1986 for 1.2a
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16 Thu Mar 26 16:19:10 JST 1987
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 Wed Oct 14 13:35:54 JST 1987 full time F
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18 Fri Oct 16 11:28:26 JST 1987 Sicstus
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 $Header$
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20 body-compiler
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23 c_clause((Head :- Body), (H :- B)) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 c_opt(Body, NBody, _), % delete true
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25 c_body(NBody, Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26 ['$t'(B1,_,_,_)|Q] , ['$t'(true,_,_,_)|T1], before_cut-_),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 % make queue structure
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 c_head(Head, H0, B2, B1,Control,Q), % inline unification
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 c_opt(B2, B, _), % off tailing true
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30 c_make_pred(H0, H, Q, T1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 c_clause(Head, H) :- % fact
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32 c_head(Head, H0, B2, true,_,_),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 c_make_pred(H0, H1, Q, Q),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 c_opt(B2, B, _), % off tailing true
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 (B = true, H = H1,! ; H = (H1 :- B)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 c_error(A) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 telling(Old),tell(user),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39 call(A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 tell(Old).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 /*
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44 c_head(Head, ModfiedHead, Qhead, Qtail)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48 c_head(H,Mh,Qh0,Qt,Control,Q) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49 c_control_reference(Control,Qh0,Qh,Q),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 functor(H,F,A),functor(Mh,F,A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51 c_args(0,A, H, Mh, Qh, Qt).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53 c_args(N, N, _, _, Q, Q) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54 c_args(K, N, Head, H, Q, Q1) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 K1 is K+1, arg(K1, Head, AK), arg(K1, H, HK),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
56 c_unify(AK, HK, Q, Q2, 8),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
57 c_args(K1, N, Head, H, Q2, Q1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
58
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
59 % We needs NOW value however sometines is is hiden in Next time Queue
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
60 c_control_reference(Control,(Q=['$t'(_N,_F,_K,'$'(_,NowTime,_))|_],Qh),Qh,Q) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
61 Control = '$'(_Fin,Now,_Empty),nonvar(Now),var(Q),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
62 Now = '$REF'(NowTime),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
63 c_control_reference(_Control,Qh,Qh,_Q).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
64
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
65 /*
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
66
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
67 Tokio compiler Queue structure
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
68
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
69 [Qnow,Qnext1,Qnext2,......|_],[QnowTail,Qnext1Tail,Qnext2Tail,.....|_]
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
70 D-list
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
71 Qnow = '$t'(Next,Fin,Keep,'$'(Fin,Now,Empty))
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
72
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
73 predicate(A):- p,q.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
74 ---> predicate(A,Q,Q1) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
75 p(Q,Q2),q(Q2,Q1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
76 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
77
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
78 c_body(E=E1, Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
79 ['$t'(N1,F,K,C)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
80 ['$t'(N,F,K,C)|Q], before_cut-before_cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
81 c_eval(E, EE, N1, N2, Control), c_eval(E1, EE1, N2, N, Control),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
82 c_equate(EE,EE1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
83 c_body(E=E1, Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
84 ['$t'(N1,F,K,C)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
85 ['$t'(N,F,K,C)|Q], after_cut-after_cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
86 c_eval(E, EE, N1, N2, Control), c_eval(E1, EE1, N2, (EE = EE1,N), Control).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
87 c_body(E is E1, Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
88 ['$t'(N1,F,K,C)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
89 ['$t'(N,F,K,C)|Q], Cut-Cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
90 c_eval(E, EE, N1, N2, Control), c_eval(E1, EE1, N2, (EE is EE1,N), Control).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
91 c_body('$chop'(Former,Later), Control, % later must be atomic
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
92 ['$t'(('r_subBegin'(Q,QF,QF1,_Sfin),FF),F,K,Control)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
93 ['$t'(FF1,F,K,Control)|Q1],Cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
94 Control = '$'(_CFin,CNow,_CEmpty), NC = '$'(_,CNow,_), % subtle code
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
95 c_body(Former,NC,['$t'(FF,_,_,NC)|QF1],['$t'((L1,FF1),_,_,NC)|QF2],Cut),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
96 c_chop_later(Later, L1, Q, Q1, QF, QF2).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
97 c_body((A,B), Control, Q, Q1, Cut-Cut1) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
98 c_body(A, Control, Q, Q2, Cut-Cut2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
99 c_body(B, Control, Q2, Q1, Cut2-Cut1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
100 %c_body(empty, '$'(Fin,Now,empty),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
101 % [Now,'$t'(N,F,K,'$'(Fin,Now,empty))|Q1],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
102 % [Now,'$t'(N,F,K,'$'(Fin,Now,empty))|Q1], Cut) :- !, % strong next
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
103 c_body(empty, Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
104 ['$t'(('r_empty'(Q),N),F,K,Control)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
105 ['$t'(N,F,K,Control)|Q],Cut-Cut) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
106 c_body(notEmpty, Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
107 ['$t'(('r_notEmpty'(Q),N),F,K,Control)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
108 ['$t'(N,F,K,Control)|Q],Cut-Cut) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
109 c_body(length(L), Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
110 ['$t'(N2,F,K,Control)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
111 ['$t'(N,F,K,Control)|Q],Cut-Cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
112 c_eval(L, LL, N2, ('r_length'(LL,Q),N), Control).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
113 %% c_body(@true, C, Q, Q, Cut-Cut) :-!. % special optimize
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
114 c_body(next(true), _C, Q, Q, Cut-Cut) :-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
115 c_body(@A, '$'(Fin,NowTime,notEmpty),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
116 [Now|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
117 [Now,'$t'(N,F,K,'$'(Fin,NowTime,notEmpty))|Q1], Cut) :- !, % strong next
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
118 c_seperate_next(A, NextA),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
119 c_body(NextA, _Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
120 Q,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
121 ['$t'(N,F,K,'$'(Fin,NowTime,notEmpty))|Q1], Cut).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
122 c_body(next(A), _Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
123 [Now|Q], [Now|Q1], Cut) :- !, % weak next
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
124 c_seperate_next(A, NextA),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
125 c_body(NextA, _Control1, Q, Q1, Cut).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
126 c_body(ifEmpty(A), Control, % fin don't care queue
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
127 [Now,'$t'(N,F,K,Control)|Q],[Now,'$t'(N,F1,K,Control)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
128 Cut-Cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
129 c_body(A, Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
130 ['$t'(F,F2,_,Control)|_],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
131 ['$t'(F2,F1,_,Control)|_] , after_cut-_).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
132 c_body(ifNotEmpty(A), Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
133 [Now,'$t'(N,F,K,Control)|Q],[Now,'$t'(N1,F,K1,Control1)|Q1],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
134 Cut-Cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
135 c_body(A, Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
136 ['$t'(K ,_,_,Control),'$t'(N, _,K2,Control) |Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
137 ['$t'(K2,_,_,Control),'$t'(N1,_,K1,Control1)|Q1] , after_cut-_).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
138 c_body(A, Control, ['$t'(System,F,K,Control)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
139 ['$t'(System1,F,K,Control)|Q], Cut) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
140 c_system(A, System, System1, Control, Cut), !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
141 c_body(A, Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
142 ['$t'((A1,Now),F,K,Control)|Q],
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
143 ['$t'(Now,F,K,Control)|Q1], Cut-Cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
144 c_make_pred(A,A1,Q,Q1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
145
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
146 c_make_pred(X, XX, Q, T) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
147 functor(X, F, A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
148 A1 is A+1, A2 is A+2,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
149 functor(XX, F, A2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
150 c_copy_args(A, X, XX),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
151 arg(A1, XX, Q), arg(A2, XX, T).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
152
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
153 c_copy_args(0, _, _) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
154 c_copy_args(K, X, XX) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
155 arg(K, X, XK), arg(K, XX, XK), K1 is K-1, c_copy_args(K1, X, XX).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
156
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
157 c_system(true,Q, Q, _, Cut-Cut) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
158 c_system('r_read_value'(A,B),('r_read_value'(A1,B),Q), Q, _, Cut-Cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
159 c_seperate_now(A,A1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
160 c_system(!, (!,Q), Q, _, _Cut-after_cut) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
161 c_system(prolog(A), (call(A1),Q), Q, _, Cut-Cut) :- !, c_seperate_now(A,A1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
162 %% c_system(A<--B, Q, Q1, Control, Cut-Cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
163 %% c_eval(B, V, Q, Q2, Control),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
164 %% (A = '$CNT'(V),!,Q1=Q2 ; Q2 = (unifyAll(A,V),Q1)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
165 c_system(*A:=B, Q, Q1, Control, Cut-Cut) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
166 '$'(_Fin,'$REF'(NowTime),_Empty)=Control,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
167 c_eval(A, Name, Q, Q2, Control),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
168 c_eval(B, Value, Q2, ('r_set_value'(Name,Value,NowTime),Q1), Control).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
169 c_system(Op, Q, Q1, Control, Cut-Cut) :- n_predicate(Op,A,B,Op2,AA,BB),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
170 c_eval(A, AA, Q, Q2, Control), c_eval(B, BB, Q2, (Op2,Q1), Control).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
171 c_system(System,(System1,Q), Q, _, Cut-Cut) :- systemp(System),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
172 c_seperate_now(System,System1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
173
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
174 % compile chop operator
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
175 %
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
176 % c_chop_later(Later, GenerateLater, Q, Q1, QF, QF1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
177
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
178 c_chop_later(Later, GenerateLater, Q, Q1, QF, QF1) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
179
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
180 % 0r(X, '$'(Q,Q1,QF,QF1))
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
181
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
182 functor(Later, LH1, A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
183 A1 is A+1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
184 functor(GenerateLater, LH1, A1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
185 arg(A1, GenerateLater, '$'(Q,Q1,QF,QF1)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
186 c_skel_copy_arg(0, 0, A, Later, GenerateLater),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
187
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
188 % 0r(X, '$'(Q, Q1, QF, QF1)) :- 'r_subFin'(QF, QF1),r(X, Q, Q1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
189
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
190 functor(Later0, LH1, A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
191 c_make_pred(Later0, Later1, QQ, QQ1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
192 functor(L2, LH1, A1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
193 arg(A1, L2, '$'(QQ,QQ1,QQF,QQF1)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
194 c_skel_copy_arg(0, 0, A, Later0, L2),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
195 write_clause( (L2 :- 'r_subFin'(QQF,QQF1), Later1)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
196
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
197 % 0r(X, '$'(Q, Q1, QF, QF1)) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
198 % 'r_subNotFin'(
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
199 % 0r(Xn,'$'(NQ,NQ1,NQF,NQF1)), '$'(NQ,NQ1,NQF,NQF1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
200 % '$'(Q, Q1, QF, QF1)).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
201
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
202 functor(Later00, LH1, A),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
203 functor(L3, LH1, A1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
204 arg(A1, L3, '$'(QQ,QQ1,QQF,QQF1)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
205 functor(L4, LH1, A1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
206 arg(A1, L4, '$'(NQQ,NQQ1,NQQF,NQQF1)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
207 c_seperate_next(Later00,Later00Next),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
208 c_skel_copy_arg(0, 0, A, Later00Next, L4),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
209 c_args(0,A,Later00, L3, Body,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
210 'r_subNotFin'( L4, '$'(NQQ,NQQ1,NQQF,NQQF1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
211 QQ, QQ1, QQF, QQF1)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
212 write_clause(( L3 :- Body )).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
213
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
214 %%