Problem:
 hd(cons()) -> X
 tl(cons()) -> Y
 nats() -> adx(zeros())
 zeros() -> cons()
 incr(cons()) -> cons()
 adx(cons()) -> incr(cons())

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