MAYBE 0.17/0.20 MAYBE 0.17/0.21 0.17/0.21 Problem: 0.17/0.21 and(false(),false()) -> false() 0.17/0.21 and(true(),false()) -> false() 0.17/0.21 and(false(),true()) -> false() 0.17/0.21 and(true(),true()) -> true() 0.17/0.21 eq(nil(),nil()) -> true() 0.17/0.21 eq(cons(T,L),nil()) -> false() 0.17/0.21 eq(nil(),cons(T,L)) -> false() 0.17/0.21 eq(cons(T,L),cons(Tp,Lp)) -> and(eq(T,Tp),eq(L,Lp)) 0.17/0.21 eq(var(L),var(Lp)) -> eq(L,Lp) 0.17/0.21 eq(var(L),apply(T,S)) -> false() 0.17/0.21 eq(var(L),lambda(X,T)) -> false() 0.17/0.21 eq(apply(T,S),var(L)) -> false() 0.17/0.21 eq(apply(T,S),apply(Tp,Sp)) -> and(eq(T,Tp),eq(S,Sp)) 0.17/0.21 eq(apply(T,S),lambda(X,Tp)) -> false() 0.17/0.21 eq(lambda(X,T),var(L)) -> false() 0.17/0.21 eq(lambda(X,T),apply(Tp,Sp)) -> false() 0.17/0.21 eq(lambda(X,T),lambda(Xp,Tp)) -> and(eq(T,Tp),eq(X,Xp)) 0.17/0.21 if(true(),var(K),var(L)) -> var(K) 0.17/0.21 if(false(),var(K),var(L)) -> var(L) 0.17/0.21 ren(var(L),var(K),var(Lp)) -> if(eq(L,Lp),var(K),var(Lp)) 0.17/0.21 ren(X,Y,apply(T,S)) -> apply(ren(X,Y,T),ren(X,Y,S)) 0.17/0.21 ren(X,Y,lambda(Z,T)) -> 0.17/0.21 lambda(var(cons(X,cons(Y,cons(lambda(Z,T),nil())))),ren(X,Y,ren(Z,var 0.17/0.21 (cons 0.17/0.21 ( 0.17/0.21 X, 0.17/0.21 cons 0.17/0.21 (Y,cons(lambda(Z,T),nil())))), 0.17/0.21 T))) 0.17/0.21 0.17/0.21 Proof: 0.17/0.21 Open 0.17/0.21 EOF