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