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