Problem:
 U61(tt()) -> s(length(L))
 and(tt()) -> X
 zeros() -> cons(0())
 U11(tt()) -> U12(isNatList())
 U12(tt()) -> tt()
 U21(tt()) -> U22(isNat())
 U22(tt()) -> tt()
 U31(tt()) -> U32(isNatList())
 U32(tt()) -> tt()
 U41(tt()) -> U42(isNat())
 U42(tt()) -> U43(isNatIList())
 U43(tt()) -> tt()
 U51(tt()) -> U52(isNat())
 U52(tt()) -> U53(isNatList())
 U53(tt()) -> tt()
 isNat() -> tt()
 isNat() -> U11(isNatIListKind())
 isNat() -> U21(isNatKind())
 isNatIList() -> U31(isNatIListKind())
 isNatIList() -> tt()
 isNatIList() -> U41(and(isNatKind()))
 isNatIListKind() -> tt()
 isNatIListKind() -> and(isNatKind())
 isNatKind() -> tt()
 isNatKind() -> isNatIListKind()
 isNatKind() -> isNatKind()
 isNatList() -> tt()
 isNatList() -> U51(and(isNatKind()))
 length(nil()) -> 0()
 length(cons(N)) -> U61(and(and(isNatList())))

Proof:
 Fresh Variable Processor:
  loop length: 1
  terms:
   U61(tt())
  context: s(length([]))
  substitution:
   L -> U61(tt())
  Qed