1/* 2type_restriction((A < B),[number(A),number(B)]). 3 4 5ex(merge([1],[2],[1,2]),'+'). 6ex(merge([6],[4],[4,6]),'+'). 7ex(merge([2,3,4,5],[4,7],[2,3,4,4,5,7]),'+'). 8ex(merge([44,55,66],[22,33,44,55],[22,33,44,44,55,55,66]),'+'). 9ex(merge([],[54,66,77,88,97],[54,66,77,88,97]),'+'). 10ex(merge([],[4],[4]),'+'). 11ex(merge([],[],[]),'+'). 12ex(merge([22,23,24,25],[],[22,23,24,25]),'+'). 13ex(merge([24],[],[24]),'+'). 14ex(merge([29,39,49,59],[37,79,99],[29,37,39,49,59,79,99]),'+'). 15ex(merge([2],[4,7],[2,4,7]),'+'). 16ex(merge([1],[2],[2,1]),'-'). 17ex(merge([6],[4],[6,4]),'-'). 18ex(merge([8],[7],[8]),'-'). 19ex(merge([2,3,4,5],[4,7],[4,3,2,4,5,7]),'-'). 20ex(merge([44,55,66],[22,33,44,55],[22,44,55,33,55,44,66]),'-'). 21ex(merge([29,39,49,59],[37,79,99],[37,39,29,59,79,49,99]),'-'). 22ex(merge([2],[4,7],[4,2]),'-'). 23ex(merge([1,2],[3,4],[1,3,2,4]),'-'). 24 25 26*/ 27 28type_restriction(male(A),[atom(A)]). 29type_restriction(female(A),[atom(A)]). 30type_restriction(parent(A,B),[atom(A),atom(B)]). 31 32 33ex(father(ma,b),+). 34ex(father(mc,d),+). 35ex(father(me,f),+). 36ex(father(mg,h),+). 37ex(father(mi,j),+). 38ex(father(mk,l),+). 39 40ex(father(fa,b),-). 41ex(father(fc,d),-). 42ex(father(fe,f),-). 43ex(father(fg,h),-). 44ex(father(fi,j),-). 45ex(father(fk,l),-). 46 47ex(father(b,ma),-). 48ex(father(d,mc),-). 49ex(father(f,me),-). 50ex(father(h,mg),-). 51ex(father(j,mi),-). 52ex(father(l,mk),-). 53ex(father(b,fa),-). 54ex(father(d,fc),-). 55ex(father(f,fe),-). 56ex(father(h,fg),-). 57ex(father(j,fi),-). 58ex(father(l,fk),-). 59 60 61ex(human(ma),+). 62ex(human(mc),+). 63ex(human(me),+). 64ex(human(mg),+). 65ex(human(mi),+). 66ex(human(mk),+). 67ex(human(fa),+). 68ex(human(fc),+). 69ex(human(fe),+). 70ex(human(fg),+). 71ex(human(fi),+). 72ex(human(fk),+). 73ex(human(b),+). 74ex(human(d),+). 75ex(human(f),+). 76ex(human(h),+). 77ex(human(j),+). 78ex(human(l),+). 79ex(human(a),-). 80ex(human(c),-). 81 82 83male(ma). 84male(mc). 85male(me). 86male(mg). 87male(mi). 88male(mk). 89male(b). 90male(d). 91male(f). 92male(h). 93male(j). 94male(l). 95 96female(fa). 97female(fc). 98female(fe). 99female(fg). 100female(fi). 101female(fk). 102 103 104parent(ma,b). 105parent(mc,d). 106parent(me,f). 107parent(mg,h). 108parent(mi,j). 109parent(mk,l). 110 111parent(fa,b). 112parent(fc,d). 113parent(fe,f). 114parent(fg,h). 115parent(fi,j). 116parent(fk,l). 117 118 119/* 120 121ex(t(nil),+). 122ex(t(tree(nil,0,nil)),+). 123ex(t(tree(nil,0,tree(nil,0,nil))),+). 124ex(t(tree(nil,0,tree(nil,s(0),nil))),+). 125ex(t(tree(nil,0,tree(nil,s(s(0)),nil))),+). 126ex(t(tree(nil,0,tree(nil,s(s(s(0))),nil))),+). 127ex(t(tree(nil,s(0),nil)),+). 128ex(t(tree(nil,s(0),tree(nil,0,nil))),+). 129ex(t(tree(nil,s(0),tree(nil,s(0),nil))),+). 130ex(t(tree(nil,s(0),tree(nil,s(s(0)),nil))),+). 131ex(t(tree(nil,s(0),tree(nil,s(s(s(0))),nil))),+). 132ex(t(tree(nil,s(s(0)),nil)),+). 133ex(t(tree(nil,s(s(0)),tree(nil,0,nil))),+). 134ex(t(tree(nil,s(s(0)),tree(nil,s(0),nil))),+). 135ex(t(tree(nil,s(s(0)),tree(nil,s(s(0)),nil))),+). 136ex(t(tree(nil,s(s(0)),tree(nil,s(s(s(0))),nil))),+). 137ex(t(tree(nil,s(s(s(0))),nil)),+). 138ex(t(tree(nil,s(s(s(0))),tree(nil,0,nil))),+). 139ex(t(tree(nil,s(s(s(0))),tree(nil,s(0),nil))),+). 140ex(t(tree(nil,s(s(s(0))),tree(nil,s(s(0)),nil))),+). 141ex(t(tree(nil,s(s(s(0))),tree(nil,s(s(s(0))),nil))),+). 142ex(t(tree(tree(nil,0,nil),0,nil)),+). 143ex(t(tree(tree(nil,0,nil),0,tree(nil,0,nil))),+). 144ex(t(tree(tree(nil,0,nil),0,tree(nil,s(0),nil))),+). 145ex(t(tree(tree(nil,0,nil),0,tree(nil,s(s(0)),nil))),+). 146ex(t(tree(tree(nil,0,nil),0,tree(nil,s(s(s(0))),nil))),+). 147ex(t(tree(tree(nil,0,nil),s(0),nil)),+). 148ex(t(tree(tree(nil,0,nil),s(0),tree(nil,0,nil))),+). 149ex(t(tree(tree(nil,0,nil),s(0),tree(nil,s(0),nil))),+). 150ex(t(tree(tree(nil,0,nil),s(0),tree(nil,s(s(0)),nil))),+). 151ex(t(tree(tree(nil,0,nil),s(0),tree(nil,s(s(s(0))),nil))),+). 152ex(t(tree(tree(nil,0,nil),s(s(0)),nil)),+). 153ex(t(tree(tree(nil,0,nil),s(s(0)),tree(nil,0,nil))),+). 154ex(t(tree(tree(nil,0,nil),s(s(0)),tree(nil,s(0),nil))),+). 155ex(t(tree(tree(nil,0,nil),s(s(0)),tree(nil,s(s(0)),nil))),+). 156ex(t(tree(tree(nil,0,nil),s(s(0)),tree(nil,s(s(s(0))),nil))),+). 157ex(t(tree(tree(nil,0,nil),s(s(s(0))),nil)),+). 158ex(t(tree(tree(nil,0,nil),s(s(s(0))),tree(nil,0,nil))),+). 159ex(t(tree(tree(nil,0,nil),s(s(s(0))),tree(nil,s(0),nil))),+). 160ex(t(tree(tree(nil,0,nil),s(s(s(0))),tree(nil,s(s(0)),nil))),+). 161ex(t(tree(tree(nil,0,nil),s(s(s(0))),tree(nil,s(s(s(0))),nil))),+). 162ex(t(tree(tree(nil,s(0),nil),0,nil)),+). 163ex(t(tree(tree(nil,s(0),nil),0,tree(nil,0,nil))),+). 164ex(t(tree(tree(nil,s(0),nil),0,tree(nil,s(0),nil))),+). 165ex(t(tree(tree(nil,s(0),nil),0,tree(nil,s(s(0)),nil))),+). 166ex(t(tree(tree(nil,s(0),nil),0,tree(nil,s(s(s(0))),nil))),+). 167ex(t(tree(tree(nil,s(0),nil),s(0),nil)),+). 168ex(t(tree(tree(nil,s(0),nil),s(0),tree(nil,0,nil))),+). 169ex(t(tree(tree(nil,s(0),nil),s(0),tree(nil,s(0),nil))),+). 170ex(t(tree(tree(nil,s(0),nil),s(0),tree(nil,s(s(0)),nil))),+). 171ex(t(tree(tree(nil,s(0),nil),s(0),tree(nil,s(s(s(0))),nil))),+). 172ex(t(tree(tree(nil,s(0),nil),s(s(0)),nil)),+). 173ex(t(tree(tree(nil,s(0),nil),s(s(0)),tree(nil,0,nil))),+). 174ex(t(tree(tree(nil,s(0),nil),s(s(0)),tree(nil,s(0),nil))),+). 175ex(t(tree(tree(nil,s(0),nil),s(s(0)),tree(nil,s(s(0)),nil))),+). 176ex(t(tree(tree(nil,s(0),nil),s(s(0)),tree(nil,s(s(s(0))),nil))),+). 177ex(t(tree(tree(nil,s(0),nil),s(s(s(0))),nil)),+). 178ex(t(tree(tree(nil,s(0),nil),s(s(s(0))),tree(nil,0,nil))),+). 179ex(t(tree(tree(nil,s(0),nil),s(s(s(0))),tree(nil,s(0),nil))),+). 180ex(t(tree(tree(nil,s(0),nil),s(s(s(0))),tree(nil,s(s(0)),nil))),+). 181ex(t(tree(tree(nil,s(0),nil),s(s(s(0))),tree(nil,s(s(s(0))),nil))),+). 182ex(t(tree(tree(nil,s(s(0)),nil),0,nil)),+). 183ex(t(tree(tree(nil,s(s(0)),nil),0,tree(nil,0,nil))),+). 184ex(t(tree(tree(nil,s(s(0)),nil),0,tree(nil,s(0),nil))),+). 185ex(t(tree(tree(nil,s(s(0)),nil),0,tree(nil,s(s(0)),nil))),+). 186ex(t(tree(tree(nil,s(s(0)),nil),0,tree(nil,s(s(s(0))),nil))),+). 187ex(t(tree(tree(nil,s(s(0)),nil),s(0),nil)),+). 188ex(t(tree(tree(nil,s(s(0)),nil),s(0),tree(nil,0,nil))),+). 189ex(t(tree(tree(nil,s(s(0)),nil),s(0),tree(nil,s(0),nil))),+). 190ex(t(tree(tree(nil,s(s(0)),nil),s(0),tree(nil,s(s(0)),nil))),+). 191ex(t(tree(tree(nil,s(s(0)),nil),s(0),tree(nil,s(s(s(0))),nil))),+). 192ex(t(tree(tree(nil,s(s(0)),nil),s(s(0)),nil)),+). 193ex(t(tree(tree(nil,s(s(0)),nil),s(s(0)),tree(nil,0,nil))),+). 194ex(t(tree(tree(nil,s(s(0)),nil),s(s(0)),tree(nil,s(0),nil))),+). 195ex(t(tree(tree(nil,s(s(0)),nil),s(s(0)),tree(nil,s(s(0)),nil))),+). 196ex(t(tree(tree(nil,s(s(0)),nil),s(s(0)),tree(nil,s(s(s(0))),nil))),+). 197ex(t(tree(tree(nil,s(s(0)),nil),s(s(s(0))),nil)),+). 198ex(t(tree(tree(nil,s(s(0)),nil),s(s(s(0))),tree(nil,0,nil))),+). 199ex(t(tree(tree(nil,s(s(0)),nil),s(s(s(0))),tree(nil,s(0),nil))),+). 200ex(t(tree(tree(nil,s(s(0)),nil),s(s(s(0))),tree(nil,s(s(0)),nil))),+). 201ex(t(tree(tree(nil,s(s(0)),nil),s(s(s(0))),tree(nil,s(s(s(0))),nil))),+). 202ex(t(tree(tree(nil,s(s(s(0))),nil),0,nil)),+). 203ex(t(tree(tree(nil,s(s(s(0))),nil),0,tree(nil,0,nil))),+). 204ex(t(tree(tree(nil,s(s(s(0))),nil),0,tree(nil,s(0),nil))),+). 205ex(t(tree(tree(nil,s(s(s(0))),nil),0,tree(nil,s(s(0)),nil))),+). 206ex(t(tree(tree(nil,s(s(s(0))),nil),0,tree(nil,s(s(s(0))),nil))),+). 207ex(t(tree(tree(nil,s(s(s(0))),nil),s(0),nil)),+). 208ex(t(tree(tree(nil,s(s(s(0))),nil),s(0),tree(nil,0,nil))),+). 209ex(t(tree(tree(nil,s(s(s(0))),nil),s(0),tree(nil,s(0),nil))),+). 210ex(t(tree(tree(nil,s(s(s(0))),nil),s(0),tree(nil,s(s(0)),nil))),+). 211ex(t(tree(tree(nil,s(s(s(0))),nil),s(0),tree(nil,s(s(s(0))),nil))),+). 212ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(0)),nil)),+). 213ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(0)),tree(nil,0,nil))),+). 214ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(0)),tree(nil,s(0),nil))),+). 215ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(0)),tree(nil,s(s(0)),nil))),+). 216ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(0)),tree(nil,s(s(s(0))),nil))),+). 217ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(s(0))),nil)),+). 218ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(s(0))),tree(nil,0,nil))),+). 219ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(s(0))),tree(nil,s(0),nil))),+). 220ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(s(0))),tree(nil,s(s(0)),nil))),+). 221ex(t(tree(tree(nil,s(s(s(0))),nil),s(s(s(0))),tree(nil,s(s(s(0))),nil))),+). 222 223ex(t(0),-). 224ex(t(s(0)),-). 225ex(t(s(s(0))),-). 226ex(t(s(s(s(0)))),-). 227ex(t(tree(nil,nil,nil)),-). 228ex(t(tree(nil,tree(nil,0,nil),nil)),-). 229ex(t(tree(0,0,s(0))),-). 230ex(t(tree(s(s(0)),s(0),s(s(s(0))))),-). 231ex(t(tree(nil,0,s(0))),-). 232ex(t(tree(nil,s(0),s(s(s(0))))),-). 233ex(t(tree(0,0,nil)),-). 234ex(t(tree(s(s(s(0))),s(0),nil)),-). 235ex(t(tree(nil,s(nil),nil)),-). 236ex(t(tree(nil,s(s(nil)),nil)),-). 237ex(t(tree(nil,s(tree(nil,0,nil)),nil)),-). 238ex(t(tree(nil,s(s(tree(nil,s(0),nil))),nil)),-). 239ex(t(tree(nil,s(s(s(nil))),nil)),-). 240 241 242ex(p(f([],[])),+). 243ex(p(f([a],[b])),+). 244ex(p(f([a,a],[b,b])),+). 245ex(p(f([a,a,a],[b,b,b])),+). 246ex(p(f([a,a,a,a],[b,b,b,b])),+). 247 248 249ex(p([]),-). 250ex(p([a]),-). 251ex(p([a,a]),-). 252ex(p([a,a,a]),-). 253ex(p([a,a,a,a]),-). 254ex(p([b]),-). 255ex(p([b,b]),-). 256ex(p([b,b,b]),-). 257ex(p([b,b,b,b]),-). 258ex(p(f([a],[])),-). 259ex(p(f([],[b,b])),-). 260ex(p(f([a,a,a],[b,b])),-). 261ex(p(f([a],[b,b,b])),-). 262ex(p(f([a,a,a,a],[b,b,b])),-). 263*/