Problem:
 and(true()) -> X
 if(true()) -> X
 if(false()) -> Y
 add(0()) -> X
 and(false()) -> false()
 add(s()) -> s()
 first(0(),X) -> nil()
 first(s(),cons()) -> cons()
 from() -> cons()

Proof:
 Fresh Variable Processor:
  loop length: 1
  terms:
   and(true())
  context: []
  substitution:
   X -> and(true())
  Qed