1
2/*
3 Need to test out doubles for p3/p7
4 */
5
6:- compiler_options([spec_off]).
7
8%:- set_prolog_flag(max_table_subgoal_size_action,failure).
9:- set_prolog_flag(max_table_subgoal_size_action,abstract).
10:- set_prolog_flag(max_table_subgoal_size,2).
11%:- import start_forest_view/1 from tables.
12%?- start_forest_view(userout).
13
14%--------------------
15:- table p1/1.
16p1(X):- Y = f(X),p1(Y).
17p1(1).
18
19%--------------------
20:- table p11/1.
21p11(X):- p11(f(X)).
22p11(1).
23
24%--------------------
25:- table p12/1.
26p12(X):- Y = [X],
27	% writeln(calling(p12(Y))),
28	p12(Y).
29p12(1).
30
31%--------------------
32:- table p2/1.
33p2(1).
34p2(X):- Y = f(X),p2(Y).
35
36%--------------------
37:- table p21/1.
38p21(1).
39p21(X):- p21(f(X)).
40
41%--------------------
42:- table p22/1.
43p22(1).
44p22(X):- p22([X]).
45
46%--------------------
47:- table p3/1.
48p3(X):- %writeln(entering_clause(X)),
49	p3(f(X)).
50%	writeln(succeeded_clause(X)).
51p3(X):- %writeln(entering_fact(X)),
52	X = f(1).
53	%writeln(succeeded_fact(X)).
54%p3(X):- X = f(1).
55
56%p3(f(f(f(f(f(f(1))))))).
57%p3(f(f(f(f(f(1)))))).
58%--------------------
59:- table p31/1.
60p31(X):-
61	%writeln(calling([X])),
62	p31([X]).
63p31([1]).
64
65%--------------------
66
67:- table p4/1.
68%p4(f(f(f(f(f(f(1))))))).
69p4(f(1)).
70p4(X):-
71	%writeln(calling(p4(f(X)))),
72	p4(f(X)).
73
74%--------------------
75
76:- table p41/1.
77p41([1]).
78p41(X):-
79	%writeln(calling(p41([X]))),
80	p41([X]).
81
82%--------------------
83
84:- table p5/1.
85p5(f(g(f(1)))).
86p5(f(g(f(2)))).
87
88%--------------------
89
90:- table p6/1.
91p6(_X).
92p6(X):- p6(f(X)).
93
94%--------------------
95
96:- table p7/1.
97p7(X):- p7(f(X)).
98p7(_X).
99
100%--------------------
101
102:- table d1/2.
103d1(1,1).
104d1(X,Y):- d1(f(X),f(Y)).
105
106%--------------------
107
108:- table d11/2.
109d11(1,1).
110d11(X,Y):- d11([X],[Y]).
111
112%--------------------
113
114:- table d2/2.
115d2(X,Y):- d2(f(X),f(Y)).
116d2(1,1).
117
118%--------------------
119
120:- table p8/1.
121p8(X):- p8(f(X)).
122p8(f(f(f(1)))).
123p8(f(f(g(2)))).
124p8(f(f(f(3)))).
125p8(f(f(g(4)))).
126
127%--------------------
128
129%--------------------
130:- table n1/1.
131
132n1(X):- tnot(n1(f(X))).
133n1(1).
134
135%--------------------
136
137test:- setof(X,p1(X),Xs),
138       (Xs == [1] -> writeln('>>>>>succeeded(p1)')
139        ; writeln('>>>>>failed(p1)') ),fail.
140test:- setof(X,p11(X),Xs),
141       (Xs == [1] -> writeln('>>>>>succeeded(p11)')
142        ; writeln('>>>>>failed(p11)') ),fail.
143test:- setof(X,p2(X),Xs),
144       (Xs == [1] -> writeln('>>>>>succeeded(p2)')
145        ; writeln('>>>>>failed(p2)') ),fail.
146test:- setof(X,p21(X),Xs),
147       (Xs == [1] -> writeln('>>>>>succeeded(p21)')
148        ; writeln('>>>>>failed(p21)') ),fail.
149test:- setof(X,p3(X),Xs),
150       (Xs == [1,f(1)] -> writeln('>>>>>succeeded(p3)')
151        ; writeln('>>>>>failed(p3)') ),fail.
152test:- setof(X,p31(X),Xs),
153       (Xs == [1,[1]] -> writeln('>>>>>succeeded(p31)')
154        ; writeln('>>>>>failed(p31)') ),fail.
155test:- setof(X,p4(X),Xs),
156       (Xs == [1,f(1)] -> writeln('>>>>>succeeded(p4)')
157        ; writeln('>>>>>failed(p4)') ),fail.
158test:- setof(X,p41(X),Xs),
159       (Xs == [1,[1]] -> writeln('>>>>>succeeded(p41)')
160        ; writeln('>>>>>failed(p41)') ),fail.
161test:- test5.
162test:- test5a.
163test:- test5b.
164test:- test6.
165test:- test7.
166test:- testd1.
167test:- testd11.
168test.
169
170test5:- abolish_all_tables,
171	setof(X,p5(f(g(f(X)))),Xs),
172	(Xs == [1,2] -> writeln('>>>>>succeeded(p5)')
173         ; writeln('>>>>>failed(p5)') ),fail.
174test5a:- abolish_all_tables,
175	 (p5(_),fail ; true),
176	 setof(X,p5(f(g(f(X)))),Xs),
177	 (Xs == [1,2] -> writeln('>>>>>succeeded(p5a)')
178          ; writeln('>>>>>failed(p5a)') ),fail.
179test5b:- abolish_all_tables,
180	 (p5(_),fail ; true),
181	 findall(1,p5(f(g(f(3)))),Xs),
182	 (Xs == [] -> writeln('>>>>>succeeded(p5b)')
183          ; writeln('>>>>>failed(p5b)') ),fail.
184
185test6:- abolish_all_tables,
186	 (p6(_),fail ; true),
187	 findall(X,get_residual(p6(X),_Y),Xs),
188	 (Xs = [_,f(_),f(f(_))] -> writeln('>>>>>succeeded(p6)')
189          ; writeln('>>>>>failed(p6)') ),fail.
190
191test7:- abolish_all_tables,
192	 (p7(_),fail ; true),
193	 findall(X,get_residual(p7(X),_Y),Xs),
194	 (Xs = [_,f(_),f(f(_))] -> writeln('>>>>>succeeded(p7)')
195          ; writeln('>>>>>failed(p7)') ),fail.
196
197testd1:- abolish_all_tables,
198	 setof([X,Y],d1(X,Y),Xs),
199	 (Xs = [[1,1]] -> writeln('>>>>>succeeded(d1)')
200          ; writeln('>>>>>failed(d1)') ),fail.
201testd11:- abolish_all_tables,
202	 setof([X,Y],d11(X,Y),Xs),
203	 (Xs = [[1,1]] -> writeln('>>>>>succeeded(d11)')
204          ; writeln('>>>>>failed(d11)') ),fail.
205
206testd2:- abolish_all_tables,
207	 setof([X,Y],d2(X,Y),Xs),
208	 (Xs = [[1,1]] -> writeln('>>>>>succeeded(d2)')
209          ; writeln('>>>>>failed(d2)') ),fail.
210