3
4
5member(X,[Y|R]):- member(X,R),member(X,[X]).
6member(X,[X|_]).
7
8app([x,a],[b,c],[x,a,b,c]).
9app([a],[b,c],[a,b,c]).
10app([],[b,c],[b,c]).
11
12ex(app([1,2],[3],[1,2,3]),'+').
13ex(app([x,a],[b,c],[x,a,b,c]),'+').
14ex(app([a],[b,c],[a,b,c]),'+').
15ex(app([],[],[]),'+').
16ex(app([p],[],[p]),'+').
17ex(app([],[u],[u]),'+').
18ex(app([],[x,y],[x,y]),'+').
19ex(app([r,s],[],[r,s]),'+').
20ex(app([g],[d],[g,d]),'+').
21ex(app([9,8,7],[],[9,8,7]),'+').
22ex(app([],[6,5,4],[6,5,4]),'+').
23ex(app([4,3,5],[8],[4,3,5,8]),'+').
24ex(app([r,w],[q,t,s,f,i],[r,w,q,t,s,f,i]),'+').
25ex(app([j,k,l,m],[n,o,p,q,r],[j,k,l,m,n,o,p,q,r]),'+').
26ex(app([r,s,t],[q,u,v],[t,s,r,q,u,v]),'-').
27ex(app([s,t],[q,u,v],[s,r,q,u,v]),'-').
28
29
30min(A,[A|B]):- min(C,B), ge(E,F).
31p(X):- q(X,V1),r(V1,V2),q(V3),s(V3,V1).
32
33
34column(X):- brick(X), standing(X), is_on(X,Y), ground(Y).
35
36column(X):- brick(X), standing(X), is_on(X,Y), column(Y).
37
38same_height(X,Y):- ground(X), ground(Y).
39
40same_height(X,Y):- brick(X), standing(X), brick(Y), standing(Y), is_on(X,X1), is_on(Y,Y1),
41 same_height(X1,Y1).
42
43
44arch(X):- part_of(A,X), part_of(B,X), part_of(C,X), is_on(A,B), is_on(A,C), is_on(B,D),
45 is_on(C,E), ground(D), ground(E), left_of(B,C), does_not_touch(B,C), lying(A),
46 wedge(A), standing(B), standing(C), brick(B), brick(C).
47
48
49
50ex(p(a),+).
51ex(p(b),+).
52ex(p(c),-).
53
54q(a,qa).
55q(b,qb).
56q(c,qc).
57r(qa,x).
58r(qb,x).
59r(qc,x).
60s(sa,qa).
61s(sb,qb).
62s(sc,qc).
63q(sa).
64q(sb)