2%%%Examples for truncation ops
    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)