annotate tu.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 temporal unifier
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
13 Tue Oct 15 11:36:12 JST 1985
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
14 */
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
15
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
16 unifyAll(V,V) :- !. % variable case
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
17 unifyAll('$t'(Now,Nxt),'$t'(Now,Nxt1)) :-!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
18 unifyAll(Nxt,Nxt1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
19 unifyAll('$t'(Now,Nxt),D):-!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
20 unifyNowNext(D,Now,Nxt1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
21 unifyAll(Nxt,Nxt1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
22 unifyAll(D,'$t'(Now,Nxt)):-!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
23 unifyNowNext(D,Now,Nxt1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
24 unifyAll(Nxt,Nxt1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
25 unifyAll([H|L],[H1|L1]) :- !,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
26 unifyAll(H,H1),unifyAll(L,L1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
27 unifyAll(Sa,Sb):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
28 functor(Sa,H,N),functor(Sb,H,N),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
29 unify_arg(N,N,Sa,Sb).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
30
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
31 unify_arg(0,_N,_,_):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
32 unify_arg(M,N,Sa,Sb):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
33 arg(M,Sa,Aa),arg(M,Sb,Ab),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
34 unifyAll(Aa,Ab),M1 is M-1,!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
35 unify_arg(M1,N,Sa,Sb).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
36
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
37 unifyNowNext('$t'(Now,Next),Now1,Next1):-!,Now=Now1,Next=Next1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
38 unifyNowNext(X,X1,X1):-atomic(X),!,X=X1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
39 unifyNowNext([H|L],[Hn|Ln],[Hnn|Lnn]):-!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
40 unifyNowNext(H,Hn,Hnn),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
41 unifyNowNext(L,Ln,Lnn).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
42 unifyNowNext(S,Sn,Snn):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
43 functor(S,H,N),functor(Sn,H,N),functor(Snn,H,N),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
44 unifyNowNextArg(N,N,S,Sn,Snn).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
45
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
46 unifyNowNextArg(0,_,_,_,_).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
47 unifyNowNextArg(M,N,Sa,Sb,Sc):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
48 arg(M,Sa,Aa),arg(M,Sb,Ab),arg(M,Sc,Ac),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
49 unifyNowNext(Aa,Ab,Ac),M1 is M-1,!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
50 unifyNowNextArg(M1,N,Sa,Sb,Sc).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
51
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
52 unifyNow(X,X1):-atomic(X),!,X=X1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
53 unifyNow('$t'(Now,_),Now1):-!,Now=Now1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
54 unifyNow([H|L],[Hn|Ln]):-!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
55 unifyNow(H,Hn),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
56 unifyNow(L,Ln).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
57 unifyNow(S,Sn):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
58 functor(S,H,N),functor(Sn,H,N),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
59 unifyNowArg(N,N,S,Sn).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
60
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
61 unifyNowArg(0,_,_,_).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
62 unifyNowArg(M,N,Sa,Sb):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
63 arg(M,Sa,Aa),arg(M,Sb,Ab),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
64 unifyNow(Aa,Ab),M1 is M-1,!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
65 unifyNowArg(M1,N,Sa,Sb).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
66
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
67
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
68 unifyNext(X,X):-atomic(X),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
69 unifyNext('$t'(_,Next),Next1):-!,Next=Next1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
70 unifyNext([H|L],[Hn|Ln]):-!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
71 unifyNext(H,Hn),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
72 unifyNext(L,Ln).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
73 unifyNext(S,Sn):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
74 functor(S,H,N),functor(Sn,H,N),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
75 unifyNextArg(N,N,S,Sn).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
76
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
77 unifyNextArg(0,_,_,_).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
78 unifyNextArg(M,N,Sa,Sb):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
79 arg(M,Sa,Aa),arg(M,Sb,Ab),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
80 unifyNext(Aa,Ab),M1 is M-1,!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
81 unifyNextArg(M1,N,Sa,Sb).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
82
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
83
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
84 % ATOMIC
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
85 % uatom(X, Atom)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
86 uatom(X, X) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
87 uatom('$t'(Atom,Next), Atom) :- uatom(Next, Atom).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
88
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
89 uconst(X, X) :- var(X),!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
90 uconst('$t'(Atom,Next), Atom) :- uatom(Next, Atom).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
91 uconst(X, Y) :- nonvar(X),!,X=Y.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
92
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
93 % unil(X) : Hacked version of uatom.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
94 unil([]) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
95 unil('$t'([],Next)) :- unil(Next).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
96
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
97
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
98 % COMPOUND TERM
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
99 % uskel(X, Skeleton)
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
100 uskel(X,X) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
101 uskel('$t'(X,Next),S) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
102 functor(S,H,N),functor(X,H,N),functor(Sn,H,N),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
103 uskelArg(N,N,S,X,Sn),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
104 uskel(Next,Sn).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
105
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
106 uskelArg(0, _, _, _, _) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
107 uskelArg(M, N, S, X, Sn) :-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
108 arg(M, S, '$t'(Now, Next)),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
109 arg(M, X, Now),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
110 arg(M, Sn, Next),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
111 M1 is M-1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
112 uskelArg(M1, N, S, X, Sn).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
113
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
114 % ulist(X, Car, Cdr) : Hacked version of uskel.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
115 ulist([H|T], H, T) :- !.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
116 ulist('$t'([H|T],Next), '$t'(H,NH), '$t'(T,NT)) :- !, ulist(Next, NH, NT).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
117
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
118
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
119 % readonly unify
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
120
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
121
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
122 r_unifyAll(G,D):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
123 (var(G) ; var(D)),!,G==D.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
124 r_unifyAll(Fl,D):-functor(Fl,'$t',2),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
125 r_unify_flt(Fl,D).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
126 r_unifyAll(D,Fl):-functor(Fl,'$t',2),!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
127 r_unify_flt(Fl,D).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
128 r_unifyAll(Sa,Sb):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
129 functor(Sa,H,N),functor(Sb,H,N),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
130 r_unify_arg(N,N,Sa,Sb).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
131
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
132 r_unify_arg(0,_N,_,_):-!.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
133 r_unify_arg(M,N,Sa,Sb):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
134 arg(M,Sa,Aa),arg(M,Sb,Ab),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
135 r_unifyAll(Aa,Ab),M1 is M-1,!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
136 r_unify_arg(M1,N,Sa,Sb).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
137
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
138 r_unify_flt('$t'(Now,Nxt),'$t'(Now1,Nxt1)) :-!,Now==Now1,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
139 r_unifyAll(Nxt,Nxt1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
140 r_unify_flt('$t'(Now,Nxt),S) :- nonvar(Now),nonvar(Nxt),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
141 r_unifyNowNext(S,Now,Nxt1),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
142 r_unifyAll(Nxt,Nxt1).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
143
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
144 r_unifyNowNext(V,_,_) :- var(V),!,fail.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
145 r_unifyNowNext('$t'(Now,Next),Now1,Next1):-!,Now==Now1,Next==Next1.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
146 r_unifyNowNext(X,X1,X2):-atomic(X),!,X==X1,X==X2.
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
147 r_unifyNowNext(S,Sn,Snn):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
148 functor(S,H,N),functor(Sn,H,N),functor(Snn,H,N),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
149 r_unifyNowNext(N,N,S,Sn,Snn).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
150
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
151 r_unifyNowNextArg(0,_,_,_,_).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
152 r_unifyNowNextArg(M,N,Sa,Sb,Sc):-
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
153 arg(M,Sa,Aa),arg(M,Sb,Ab),arg(M,Sc,Ac),
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
154 r_unifyNowNext(Aa,Ab,Ac),M1 is M-1,!,
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
155 r_unifyNowNextArg(M1,N,Sa,Sb,Sc).
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
156
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
157
cfb7c6b24319 Initial revision
kono
parents:
diff changeset
158 /* end of unifier */