MAYBE
Time: 1.423967
TRS:
 {                 cons(mark X1, X2) -> mark cons(X1, X2),
                  cons(ok X1, ok X2) -> ok cons(X1, X2),
                 active cons(X1, X2) -> cons(active X1, X2),
                      active zeros() -> mark cons(0(), zeros()),
                        active U12 X -> U12 active X,
                     active U12 tt() -> mark tt(),
       active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
              active isNatList nil() -> mark tt(),
       active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                  active U11(X1, X2) -> U11(active X1, X2),
                active U11(tt(), V1) -> mark U12 isNatList V1,
                        active U22 X -> U22 active X,
                     active U22 tt() -> mark tt(),
                    active isNat 0() -> mark tt(),
                   active isNat s V1 -> mark U21(isNatKind V1, V1),
              active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                  active U21(X1, X2) -> U21(active X1, X2),
                active U21(tt(), V1) -> mark U22 isNat V1,
                        active U32 X -> U32 active X,
                     active U32 tt() -> mark tt(),
                  active U31(X1, X2) -> U31(active X1, X2),
                 active U31(tt(), V) -> mark U32 isNatList V,
                  active U42(X1, X2) -> U42(active X1, X2),
                active U42(tt(), V2) -> mark U43 isNatIList V2,
              active U41(X1, X2, X3) -> U41(active X1, X2, X3),
            active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                        active U43 X -> U43 active X,
                     active U43 tt() -> mark tt(),
                 active isNatIList V -> mark U31(isNatIListKind V, V),
      active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
           active isNatIList zeros() -> mark tt(),
                  active U52(X1, X2) -> U52(active X1, X2),
                active U52(tt(), V2) -> mark U53 isNatList V2,
              active U51(X1, X2, X3) -> U51(active X1, X2, X3),
            active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                        active U53 X -> U53 active X,
                     active U53 tt() -> mark tt(),
                  active U62(X1, X2) -> U62(active X1, X2),
                active U62(tt(), V2) -> mark U63 isNatIList V2,
              active U61(X1, X2, X3) -> U61(active X1, X2, X3),
            active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                        active U63 X -> U63 active X,
                     active U63 tt() -> mark tt(),
                          active s X -> s active X,
                     active length X -> length active X,
            active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                 active length nil() -> mark 0(),
                  active U71(X1, X2) -> U71(active X1, X2),
                 active U71(tt(), L) -> mark s length L,
                        active U81 X -> U81 active X,
                     active U81 tt() -> mark nil(),
                 active take(X1, X2) -> take(X1, active X2),
                 active take(X1, X2) -> take(active X1, X2),
                active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
       active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
          active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
          active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                  active and(X1, X2) -> and(active X1, X2),
                 active and(tt(), X) -> mark X,
  active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
       active isNatIListKind zeros() -> mark tt(),
         active isNatIListKind nil() -> mark tt(),
  active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                active isNatKind 0() -> mark tt(),
               active isNatKind s V1 -> mark isNatKind V1,
          active isNatKind length V1 -> mark isNatIListKind V1,
                          U12 mark X -> mark U12 X,
                            U12 ok X -> ok U12 X,
                      isNatList ok X -> ok isNatList X,
                    U11(mark X1, X2) -> mark U11(X1, X2),
                   U11(ok X1, ok X2) -> ok U11(X1, X2),
                          U22 mark X -> mark U22 X,
                            U22 ok X -> ok U22 X,
                          isNat ok X -> ok isNat X,
                    U21(mark X1, X2) -> mark U21(X1, X2),
                   U21(ok X1, ok X2) -> ok U21(X1, X2),
                          U32 mark X -> mark U32 X,
                            U32 ok X -> ok U32 X,
                    U31(mark X1, X2) -> mark U31(X1, X2),
                   U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2) -> mark U42(X1, X2),
                   U42(ok X1, ok X2) -> ok U42(X1, X2),
                U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
            U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                          U43 mark X -> mark U43 X,
                            U43 ok X -> ok U43 X,
                     isNatIList ok X -> ok isNatIList X,
                    U52(mark X1, X2) -> mark U52(X1, X2),
                   U52(ok X1, ok X2) -> ok U52(X1, X2),
                U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
            U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                          U53 mark X -> mark U53 X,
                            U53 ok X -> ok U53 X,
                    U62(mark X1, X2) -> mark U62(X1, X2),
                   U62(ok X1, ok X2) -> ok U62(X1, X2),
                U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
            U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                          U63 mark X -> mark U63 X,
                            U63 ok X -> ok U63 X,
                            s mark X -> mark s X,
                              s ok X -> ok s X,
                       length mark X -> mark length X,
                         length ok X -> ok length X,
                    U71(mark X1, X2) -> mark U71(X1, X2),
                   U71(ok X1, ok X2) -> ok U71(X1, X2),
                          U81 mark X -> mark U81 X,
                            U81 ok X -> ok U81 X,
                   take(X1, mark X2) -> mark take(X1, X2),
                   take(mark X1, X2) -> mark take(X1, X2),
                  take(ok X1, ok X2) -> ok take(X1, X2),
            U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
     U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                    and(mark X1, X2) -> mark and(X1, X2),
                   and(ok X1, ok X2) -> ok and(X1, X2),
                 isNatIListKind ok X -> ok isNatIListKind X,
                      isNatKind ok X -> ok isNatKind X,
                 proper cons(X1, X2) -> cons(proper X1, proper X2),
                          proper 0() -> ok 0(),
                      proper zeros() -> ok zeros(),
                        proper U12 X -> U12 proper X,
                  proper isNatList X -> isNatList proper X,
                  proper U11(X1, X2) -> U11(proper X1, proper X2),
                         proper tt() -> ok tt(),
                        proper U22 X -> U22 proper X,
                      proper isNat X -> isNat proper X,
                  proper U21(X1, X2) -> U21(proper X1, proper X2),
                        proper U32 X -> U32 proper X,
                  proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2) -> U42(proper X1, proper X2),
              proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                        proper U43 X -> U43 proper X,
                 proper isNatIList X -> isNatIList proper X,
                  proper U52(X1, X2) -> U52(proper X1, proper X2),
              proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                        proper U53 X -> U53 proper X,
                  proper U62(X1, X2) -> U62(proper X1, proper X2),
              proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                        proper U63 X -> U63 proper X,
                          proper s X -> s proper X,
                     proper length X -> length proper X,
                  proper U71(X1, X2) -> U71(proper X1, proper X2),
                        proper nil() -> ok nil(),
                        proper U81 X -> U81 proper X,
                 proper take(X1, X2) -> take(proper X1, proper X2),
          proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                  proper and(X1, X2) -> and(proper X1, proper X2),
             proper isNatIListKind X -> isNatIListKind proper X,
                  proper isNatKind X -> isNatKind proper X,
                          top mark X -> top proper X,
                            top ok X -> top active X}
 DP:
  DP:
   {
                     cons#(mark X1, X2) -> cons#(X1, X2),
                    cons#(ok X1, ok X2) -> cons#(X1, X2),
                   active# cons(X1, X2) -> cons#(active X1, X2),
                   active# cons(X1, X2) -> active# X1,
                        active# zeros() -> cons#(0(), zeros()),
                          active# U12 X -> active# X,
                          active# U12 X -> U12# active X,
         active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2),
         active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2),
         active# isNatList cons(V1, V2) -> isNatIListKind# V2,
         active# isNatList cons(V1, V2) -> isNatKind# V1,
         active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2),
         active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2),
         active# isNatList take(V1, V2) -> isNatIListKind# V2,
         active# isNatList take(V1, V2) -> isNatKind# V1,
                    active# U11(X1, X2) -> active# X1,
                    active# U11(X1, X2) -> U11#(active X1, X2),
                  active# U11(tt(), V1) -> U12# isNatList V1,
                  active# U11(tt(), V1) -> isNatList# V1,
                          active# U22 X -> active# X,
                          active# U22 X -> U22# active X,
                     active# isNat s V1 -> U21#(isNatKind V1, V1),
                     active# isNat s V1 -> isNatKind# V1,
                active# isNat length V1 -> U11#(isNatIListKind V1, V1),
                active# isNat length V1 -> isNatIListKind# V1,
                    active# U21(X1, X2) -> active# X1,
                    active# U21(X1, X2) -> U21#(active X1, X2),
                  active# U21(tt(), V1) -> U22# isNat V1,
                  active# U21(tt(), V1) -> isNat# V1,
                          active# U32 X -> active# X,
                          active# U32 X -> U32# active X,
                    active# U31(X1, X2) -> active# X1,
                    active# U31(X1, X2) -> U31#(active X1, X2),
                   active# U31(tt(), V) -> isNatList# V,
                   active# U31(tt(), V) -> U32# isNatList V,
                    active# U42(X1, X2) -> active# X1,
                    active# U42(X1, X2) -> U42#(active X1, X2),
                  active# U42(tt(), V2) -> U43# isNatIList V2,
                  active# U42(tt(), V2) -> isNatIList# V2,
                active# U41(X1, X2, X3) -> active# X1,
                active# U41(X1, X2, X3) -> U41#(active X1, X2, X3),
              active# U41(tt(), V1, V2) -> isNat# V1,
              active# U41(tt(), V1, V2) -> U42#(isNat V1, V2),
                          active# U43 X -> active# X,
                          active# U43 X -> U43# active X,
                   active# isNatIList V -> U31#(isNatIListKind V, V),
                   active# isNatIList V -> isNatIListKind# V,
        active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2),
        active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2),
        active# isNatIList cons(V1, V2) -> isNatIListKind# V2,
        active# isNatIList cons(V1, V2) -> isNatKind# V1,
                    active# U52(X1, X2) -> active# X1,
                    active# U52(X1, X2) -> U52#(active X1, X2),
                  active# U52(tt(), V2) -> isNatList# V2,
                  active# U52(tt(), V2) -> U53# isNatList V2,
                active# U51(X1, X2, X3) -> active# X1,
                active# U51(X1, X2, X3) -> U51#(active X1, X2, X3),
              active# U51(tt(), V1, V2) -> isNat# V1,
              active# U51(tt(), V1, V2) -> U52#(isNat V1, V2),
                          active# U53 X -> active# X,
                          active# U53 X -> U53# active X,
                    active# U62(X1, X2) -> active# X1,
                    active# U62(X1, X2) -> U62#(active X1, X2),
                  active# U62(tt(), V2) -> isNatIList# V2,
                  active# U62(tt(), V2) -> U63# isNatIList V2,
                active# U61(X1, X2, X3) -> active# X1,
                active# U61(X1, X2, X3) -> U61#(active X1, X2, X3),
              active# U61(tt(), V1, V2) -> isNat# V1,
              active# U61(tt(), V1, V2) -> U62#(isNat V1, V2),
                          active# U63 X -> active# X,
                          active# U63 X -> U63# active X,
                            active# s X -> active# X,
                            active# s X -> s# active X,
                       active# length X -> active# X,
                       active# length X -> length# active X,
              active# length cons(N, L) -> isNatList# L,
              active# length cons(N, L) -> isNat# N,
              active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
              active# length cons(N, L) -> and#(isNatList L, isNatIListKind L),
              active# length cons(N, L) -> and#(isNat N, isNatKind N),
              active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)),
              active# length cons(N, L) -> isNatIListKind# L,
              active# length cons(N, L) -> isNatKind# N,
                    active# U71(X1, X2) -> active# X1,
                    active# U71(X1, X2) -> U71#(active X1, X2),
                   active# U71(tt(), L) -> s# length L,
                   active# U71(tt(), L) -> length# L,
                          active# U81 X -> active# X,
                          active# U81 X -> U81# active X,
                   active# take(X1, X2) -> active# X1,
                   active# take(X1, X2) -> active# X2,
                   active# take(X1, X2) -> take#(X1, active X2),
                   active# take(X1, X2) -> take#(active X1, X2),
                  active# take(0(), IL) -> isNatIList# IL,
                  active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL),
                  active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL),
                  active# take(0(), IL) -> isNatIListKind# IL,
         active# take(s M, cons(N, IL)) -> isNat# N,
         active# take(s M, cons(N, IL)) -> isNat# M,
         active# take(s M, cons(N, IL)) -> isNatIList# IL,
         active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
         active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N),
         active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M),
         active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL),
         active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)),
         active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))),
         active# take(s M, cons(N, IL)) -> isNatIListKind# IL,
         active# take(s M, cons(N, IL)) -> isNatKind# N,
         active# take(s M, cons(N, IL)) -> isNatKind# M,
            active# U91(X1, X2, X3, X4) -> active# X1,
            active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4),
            active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)),
            active# U91(tt(), IL, M, N) -> take#(M, IL),
                    active# and(X1, X2) -> active# X1,
                    active# and(X1, X2) -> and#(active X1, X2),
    active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2),
    active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2,
    active# isNatIListKind cons(V1, V2) -> isNatKind# V1,
    active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2),
    active# isNatIListKind take(V1, V2) -> isNatIListKind# V2,
    active# isNatIListKind take(V1, V2) -> isNatKind# V1,
                 active# isNatKind s V1 -> isNatKind# V1,
            active# isNatKind length V1 -> isNatIListKind# V1,
                            U12# mark X -> U12# X,
                              U12# ok X -> U12# X,
                        isNatList# ok X -> isNatList# X,
                      U11#(mark X1, X2) -> U11#(X1, X2),
                     U11#(ok X1, ok X2) -> U11#(X1, X2),
                            U22# mark X -> U22# X,
                              U22# ok X -> U22# X,
                            isNat# ok X -> isNat# X,
                      U21#(mark X1, X2) -> U21#(X1, X2),
                     U21#(ok X1, ok X2) -> U21#(X1, X2),
                            U32# mark X -> U32# X,
                              U32# ok X -> U32# X,
                      U31#(mark X1, X2) -> U31#(X1, X2),
                     U31#(ok X1, ok X2) -> U31#(X1, X2),
                      U42#(mark X1, X2) -> U42#(X1, X2),
                     U42#(ok X1, ok X2) -> U42#(X1, X2),
                  U41#(mark X1, X2, X3) -> U41#(X1, X2, X3),
              U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3),
                            U43# mark X -> U43# X,
                              U43# ok X -> U43# X,
                       isNatIList# ok X -> isNatIList# X,
                      U52#(mark X1, X2) -> U52#(X1, X2),
                     U52#(ok X1, ok X2) -> U52#(X1, X2),
                  U51#(mark X1, X2, X3) -> U51#(X1, X2, X3),
              U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3),
                            U53# mark X -> U53# X,
                              U53# ok X -> U53# X,
                      U62#(mark X1, X2) -> U62#(X1, X2),
                     U62#(ok X1, ok X2) -> U62#(X1, X2),
                  U61#(mark X1, X2, X3) -> U61#(X1, X2, X3),
              U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3),
                            U63# mark X -> U63# X,
                              U63# ok X -> U63# X,
                              s# mark X -> s# X,
                                s# ok X -> s# X,
                         length# mark X -> length# X,
                           length# ok X -> length# X,
                      U71#(mark X1, X2) -> U71#(X1, X2),
                     U71#(ok X1, ok X2) -> U71#(X1, X2),
                            U81# mark X -> U81# X,
                              U81# ok X -> U81# X,
                     take#(X1, mark X2) -> take#(X1, X2),
                     take#(mark X1, X2) -> take#(X1, X2),
                    take#(ok X1, ok X2) -> take#(X1, X2),
              U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4),
       U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4),
                      and#(mark X1, X2) -> and#(X1, X2),
                     and#(ok X1, ok X2) -> and#(X1, X2),
                   isNatIListKind# ok X -> isNatIListKind# X,
                        isNatKind# ok X -> isNatKind# X,
                   proper# cons(X1, X2) -> cons#(proper X1, proper X2),
                   proper# cons(X1, X2) -> proper# X1,
                   proper# cons(X1, X2) -> proper# X2,
                          proper# U12 X -> U12# proper X,
                          proper# U12 X -> proper# X,
                    proper# isNatList X -> isNatList# proper X,
                    proper# isNatList X -> proper# X,
                    proper# U11(X1, X2) -> U11#(proper X1, proper X2),
                    proper# U11(X1, X2) -> proper# X1,
                    proper# U11(X1, X2) -> proper# X2,
                          proper# U22 X -> U22# proper X,
                          proper# U22 X -> proper# X,
                        proper# isNat X -> isNat# proper X,
                        proper# isNat X -> proper# X,
                    proper# U21(X1, X2) -> U21#(proper X1, proper X2),
                    proper# U21(X1, X2) -> proper# X1,
                    proper# U21(X1, X2) -> proper# X2,
                          proper# U32 X -> U32# proper X,
                          proper# U32 X -> proper# X,
                    proper# U31(X1, X2) -> U31#(proper X1, proper X2),
                    proper# U31(X1, X2) -> proper# X1,
                    proper# U31(X1, X2) -> proper# X2,
                    proper# U42(X1, X2) -> U42#(proper X1, proper X2),
                    proper# U42(X1, X2) -> proper# X1,
                    proper# U42(X1, X2) -> proper# X2,
                proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3),
                proper# U41(X1, X2, X3) -> proper# X1,
                proper# U41(X1, X2, X3) -> proper# X2,
                proper# U41(X1, X2, X3) -> proper# X3,
                          proper# U43 X -> U43# proper X,
                          proper# U43 X -> proper# X,
                   proper# isNatIList X -> isNatIList# proper X,
                   proper# isNatIList X -> proper# X,
                    proper# U52(X1, X2) -> U52#(proper X1, proper X2),
                    proper# U52(X1, X2) -> proper# X1,
                    proper# U52(X1, X2) -> proper# X2,
                proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3),
                proper# U51(X1, X2, X3) -> proper# X1,
                proper# U51(X1, X2, X3) -> proper# X2,
                proper# U51(X1, X2, X3) -> proper# X3,
                          proper# U53 X -> U53# proper X,
                          proper# U53 X -> proper# X,
                    proper# U62(X1, X2) -> U62#(proper X1, proper X2),
                    proper# U62(X1, X2) -> proper# X1,
                    proper# U62(X1, X2) -> proper# X2,
                proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3),
                proper# U61(X1, X2, X3) -> proper# X1,
                proper# U61(X1, X2, X3) -> proper# X2,
                proper# U61(X1, X2, X3) -> proper# X3,
                          proper# U63 X -> U63# proper X,
                          proper# U63 X -> proper# X,
                            proper# s X -> s# proper X,
                            proper# s X -> proper# X,
                       proper# length X -> length# proper X,
                       proper# length X -> proper# X,
                    proper# U71(X1, X2) -> U71#(proper X1, proper X2),
                    proper# U71(X1, X2) -> proper# X1,
                    proper# U71(X1, X2) -> proper# X2,
                          proper# U81 X -> U81# proper X,
                          proper# U81 X -> proper# X,
                   proper# take(X1, X2) -> take#(proper X1, proper X2),
                   proper# take(X1, X2) -> proper# X1,
                   proper# take(X1, X2) -> proper# X2,
            proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4),
            proper# U91(X1, X2, X3, X4) -> proper# X1,
            proper# U91(X1, X2, X3, X4) -> proper# X2,
            proper# U91(X1, X2, X3, X4) -> proper# X3,
            proper# U91(X1, X2, X3, X4) -> proper# X4,
                    proper# and(X1, X2) -> and#(proper X1, proper X2),
                    proper# and(X1, X2) -> proper# X1,
                    proper# and(X1, X2) -> proper# X2,
               proper# isNatIListKind X -> isNatIListKind# proper X,
               proper# isNatIListKind X -> proper# X,
                    proper# isNatKind X -> isNatKind# proper X,
                    proper# isNatKind X -> proper# X,
                            top# mark X -> proper# X,
                            top# mark X -> top# proper X,
                              top# ok X -> active# X,
                              top# ok X -> top# active X
   }
  TRS:
  {                 cons(mark X1, X2) -> mark cons(X1, X2),
                   cons(ok X1, ok X2) -> ok cons(X1, X2),
                  active cons(X1, X2) -> cons(active X1, X2),
                       active zeros() -> mark cons(0(), zeros()),
                         active U12 X -> U12 active X,
                      active U12 tt() -> mark tt(),
        active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
               active isNatList nil() -> mark tt(),
        active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active U11(X1, X2) -> U11(active X1, X2),
                 active U11(tt(), V1) -> mark U12 isNatList V1,
                         active U22 X -> U22 active X,
                      active U22 tt() -> mark tt(),
                     active isNat 0() -> mark tt(),
                    active isNat s V1 -> mark U21(isNatKind V1, V1),
               active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                   active U21(X1, X2) -> U21(active X1, X2),
                 active U21(tt(), V1) -> mark U22 isNat V1,
                         active U32 X -> U32 active X,
                      active U32 tt() -> mark tt(),
                   active U31(X1, X2) -> U31(active X1, X2),
                  active U31(tt(), V) -> mark U32 isNatList V,
                   active U42(X1, X2) -> U42(active X1, X2),
                 active U42(tt(), V2) -> mark U43 isNatIList V2,
               active U41(X1, X2, X3) -> U41(active X1, X2, X3),
             active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                         active U43 X -> U43 active X,
                      active U43 tt() -> mark tt(),
                  active isNatIList V -> mark U31(isNatIListKind V, V),
       active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
            active isNatIList zeros() -> mark tt(),
                   active U52(X1, X2) -> U52(active X1, X2),
                 active U52(tt(), V2) -> mark U53 isNatList V2,
               active U51(X1, X2, X3) -> U51(active X1, X2, X3),
             active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                         active U53 X -> U53 active X,
                      active U53 tt() -> mark tt(),
                   active U62(X1, X2) -> U62(active X1, X2),
                 active U62(tt(), V2) -> mark U63 isNatIList V2,
               active U61(X1, X2, X3) -> U61(active X1, X2, X3),
             active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                         active U63 X -> U63 active X,
                      active U63 tt() -> mark tt(),
                           active s X -> s active X,
                      active length X -> length active X,
             active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                  active length nil() -> mark 0(),
                   active U71(X1, X2) -> U71(active X1, X2),
                  active U71(tt(), L) -> mark s length L,
                         active U81 X -> U81 active X,
                      active U81 tt() -> mark nil(),
                  active take(X1, X2) -> take(X1, active X2),
                  active take(X1, X2) -> take(active X1, X2),
                 active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
        active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
           active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
           active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                   active and(X1, X2) -> and(active X1, X2),
                  active and(tt(), X) -> mark X,
   active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
        active isNatIListKind zeros() -> mark tt(),
          active isNatIListKind nil() -> mark tt(),
   active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                 active isNatKind 0() -> mark tt(),
                active isNatKind s V1 -> mark isNatKind V1,
           active isNatKind length V1 -> mark isNatIListKind V1,
                           U12 mark X -> mark U12 X,
                             U12 ok X -> ok U12 X,
                       isNatList ok X -> ok isNatList X,
                     U11(mark X1, X2) -> mark U11(X1, X2),
                    U11(ok X1, ok X2) -> ok U11(X1, X2),
                           U22 mark X -> mark U22 X,
                             U22 ok X -> ok U22 X,
                           isNat ok X -> ok isNat X,
                     U21(mark X1, X2) -> mark U21(X1, X2),
                    U21(ok X1, ok X2) -> ok U21(X1, X2),
                           U32 mark X -> mark U32 X,
                             U32 ok X -> ok U32 X,
                     U31(mark X1, X2) -> mark U31(X1, X2),
                    U31(ok X1, ok X2) -> ok U31(X1, X2),
                     U42(mark X1, X2) -> mark U42(X1, X2),
                    U42(ok X1, ok X2) -> ok U42(X1, X2),
                 U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
             U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                           U43 mark X -> mark U43 X,
                             U43 ok X -> ok U43 X,
                      isNatIList ok X -> ok isNatIList X,
                     U52(mark X1, X2) -> mark U52(X1, X2),
                    U52(ok X1, ok X2) -> ok U52(X1, X2),
                 U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
             U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                           U53 mark X -> mark U53 X,
                             U53 ok X -> ok U53 X,
                     U62(mark X1, X2) -> mark U62(X1, X2),
                    U62(ok X1, ok X2) -> ok U62(X1, X2),
                 U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
             U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                           U63 mark X -> mark U63 X,
                             U63 ok X -> ok U63 X,
                             s mark X -> mark s X,
                               s ok X -> ok s X,
                        length mark X -> mark length X,
                          length ok X -> ok length X,
                     U71(mark X1, X2) -> mark U71(X1, X2),
                    U71(ok X1, ok X2) -> ok U71(X1, X2),
                           U81 mark X -> mark U81 X,
                             U81 ok X -> ok U81 X,
                    take(X1, mark X2) -> mark take(X1, X2),
                    take(mark X1, X2) -> mark take(X1, X2),
                   take(ok X1, ok X2) -> ok take(X1, X2),
             U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
      U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                     and(mark X1, X2) -> mark and(X1, X2),
                    and(ok X1, ok X2) -> ok and(X1, X2),
                  isNatIListKind ok X -> ok isNatIListKind X,
                       isNatKind ok X -> ok isNatKind X,
                  proper cons(X1, X2) -> cons(proper X1, proper X2),
                           proper 0() -> ok 0(),
                       proper zeros() -> ok zeros(),
                         proper U12 X -> U12 proper X,
                   proper isNatList X -> isNatList proper X,
                   proper U11(X1, X2) -> U11(proper X1, proper X2),
                          proper tt() -> ok tt(),
                         proper U22 X -> U22 proper X,
                       proper isNat X -> isNat proper X,
                   proper U21(X1, X2) -> U21(proper X1, proper X2),
                         proper U32 X -> U32 proper X,
                   proper U31(X1, X2) -> U31(proper X1, proper X2),
                   proper U42(X1, X2) -> U42(proper X1, proper X2),
               proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                         proper U43 X -> U43 proper X,
                  proper isNatIList X -> isNatIList proper X,
                   proper U52(X1, X2) -> U52(proper X1, proper X2),
               proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                         proper U53 X -> U53 proper X,
                   proper U62(X1, X2) -> U62(proper X1, proper X2),
               proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                         proper U63 X -> U63 proper X,
                           proper s X -> s proper X,
                      proper length X -> length proper X,
                   proper U71(X1, X2) -> U71(proper X1, proper X2),
                         proper nil() -> ok nil(),
                         proper U81 X -> U81 proper X,
                  proper take(X1, X2) -> take(proper X1, proper X2),
           proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                   proper and(X1, X2) -> and(proper X1, proper X2),
              proper isNatIListKind X -> isNatIListKind proper X,
                   proper isNatKind X -> isNatKind proper X,
                           top mark X -> top proper X,
                             top ok X -> top active X}
  EDG:
   {
    (active# isNatList take(V1, V2) -> isNatKind# V1, isNatKind# ok X -> isNatKind# X)
    (active# isNat s V1 -> isNatKind# V1, isNatKind# ok X -> isNatKind# X)
    (active# U21(tt(), V1) -> isNat# V1, isNat# ok X -> isNat# X)
    (active# isNatIList cons(V1, V2) -> isNatKind# V1, isNatKind# ok X -> isNatKind# X)
    (active# U61(tt(), V1, V2) -> isNat# V1, isNat# ok X -> isNat# X)
    (active# isNatIListKind take(V1, V2) -> isNatKind# V1, isNatKind# ok X -> isNatKind# X)
    (active# isNatKind length V1 -> isNatIListKind# V1, isNatIListKind# ok X -> isNatIListKind# X)
    (active# take(s M, cons(N, IL)) -> isNat# M, isNat# ok X -> isNat# X)
    (active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), and#(mark X1, X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), and#(mark X1, X2) -> and#(X1, X2))
    (active# U51(X1, X2, X3) -> U51#(active X1, X2, X3), U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3))
    (active# U51(X1, X2, X3) -> U51#(active X1, X2, X3), U51#(mark X1, X2, X3) -> U51#(X1, X2, X3))
    (U41#(mark X1, X2, X3) -> U41#(X1, X2, X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3))
    (U41#(mark X1, X2, X3) -> U41#(X1, X2, X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3))
    (U51#(mark X1, X2, X3) -> U51#(X1, X2, X3), U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3))
    (U51#(mark X1, X2, X3) -> U51#(X1, X2, X3), U51#(mark X1, X2, X3) -> U51#(X1, X2, X3))
    (U61#(mark X1, X2, X3) -> U61#(X1, X2, X3), U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3))
    (U61#(mark X1, X2, X3) -> U61#(X1, X2, X3), U61#(mark X1, X2, X3) -> U61#(X1, X2, X3))
    (active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)), cons#(ok X1, ok X2) -> cons#(X1, X2))
    (active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)), cons#(mark X1, X2) -> cons#(X1, X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNatKind X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNatKind X -> isNatKind# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNatIListKind X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U81 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U81 X -> U81# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# length X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# length X -> length# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# s X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U63 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U63 X -> U63# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U62(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U62(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U53 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U53 X -> U53# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNatIList X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNatIList X -> isNatIList# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U43 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U43 X -> U43# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U42(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U42(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U32 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U32 X -> U32# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNat X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNat X -> isNat# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U22 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U22 X -> U22# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNatList X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# isNatList X -> isNatList# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U12 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# U12 X -> U12# proper X)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNatKind X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNatKind X -> isNatKind# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNatIListKind X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# and(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# and(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U81 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U81 X -> U81# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# length X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# length X -> length# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# s X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# s X -> s# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U63 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U63 X -> U63# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U53 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U53 X -> U53# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNatIList X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNatIList X -> isNatIList# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U43 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U43 X -> U43# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U32 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U32 X -> U32# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNat X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNat X -> isNat# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U22 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U22 X -> U22# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNatList X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# isNatList X -> isNatList# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U12 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# U12 X -> U12# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (active# length cons(N, L) -> isNatIListKind# L, isNatIListKind# ok X -> isNatIListKind# X)
    (active# cons(X1, X2) -> cons#(active X1, X2), cons#(ok X1, ok X2) -> cons#(X1, X2))
    (active# cons(X1, X2) -> cons#(active X1, X2), cons#(mark X1, X2) -> cons#(X1, X2))
    (active# U11(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U11(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U11(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U11(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U11(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U11(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U11(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U11(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U11(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U11(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U11(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U11(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U11(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U11(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U11(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U11(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U11(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U11(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U11(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U11(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U11(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U11(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# U11(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# U11(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U11(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U11(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U11(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U11(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U11(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U11(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U11(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U11(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U11(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U11(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U11(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# U11(X1, X2) -> active# X1, active# length X -> active# X)
    (active# U11(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# U11(X1, X2) -> active# X1, active# s X -> active# X)
    (active# U11(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# U11(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# U11(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U11(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U11(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U11(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U11(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U11(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U11(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# U11(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# U11(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U11(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U11(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U11(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U11(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U11(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U11(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U11(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U11(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U11(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U11(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U11(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U11(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# U11(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# U11(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U11(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U11(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U11(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U11(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U11(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U11(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U11(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U11(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U11(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# U11(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# U11(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U11(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U11(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U11(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U11(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U11(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U11(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U11(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# U11(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# U11(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U11(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U11(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U11(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U11(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U11(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U11(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U11(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U11(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U11(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U11(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U11(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# U11(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# U11(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U11(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U11(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U21(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U21(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U21(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U21(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U21(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U21(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U21(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U21(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U21(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U21(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U21(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U21(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U21(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U21(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U21(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U21(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U21(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U21(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U21(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# U21(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# U21(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U21(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U21(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U21(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U21(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U21(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U21(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U21(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U21(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U21(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U21(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# U21(X1, X2) -> active# X1, active# length X -> active# X)
    (active# U21(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# U21(X1, X2) -> active# X1, active# s X -> active# X)
    (active# U21(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# U21(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# U21(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U21(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U21(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U21(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U21(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U21(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# U21(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# U21(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U21(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U21(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U21(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U21(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U21(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U21(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U21(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U21(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U21(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U21(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U21(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# U21(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# U21(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U21(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U21(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U21(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U21(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U21(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U21(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U21(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# U21(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# U21(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U21(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U21(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U21(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U21(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U21(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U21(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# U21(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# U21(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U21(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U21(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U21(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U21(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U21(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U21(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U21(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U21(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U21(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U21(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U21(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# U21(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# U21(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U21(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U21(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U31(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U31(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U31(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U31(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U31(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U31(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U31(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U31(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U31(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U31(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U31(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U31(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U31(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U31(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U31(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U31(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U31(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U31(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U31(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# U31(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# U31(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U31(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U31(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U31(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U31(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U31(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U31(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U31(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U31(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U31(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U31(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# U31(X1, X2) -> active# X1, active# length X -> active# X)
    (active# U31(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# U31(X1, X2) -> active# X1, active# s X -> active# X)
    (active# U31(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# U31(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# U31(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U31(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U31(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U31(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U31(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U31(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# U31(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# U31(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U31(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U31(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U31(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U31(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U31(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U31(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U31(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U31(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U31(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U31(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U31(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# U31(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# U31(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U31(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U31(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U31(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U31(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U31(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U31(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U31(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# U31(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# U31(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U31(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U31(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U31(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U31(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U31(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U31(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# U31(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# U31(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U31(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U31(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U31(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U31(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U31(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U31(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U31(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U31(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U31(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U31(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U31(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# U31(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# U31(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U31(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U31(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U42(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U42(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U42(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U42(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U42(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U42(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U42(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U42(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U42(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U42(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U42(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U42(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U42(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U42(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U42(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U42(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U42(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U42(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U42(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# U42(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# U42(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U42(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U42(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U42(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U42(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U42(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U42(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U42(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U42(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U42(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U42(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# U42(X1, X2) -> active# X1, active# length X -> active# X)
    (active# U42(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# U42(X1, X2) -> active# X1, active# s X -> active# X)
    (active# U42(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# U42(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# U42(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U42(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U42(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U42(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U42(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U42(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# U42(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# U42(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U42(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U42(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U42(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U42(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U42(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U42(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U42(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U42(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U42(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U42(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U42(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# U42(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# U42(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U42(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U42(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U42(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U42(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U42(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U42(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U42(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# U42(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# U42(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U42(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U42(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U42(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U42(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U42(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U42(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# U42(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# U42(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U42(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U42(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U42(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U42(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U42(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U42(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U42(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U42(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U42(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U42(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U42(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# U42(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# U42(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U42(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U42(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U41(X1, X2, X3) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U41(X1, X2, X3) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U41(X1, X2, X3) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U41(X1, X2, X3) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U41(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U41(X1, X2, X3) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U41(X1, X2, X3) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U41(X1, X2, X3) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U41(X1, X2, X3) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U41(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U41(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U41(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# U81 X -> U81# active X)
    (active# U41(X1, X2, X3) -> active# X1, active# U81 X -> active# X)
    (active# U41(X1, X2, X3) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U41(X1, X2, X3) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U41(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U41(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U41(X1, X2, X3) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U41(X1, X2, X3) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U41(X1, X2, X3) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U41(X1, X2, X3) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U41(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U41(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U41(X1, X2, X3) -> active# X1, active# length X -> length# active X)
    (active# U41(X1, X2, X3) -> active# X1, active# length X -> active# X)
    (active# U41(X1, X2, X3) -> active# X1, active# s X -> s# active X)
    (active# U41(X1, X2, X3) -> active# X1, active# s X -> active# X)
    (active# U41(X1, X2, X3) -> active# X1, active# U63 X -> U63# active X)
    (active# U41(X1, X2, X3) -> active# X1, active# U63 X -> active# X)
    (active# U41(X1, X2, X3) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U41(X1, X2, X3) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U41(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U41(X1, X2, X3) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U41(X1, X2, X3) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# U53 X -> U53# active X)
    (active# U41(X1, X2, X3) -> active# X1, active# U53 X -> active# X)
    (active# U41(X1, X2, X3) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U41(X1, X2, X3) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U41(X1, X2, X3) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U41(X1, X2, X3) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U41(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U41(X1, X2, X3) -> active# X1, active# U43 X -> U43# active X)
    (active# U41(X1, X2, X3) -> active# X1, active# U43 X -> active# X)
    (active# U41(X1, X2, X3) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U41(X1, X2, X3) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U41(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U41(X1, X2, X3) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U41(X1, X2, X3) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U41(X1, X2, X3) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U41(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# U32 X -> U32# active X)
    (active# U41(X1, X2, X3) -> active# X1, active# U32 X -> active# X)
    (active# U41(X1, X2, X3) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U41(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U41(X1, X2, X3) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U41(X1, X2, X3) -> active# X1, active# U22 X -> U22# active X)
    (active# U41(X1, X2, X3) -> active# X1, active# U22 X -> active# X)
    (active# U41(X1, X2, X3) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U41(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U41(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U41(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U41(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U41(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U41(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U41(X1, X2, X3) -> active# X1, active# U12 X -> U12# active X)
    (active# U41(X1, X2, X3) -> active# X1, active# U12 X -> active# X)
    (active# U41(X1, X2, X3) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U41(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U41(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U52(X1, X2) -> U52#(active X1, X2), U52#(ok X1, ok X2) -> U52#(X1, X2))
    (active# U52(X1, X2) -> U52#(active X1, X2), U52#(mark X1, X2) -> U52#(X1, X2))
    (active# U62(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U62(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U62(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U62(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U62(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U62(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U62(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U62(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U62(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U62(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U62(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U62(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U62(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U62(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U62(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U62(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U62(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U62(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U62(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U62(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U62(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U62(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# U62(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# U62(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U62(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U62(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U62(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U62(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U62(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U62(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U62(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U62(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U62(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U62(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U62(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# U62(X1, X2) -> active# X1, active# length X -> active# X)
    (active# U62(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# U62(X1, X2) -> active# X1, active# s X -> active# X)
    (active# U62(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# U62(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# U62(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U62(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U62(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U62(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U62(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U62(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U62(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# U62(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# U62(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U62(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U62(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U62(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U62(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U62(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U62(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U62(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U62(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U62(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U62(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U62(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U62(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# U62(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# U62(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U62(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U62(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U62(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U62(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U62(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U62(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U62(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U62(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U62(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# U62(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# U62(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U62(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U62(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U62(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U62(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U62(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U62(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U62(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# U62(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# U62(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U62(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U62(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U62(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U62(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U62(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U62(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U62(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U62(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U62(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U62(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U62(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# U62(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# U62(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U62(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U62(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U61(X1, X2, X3) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U61(X1, X2, X3) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U61(X1, X2, X3) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U61(X1, X2, X3) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U61(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U61(X1, X2, X3) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U61(X1, X2, X3) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U61(X1, X2, X3) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U61(X1, X2, X3) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U61(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U61(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U61(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# U81 X -> U81# active X)
    (active# U61(X1, X2, X3) -> active# X1, active# U81 X -> active# X)
    (active# U61(X1, X2, X3) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U61(X1, X2, X3) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U61(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U61(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U61(X1, X2, X3) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U61(X1, X2, X3) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U61(X1, X2, X3) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U61(X1, X2, X3) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U61(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U61(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U61(X1, X2, X3) -> active# X1, active# length X -> length# active X)
    (active# U61(X1, X2, X3) -> active# X1, active# length X -> active# X)
    (active# U61(X1, X2, X3) -> active# X1, active# s X -> s# active X)
    (active# U61(X1, X2, X3) -> active# X1, active# s X -> active# X)
    (active# U61(X1, X2, X3) -> active# X1, active# U63 X -> U63# active X)
    (active# U61(X1, X2, X3) -> active# X1, active# U63 X -> active# X)
    (active# U61(X1, X2, X3) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U61(X1, X2, X3) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U61(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U61(X1, X2, X3) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U61(X1, X2, X3) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# U53 X -> U53# active X)
    (active# U61(X1, X2, X3) -> active# X1, active# U53 X -> active# X)
    (active# U61(X1, X2, X3) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U61(X1, X2, X3) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U61(X1, X2, X3) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U61(X1, X2, X3) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U61(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U61(X1, X2, X3) -> active# X1, active# U43 X -> U43# active X)
    (active# U61(X1, X2, X3) -> active# X1, active# U43 X -> active# X)
    (active# U61(X1, X2, X3) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U61(X1, X2, X3) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U61(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U61(X1, X2, X3) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U61(X1, X2, X3) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U61(X1, X2, X3) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U61(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# U32 X -> U32# active X)
    (active# U61(X1, X2, X3) -> active# X1, active# U32 X -> active# X)
    (active# U61(X1, X2, X3) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U61(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U61(X1, X2, X3) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U61(X1, X2, X3) -> active# X1, active# U22 X -> U22# active X)
    (active# U61(X1, X2, X3) -> active# X1, active# U22 X -> active# X)
    (active# U61(X1, X2, X3) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U61(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U61(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U61(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U61(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U61(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U61(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U61(X1, X2, X3) -> active# X1, active# U12 X -> U12# active X)
    (active# U61(X1, X2, X3) -> active# X1, active# U12 X -> active# X)
    (active# U61(X1, X2, X3) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U61(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U61(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U71(X1, X2) -> U71#(active X1, X2), U71#(ok X1, ok X2) -> U71#(X1, X2))
    (active# U71(X1, X2) -> U71#(active X1, X2), U71#(mark X1, X2) -> U71#(X1, X2))
    (active# take(X1, X2) -> take#(active X1, X2), take#(ok X1, ok X2) -> take#(X1, X2))
    (active# take(X1, X2) -> take#(active X1, X2), take#(mark X1, X2) -> take#(X1, X2))
    (active# take(X1, X2) -> take#(active X1, X2), take#(X1, mark X2) -> take#(X1, X2))
    (active# and(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# and(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# and(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# and(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# and(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# and(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# and(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# and(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# and(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# and(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# and(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# and(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# and(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# and(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# and(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# and(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# and(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# and(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# and(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# and(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# and(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# and(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# and(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# and(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# and(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# and(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# and(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# and(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# and(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# and(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# and(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# and(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# and(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# and(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# and(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# and(X1, X2) -> active# X1, active# length X -> active# X)
    (active# and(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# and(X1, X2) -> active# X1, active# s X -> active# X)
    (active# and(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# and(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# and(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# and(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# and(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# and(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# and(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# and(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# and(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# and(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# and(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# and(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# and(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# and(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# and(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# and(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# and(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# and(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# and(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# and(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# and(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# and(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# and(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# and(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# and(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# and(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# and(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# and(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# and(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# and(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# and(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# and(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# and(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# and(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# and(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# and(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# and(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# and(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# and(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# and(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# and(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# and(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# and(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# and(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# and(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# and(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# and(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# and(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# and(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# and(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# and(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# and(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# and(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# and(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# and(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# and(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# and(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# and(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# and(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# and(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (proper# cons(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# cons(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# cons(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# cons(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# cons(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# cons(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# cons(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# cons(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# cons(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# cons(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# cons(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U21(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U21(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U21(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U21(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U21(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U21(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U21(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U21(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U21(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U21(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U42(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U42(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U42(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U42(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U42(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U42(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U42(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U42(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U42(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U42(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U52(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U52(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U52(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U52(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U52(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U52(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U52(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U52(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U52(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U52(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U62(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U62(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U62(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U62(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U62(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U62(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U62(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U62(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U62(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U62(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U71(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U71(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U71(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U71(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U71(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U71(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U71(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U71(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U71(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U71(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# length X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# length X -> length# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# s X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# s X -> s# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (active# U41(tt(), V1, V2) -> U42#(isNat V1, V2), U42#(ok X1, ok X2) -> U42#(X1, X2))
    (active# U41(tt(), V1, V2) -> U42#(isNat V1, V2), U42#(mark X1, X2) -> U42#(X1, X2))
    (active# U61(tt(), V1, V2) -> U62#(isNat V1, V2), U62#(ok X1, ok X2) -> U62#(X1, X2))
    (active# U61(tt(), V1, V2) -> U62#(isNat V1, V2), U62#(mark X1, X2) -> U62#(X1, X2))
    (cons#(ok X1, ok X2) -> cons#(X1, X2), cons#(ok X1, ok X2) -> cons#(X1, X2))
    (cons#(ok X1, ok X2) -> cons#(X1, X2), cons#(mark X1, X2) -> cons#(X1, X2))
    (U11#(ok X1, ok X2) -> U11#(X1, X2), U11#(ok X1, ok X2) -> U11#(X1, X2))
    (U11#(ok X1, ok X2) -> U11#(X1, X2), U11#(mark X1, X2) -> U11#(X1, X2))
    (U21#(ok X1, ok X2) -> U21#(X1, X2), U21#(ok X1, ok X2) -> U21#(X1, X2))
    (U21#(ok X1, ok X2) -> U21#(X1, X2), U21#(mark X1, X2) -> U21#(X1, X2))
    (U31#(ok X1, ok X2) -> U31#(X1, X2), U31#(ok X1, ok X2) -> U31#(X1, X2))
    (U31#(ok X1, ok X2) -> U31#(X1, X2), U31#(mark X1, X2) -> U31#(X1, X2))
    (U42#(ok X1, ok X2) -> U42#(X1, X2), U42#(ok X1, ok X2) -> U42#(X1, X2))
    (U42#(ok X1, ok X2) -> U42#(X1, X2), U42#(mark X1, X2) -> U42#(X1, X2))
    (U52#(ok X1, ok X2) -> U52#(X1, X2), U52#(ok X1, ok X2) -> U52#(X1, X2))
    (U52#(ok X1, ok X2) -> U52#(X1, X2), U52#(mark X1, X2) -> U52#(X1, X2))
    (U62#(ok X1, ok X2) -> U62#(X1, X2), U62#(ok X1, ok X2) -> U62#(X1, X2))
    (U62#(ok X1, ok X2) -> U62#(X1, X2), U62#(mark X1, X2) -> U62#(X1, X2))
    (U71#(ok X1, ok X2) -> U71#(X1, X2), U71#(ok X1, ok X2) -> U71#(X1, X2))
    (U71#(ok X1, ok X2) -> U71#(X1, X2), U71#(mark X1, X2) -> U71#(X1, X2))
    (take#(mark X1, X2) -> take#(X1, X2), take#(ok X1, ok X2) -> take#(X1, X2))
    (take#(mark X1, X2) -> take#(X1, X2), take#(mark X1, X2) -> take#(X1, X2))
    (take#(mark X1, X2) -> take#(X1, X2), take#(X1, mark X2) -> take#(X1, X2))
    (and#(mark X1, X2) -> and#(X1, X2), and#(ok X1, ok X2) -> and#(X1, X2))
    (and#(mark X1, X2) -> and#(X1, X2), and#(mark X1, X2) -> and#(X1, X2))
    (active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2), U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3))
    (active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2), U51#(mark X1, X2, X3) -> U51#(X1, X2, X3))
    (active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3))
    (active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3))
    (active# isNatIList V -> isNatIListKind# V, isNatIListKind# ok X -> isNatIListKind# X)
    (proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3), U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3))
    (proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3), U51#(mark X1, X2, X3) -> U51#(X1, X2, X3))
    (active# U12 X -> U12# active X, U12# ok X -> U12# X)
    (active# U12 X -> U12# active X, U12# mark X -> U12# X)
    (active# U32 X -> U32# active X, U32# ok X -> U32# X)
    (active# U32 X -> U32# active X, U32# mark X -> U32# X)
    (active# U53 X -> U53# active X, U53# ok X -> U53# X)
    (active# U53 X -> U53# active X, U53# mark X -> U53# X)
    (active# s X -> s# active X, s# ok X -> s# X)
    (active# s X -> s# active X, s# mark X -> s# X)
    (active# U81 X -> U81# active X, U81# ok X -> U81# X)
    (active# U81 X -> U81# active X, U81# mark X -> U81# X)
    (proper# isNatList X -> isNatList# proper X, isNatList# ok X -> isNatList# X)
    (proper# isNat X -> isNat# proper X, isNat# ok X -> isNat# X)
    (proper# U43 X -> U43# proper X, U43# ok X -> U43# X)
    (proper# U43 X -> U43# proper X, U43# mark X -> U43# X)
    (proper# U53 X -> U53# proper X, U53# ok X -> U53# X)
    (proper# U53 X -> U53# proper X, U53# mark X -> U53# X)
    (proper# s X -> s# proper X, s# ok X -> s# X)
    (proper# s X -> s# proper X, s# mark X -> s# X)
    (proper# U81 X -> U81# proper X, U81# ok X -> U81# X)
    (proper# U81 X -> U81# proper X, U81# mark X -> U81# X)
    (proper# isNatKind X -> isNatKind# proper X, isNatKind# ok X -> isNatKind# X)
    (top# ok X -> top# active X, top# ok X -> top# active X)
    (top# ok X -> top# active X, top# ok X -> active# X)
    (top# ok X -> top# active X, top# mark X -> top# proper X)
    (top# ok X -> top# active X, top# mark X -> proper# X)
    (active# U42(tt(), V2) -> U43# isNatIList V2, U43# ok X -> U43# X)
    (active# U42(tt(), V2) -> U43# isNatIList V2, U43# mark X -> U43# X)
    (active# U62(tt(), V2) -> U63# isNatIList V2, U63# ok X -> U63# X)
    (active# U62(tt(), V2) -> U63# isNatIList V2, U63# mark X -> U63# X)
    (active# U11(tt(), V1) -> U12# isNatList V1, U12# ok X -> U12# X)
    (active# U11(tt(), V1) -> U12# isNatList V1, U12# mark X -> U12# X)
    (active# take(0(), IL) -> isNatIList# IL, isNatIList# ok X -> isNatIList# X)
    (active# take(s M, cons(N, IL)) -> isNatIList# IL, isNatIList# ok X -> isNatIList# X)
    (active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4), U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4))
    (active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4), U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4))
    (U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4), U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4))
    (U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4), U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4))
    (active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(mark X1, X2) -> and#(X1, X2))
    (active# length cons(N, L) -> and#(isNatList L, isNatIListKind L), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# length cons(N, L) -> and#(isNatList L, isNatIListKind L), and#(mark X1, X2) -> and#(X1, X2))
    (active# take(X1, X2) -> take#(X1, active X2), take#(ok X1, ok X2) -> take#(X1, X2))
    (active# take(X1, X2) -> take#(X1, active X2), take#(mark X1, X2) -> take#(X1, X2))
    (active# take(X1, X2) -> take#(X1, active X2), take#(X1, mark X2) -> take#(X1, X2))
    (active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N), and#(mark X1, X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL), and#(mark X1, X2) -> and#(X1, X2))
    (active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(mark X1, X2) -> and#(X1, X2))
    (proper# U11(X1, X2) -> U11#(proper X1, proper X2), U11#(ok X1, ok X2) -> U11#(X1, X2))
    (proper# U11(X1, X2) -> U11#(proper X1, proper X2), U11#(mark X1, X2) -> U11#(X1, X2))
    (proper# U31(X1, X2) -> U31#(proper X1, proper X2), U31#(ok X1, ok X2) -> U31#(X1, X2))
    (proper# U31(X1, X2) -> U31#(proper X1, proper X2), U31#(mark X1, X2) -> U31#(X1, X2))
    (proper# U52(X1, X2) -> U52#(proper X1, proper X2), U52#(ok X1, ok X2) -> U52#(X1, X2))
    (proper# U52(X1, X2) -> U52#(proper X1, proper X2), U52#(mark X1, X2) -> U52#(X1, X2))
    (proper# U71(X1, X2) -> U71#(proper X1, proper X2), U71#(ok X1, ok X2) -> U71#(X1, X2))
    (proper# U71(X1, X2) -> U71#(proper X1, proper X2), U71#(mark X1, X2) -> U71#(X1, X2))
    (proper# and(X1, X2) -> and#(proper X1, proper X2), and#(ok X1, ok X2) -> and#(X1, X2))
    (proper# and(X1, X2) -> and#(proper X1, proper X2), and#(mark X1, X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N), U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4))
    (active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N), U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNatKind X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNatKind X -> isNatKind# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNatIListKind X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# and(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# and(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U81 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U81 X -> U81# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# length X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# length X -> length# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# s X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# s X -> s# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U63 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U63 X -> U63# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U53 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U53 X -> U53# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNatIList X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNatIList X -> isNatIList# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U43 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U43 X -> U43# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U32 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U32 X -> U32# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNat X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNat X -> isNat# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U22 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U22 X -> U22# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNatList X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# isNatList X -> isNatList# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U12 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# U12 X -> U12# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (active# length cons(N, L) -> isNat# N, isNat# ok X -> isNat# X)
    (active# take(s M, cons(N, IL)) -> isNat# N, isNat# ok X -> isNat# X)
    (active# take(X1, X2) -> active# X2, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# take(X1, X2) -> active# X2, active# isNatKind s V1 -> isNatKind# V1)
    (active# take(X1, X2) -> active# X2, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X2, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X2, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X2, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X2, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X2, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X2, active# and(X1, X2) -> and#(active X1, X2))
    (active# take(X1, X2) -> active# X2, active# and(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# take(X1, X2) -> active# X2, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# take(X1, X2) -> active# X2, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# take(X1, X2) -> active# X2, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# take(X1, X2) -> active# X2, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# take(X1, X2) -> active# X2, active# take(0(), IL) -> isNatIListKind# IL)
    (active# take(X1, X2) -> active# X2, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# take(X1, X2) -> active# X2, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# take(X1, X2) -> active# X2, active# take(0(), IL) -> isNatIList# IL)
    (active# take(X1, X2) -> active# X2, active# take(X1, X2) -> take#(active X1, X2))
    (active# take(X1, X2) -> active# X2, active# take(X1, X2) -> take#(X1, active X2))
    (active# take(X1, X2) -> active# X2, active# take(X1, X2) -> active# X2)
    (active# take(X1, X2) -> active# X2, active# take(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# U81 X -> U81# active X)
    (active# take(X1, X2) -> active# X2, active# U81 X -> active# X)
    (active# take(X1, X2) -> active# X2, active# U71(tt(), L) -> length# L)
    (active# take(X1, X2) -> active# X2, active# U71(tt(), L) -> s# length L)
    (active# take(X1, X2) -> active# X2, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# take(X1, X2) -> active# X2, active# U71(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# length cons(N, L) -> isNatKind# N)
    (active# take(X1, X2) -> active# X2, active# length cons(N, L) -> isNatIListKind# L)
    (active# take(X1, X2) -> active# X2, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# take(X1, X2) -> active# X2, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# take(X1, X2) -> active# X2, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# take(X1, X2) -> active# X2, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# take(X1, X2) -> active# X2, active# length cons(N, L) -> isNat# N)
    (active# take(X1, X2) -> active# X2, active# length cons(N, L) -> isNatList# L)
    (active# take(X1, X2) -> active# X2, active# length X -> length# active X)
    (active# take(X1, X2) -> active# X2, active# length X -> active# X)
    (active# take(X1, X2) -> active# X2, active# s X -> s# active X)
    (active# take(X1, X2) -> active# X2, active# s X -> active# X)
    (active# take(X1, X2) -> active# X2, active# U63 X -> U63# active X)
    (active# take(X1, X2) -> active# X2, active# U63 X -> active# X)
    (active# take(X1, X2) -> active# X2, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# take(X1, X2) -> active# X2, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# take(X1, X2) -> active# X2, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# take(X1, X2) -> active# X2, active# U61(X1, X2, X3) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# take(X1, X2) -> active# X2, active# U62(tt(), V2) -> isNatIList# V2)
    (active# take(X1, X2) -> active# X2, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# take(X1, X2) -> active# X2, active# U62(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# U53 X -> U53# active X)
    (active# take(X1, X2) -> active# X2, active# U53 X -> active# X)
    (active# take(X1, X2) -> active# X2, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# take(X1, X2) -> active# X2, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# take(X1, X2) -> active# X2, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# take(X1, X2) -> active# X2, active# U51(X1, X2, X3) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# take(X1, X2) -> active# X2, active# U52(tt(), V2) -> isNatList# V2)
    (active# take(X1, X2) -> active# X2, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# take(X1, X2) -> active# X2, active# U52(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X2, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X2, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X2, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# take(X1, X2) -> active# X2, active# isNatIList V -> isNatIListKind# V)
    (active# take(X1, X2) -> active# X2, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# take(X1, X2) -> active# X2, active# U43 X -> U43# active X)
    (active# take(X1, X2) -> active# X2, active# U43 X -> active# X)
    (active# take(X1, X2) -> active# X2, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# take(X1, X2) -> active# X2, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# take(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# take(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# U42(tt(), V2) -> isNatIList# V2)
    (active# take(X1, X2) -> active# X2, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# take(X1, X2) -> active# X2, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# take(X1, X2) -> active# X2, active# U42(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# U31(tt(), V) -> U32# isNatList V)
    (active# take(X1, X2) -> active# X2, active# U31(tt(), V) -> isNatList# V)
    (active# take(X1, X2) -> active# X2, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# take(X1, X2) -> active# X2, active# U31(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# U32 X -> U32# active X)
    (active# take(X1, X2) -> active# X2, active# U32 X -> active# X)
    (active# take(X1, X2) -> active# X2, active# U21(tt(), V1) -> isNat# V1)
    (active# take(X1, X2) -> active# X2, active# U21(tt(), V1) -> U22# isNat V1)
    (active# take(X1, X2) -> active# X2, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# take(X1, X2) -> active# X2, active# U21(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# isNat length V1 -> isNatIListKind# V1)
    (active# take(X1, X2) -> active# X2, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# take(X1, X2) -> active# X2, active# isNat s V1 -> isNatKind# V1)
    (active# take(X1, X2) -> active# X2, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# take(X1, X2) -> active# X2, active# U22 X -> U22# active X)
    (active# take(X1, X2) -> active# X2, active# U22 X -> active# X)
    (active# take(X1, X2) -> active# X2, active# U11(tt(), V1) -> isNatList# V1)
    (active# take(X1, X2) -> active# X2, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# take(X1, X2) -> active# X2, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# take(X1, X2) -> active# X2, active# U11(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X2, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X2, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X2, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# take(X1, X2) -> active# X2, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X2, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X2, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X2, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# take(X1, X2) -> active# X2, active# U12 X -> U12# active X)
    (active# take(X1, X2) -> active# X2, active# U12 X -> active# X)
    (active# take(X1, X2) -> active# X2, active# zeros() -> cons#(0(), zeros()))
    (active# take(X1, X2) -> active# X2, active# cons(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X2, active# cons(X1, X2) -> cons#(active X1, X2))
    (proper# U11(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U11(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U11(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U11(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U11(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U11(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U11(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U11(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U11(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U11(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U11(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U31(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U31(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U31(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U31(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U31(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U31(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U31(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U31(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U31(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U31(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# length X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# length X -> length# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# s X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# length X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# length X -> length# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# s X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# length X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# length X -> length# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# s X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# take(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# take(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# take(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# take(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# take(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# take(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# take(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# take(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# take(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# take(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# take(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# and(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# and(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# and(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# and(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# and(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# and(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# and(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# and(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# and(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# and(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# and(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (active# isNat length V1 -> U11#(isNatIListKind V1, V1), U11#(ok X1, ok X2) -> U11#(X1, X2))
    (active# isNat length V1 -> U11#(isNatIListKind V1, V1), U11#(mark X1, X2) -> U11#(X1, X2))
    (active# isNatList take(V1, V2) -> isNatIListKind# V2, isNatIListKind# ok X -> isNatIListKind# X)
    (active# isNatIList cons(V1, V2) -> isNatIListKind# V2, isNatIListKind# ok X -> isNatIListKind# X)
    (active# U62(tt(), V2) -> isNatIList# V2, isNatIList# ok X -> isNatIList# X)
    (active# isNatIListKind take(V1, V2) -> isNatIListKind# V2, isNatIListKind# ok X -> isNatIListKind# X)
    (active# U12 X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U12 X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (active# U12 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U12 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U12 X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U12 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U12 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U12 X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U12 X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (active# U12 X -> active# X, active# and(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U12 X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U12 X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U12 X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U12 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U12 X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U12 X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U12 X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U12 X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (active# U12 X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (active# U12 X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (active# U12 X -> active# X, active# take(X1, X2) -> active# X2)
    (active# U12 X -> active# X, active# take(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# U81 X -> U81# active X)
    (active# U12 X -> active# X, active# U81 X -> active# X)
    (active# U12 X -> active# X, active# U71(tt(), L) -> length# L)
    (active# U12 X -> active# X, active# U71(tt(), L) -> s# length L)
    (active# U12 X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U12 X -> active# X, active# U71(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (active# U12 X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (active# U12 X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U12 X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U12 X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U12 X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U12 X -> active# X, active# length cons(N, L) -> isNat# N)
    (active# U12 X -> active# X, active# length cons(N, L) -> isNatList# L)
    (active# U12 X -> active# X, active# length X -> length# active X)
    (active# U12 X -> active# X, active# length X -> active# X)
    (active# U12 X -> active# X, active# s X -> s# active X)
    (active# U12 X -> active# X, active# s X -> active# X)
    (active# U12 X -> active# X, active# U63 X -> U63# active X)
    (active# U12 X -> active# X, active# U63 X -> active# X)
    (active# U12 X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U12 X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U12 X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U12 X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (active# U12 X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U12 X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U12 X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U12 X -> active# X, active# U62(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# U53 X -> U53# active X)
    (active# U12 X -> active# X, active# U53 X -> active# X)
    (active# U12 X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U12 X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U12 X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U12 X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (active# U12 X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U12 X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (active# U12 X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U12 X -> active# X, active# U52(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U12 X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U12 X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U12 X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U12 X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (active# U12 X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U12 X -> active# X, active# U43 X -> U43# active X)
    (active# U12 X -> active# X, active# U43 X -> active# X)
    (active# U12 X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U12 X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U12 X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U12 X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (active# U12 X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U12 X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U12 X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U12 X -> active# X, active# U42(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (active# U12 X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (active# U12 X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U12 X -> active# X, active# U31(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# U32 X -> U32# active X)
    (active# U12 X -> active# X, active# U32 X -> active# X)
    (active# U12 X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (active# U12 X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U12 X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U12 X -> active# X, active# U21(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (active# U12 X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U12 X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (active# U12 X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U12 X -> active# X, active# U22 X -> U22# active X)
    (active# U12 X -> active# X, active# U22 X -> active# X)
    (active# U12 X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (active# U12 X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U12 X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U12 X -> active# X, active# U11(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U12 X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U12 X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U12 X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U12 X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U12 X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U12 X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U12 X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U12 X -> active# X, active# U12 X -> U12# active X)
    (active# U12 X -> active# X, active# U12 X -> active# X)
    (active# U12 X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (active# U12 X -> active# X, active# cons(X1, X2) -> active# X1)
    (active# U12 X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U32 X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U32 X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (active# U32 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U32 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U32 X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U32 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U32 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U32 X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U32 X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (active# U32 X -> active# X, active# and(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U32 X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U32 X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U32 X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U32 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U32 X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U32 X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U32 X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U32 X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (active# U32 X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (active# U32 X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (active# U32 X -> active# X, active# take(X1, X2) -> active# X2)
    (active# U32 X -> active# X, active# take(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# U81 X -> U81# active X)
    (active# U32 X -> active# X, active# U81 X -> active# X)
    (active# U32 X -> active# X, active# U71(tt(), L) -> length# L)
    (active# U32 X -> active# X, active# U71(tt(), L) -> s# length L)
    (active# U32 X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U32 X -> active# X, active# U71(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (active# U32 X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (active# U32 X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U32 X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U32 X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U32 X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U32 X -> active# X, active# length cons(N, L) -> isNat# N)
    (active# U32 X -> active# X, active# length cons(N, L) -> isNatList# L)
    (active# U32 X -> active# X, active# length X -> length# active X)
    (active# U32 X -> active# X, active# length X -> active# X)
    (active# U32 X -> active# X, active# s X -> s# active X)
    (active# U32 X -> active# X, active# s X -> active# X)
    (active# U32 X -> active# X, active# U63 X -> U63# active X)
    (active# U32 X -> active# X, active# U63 X -> active# X)
    (active# U32 X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U32 X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U32 X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U32 X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (active# U32 X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U32 X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U32 X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U32 X -> active# X, active# U62(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# U53 X -> U53# active X)
    (active# U32 X -> active# X, active# U53 X -> active# X)
    (active# U32 X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U32 X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U32 X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U32 X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (active# U32 X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U32 X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (active# U32 X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U32 X -> active# X, active# U52(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U32 X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U32 X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U32 X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U32 X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (active# U32 X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U32 X -> active# X, active# U43 X -> U43# active X)
    (active# U32 X -> active# X, active# U43 X -> active# X)
    (active# U32 X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U32 X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U32 X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U32 X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (active# U32 X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U32 X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U32 X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U32 X -> active# X, active# U42(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (active# U32 X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (active# U32 X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U32 X -> active# X, active# U31(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# U32 X -> U32# active X)
    (active# U32 X -> active# X, active# U32 X -> active# X)
    (active# U32 X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (active# U32 X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U32 X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U32 X -> active# X, active# U21(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (active# U32 X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U32 X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (active# U32 X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U32 X -> active# X, active# U22 X -> U22# active X)
    (active# U32 X -> active# X, active# U22 X -> active# X)
    (active# U32 X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (active# U32 X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U32 X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U32 X -> active# X, active# U11(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U32 X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U32 X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U32 X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U32 X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U32 X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U32 X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U32 X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U32 X -> active# X, active# U12 X -> U12# active X)
    (active# U32 X -> active# X, active# U12 X -> active# X)
    (active# U32 X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (active# U32 X -> active# X, active# cons(X1, X2) -> active# X1)
    (active# U32 X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U53 X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U53 X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (active# U53 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U53 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U53 X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U53 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U53 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U53 X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U53 X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (active# U53 X -> active# X, active# and(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U53 X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U53 X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U53 X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U53 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U53 X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U53 X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U53 X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U53 X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (active# U53 X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (active# U53 X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (active# U53 X -> active# X, active# take(X1, X2) -> active# X2)
    (active# U53 X -> active# X, active# take(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# U81 X -> U81# active X)
    (active# U53 X -> active# X, active# U81 X -> active# X)
    (active# U53 X -> active# X, active# U71(tt(), L) -> length# L)
    (active# U53 X -> active# X, active# U71(tt(), L) -> s# length L)
    (active# U53 X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U53 X -> active# X, active# U71(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (active# U53 X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (active# U53 X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U53 X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U53 X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U53 X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U53 X -> active# X, active# length cons(N, L) -> isNat# N)
    (active# U53 X -> active# X, active# length cons(N, L) -> isNatList# L)
    (active# U53 X -> active# X, active# length X -> length# active X)
    (active# U53 X -> active# X, active# length X -> active# X)
    (active# U53 X -> active# X, active# s X -> s# active X)
    (active# U53 X -> active# X, active# s X -> active# X)
    (active# U53 X -> active# X, active# U63 X -> U63# active X)
    (active# U53 X -> active# X, active# U63 X -> active# X)
    (active# U53 X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U53 X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U53 X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U53 X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (active# U53 X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U53 X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U53 X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U53 X -> active# X, active# U62(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# U53 X -> U53# active X)
    (active# U53 X -> active# X, active# U53 X -> active# X)
    (active# U53 X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U53 X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U53 X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U53 X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (active# U53 X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U53 X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (active# U53 X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U53 X -> active# X, active# U52(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U53 X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U53 X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U53 X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U53 X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (active# U53 X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U53 X -> active# X, active# U43 X -> U43# active X)
    (active# U53 X -> active# X, active# U43 X -> active# X)
    (active# U53 X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U53 X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U53 X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U53 X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (active# U53 X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U53 X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U53 X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U53 X -> active# X, active# U42(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (active# U53 X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (active# U53 X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U53 X -> active# X, active# U31(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# U32 X -> U32# active X)
    (active# U53 X -> active# X, active# U32 X -> active# X)
    (active# U53 X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (active# U53 X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U53 X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U53 X -> active# X, active# U21(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (active# U53 X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U53 X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (active# U53 X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U53 X -> active# X, active# U22 X -> U22# active X)
    (active# U53 X -> active# X, active# U22 X -> active# X)
    (active# U53 X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (active# U53 X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U53 X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U53 X -> active# X, active# U11(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U53 X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U53 X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U53 X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U53 X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U53 X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U53 X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U53 X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U53 X -> active# X, active# U12 X -> U12# active X)
    (active# U53 X -> active# X, active# U12 X -> active# X)
    (active# U53 X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (active# U53 X -> active# X, active# cons(X1, X2) -> active# X1)
    (active# U53 X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# s X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# s X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (active# s X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# s X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# s X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# s X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# s X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# s X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# s X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (active# s X -> active# X, active# and(X1, X2) -> active# X1)
    (active# s X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# s X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# s X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# s X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# s X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# s X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (active# s X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# s X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# s X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (active# s X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (active# s X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (active# s X -> active# X, active# take(X1, X2) -> active# X2)
    (active# s X -> active# X, active# take(X1, X2) -> active# X1)
    (active# s X -> active# X, active# U81 X -> U81# active X)
    (active# s X -> active# X, active# U81 X -> active# X)
    (active# s X -> active# X, active# U71(tt(), L) -> length# L)
    (active# s X -> active# X, active# U71(tt(), L) -> s# length L)
    (active# s X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# s X -> active# X, active# U71(X1, X2) -> active# X1)
    (active# s X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (active# s X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (active# s X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# s X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# s X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# s X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# s X -> active# X, active# length cons(N, L) -> isNat# N)
    (active# s X -> active# X, active# length cons(N, L) -> isNatList# L)
    (active# s X -> active# X, active# length X -> length# active X)
    (active# s X -> active# X, active# length X -> active# X)
    (active# s X -> active# X, active# s X -> s# active X)
    (active# s X -> active# X, active# s X -> active# X)
    (active# s X -> active# X, active# U63 X -> U63# active X)
    (active# s X -> active# X, active# U63 X -> active# X)
    (active# s X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# s X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# s X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# s X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (active# s X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# s X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (active# s X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# s X -> active# X, active# U62(X1, X2) -> active# X1)
    (active# s X -> active# X, active# U53 X -> U53# active X)
    (active# s X -> active# X, active# U53 X -> active# X)
    (active# s X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# s X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# s X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# s X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (active# s X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# s X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (active# s X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# s X -> active# X, active# U52(X1, X2) -> active# X1)
    (active# s X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# s X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# s X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# s X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# s X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (active# s X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# s X -> active# X, active# U43 X -> U43# active X)
    (active# s X -> active# X, active# U43 X -> active# X)
    (active# s X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# s X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# s X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# s X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (active# s X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (active# s X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# s X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# s X -> active# X, active# U42(X1, X2) -> active# X1)
    (active# s X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (active# s X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (active# s X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# s X -> active# X, active# U31(X1, X2) -> active# X1)
    (active# s X -> active# X, active# U32 X -> U32# active X)
    (active# s X -> active# X, active# U32 X -> active# X)
    (active# s X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (active# s X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (active# s X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# s X -> active# X, active# U21(X1, X2) -> active# X1)
    (active# s X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (active# s X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# s X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (active# s X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# s X -> active# X, active# U22 X -> U22# active X)
    (active# s X -> active# X, active# U22 X -> active# X)
    (active# s X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (active# s X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# s X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# s X -> active# X, active# U11(X1, X2) -> active# X1)
    (active# s X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# s X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# s X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# s X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# s X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# s X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# s X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# s X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# s X -> active# X, active# U12 X -> U12# active X)
    (active# s X -> active# X, active# U12 X -> active# X)
    (active# s X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (active# s X -> active# X, active# cons(X1, X2) -> active# X1)
    (active# s X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U81 X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U81 X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (active# U81 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U81 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U81 X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U81 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U81 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U81 X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U81 X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (active# U81 X -> active# X, active# and(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U81 X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U81 X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U81 X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U81 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U81 X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U81 X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U81 X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U81 X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (active# U81 X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (active# U81 X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (active# U81 X -> active# X, active# take(X1, X2) -> active# X2)
    (active# U81 X -> active# X, active# take(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# U81 X -> U81# active X)
    (active# U81 X -> active# X, active# U81 X -> active# X)
    (active# U81 X -> active# X, active# U71(tt(), L) -> length# L)
    (active# U81 X -> active# X, active# U71(tt(), L) -> s# length L)
    (active# U81 X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U81 X -> active# X, active# U71(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (active# U81 X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (active# U81 X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U81 X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U81 X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U81 X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U81 X -> active# X, active# length cons(N, L) -> isNat# N)
    (active# U81 X -> active# X, active# length cons(N, L) -> isNatList# L)
    (active# U81 X -> active# X, active# length X -> length# active X)
    (active# U81 X -> active# X, active# length X -> active# X)
    (active# U81 X -> active# X, active# s X -> s# active X)
    (active# U81 X -> active# X, active# s X -> active# X)
    (active# U81 X -> active# X, active# U63 X -> U63# active X)
    (active# U81 X -> active# X, active# U63 X -> active# X)
    (active# U81 X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U81 X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U81 X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U81 X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (active# U81 X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U81 X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U81 X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U81 X -> active# X, active# U62(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# U53 X -> U53# active X)
    (active# U81 X -> active# X, active# U53 X -> active# X)
    (active# U81 X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U81 X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U81 X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U81 X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (active# U81 X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U81 X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (active# U81 X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U81 X -> active# X, active# U52(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U81 X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U81 X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U81 X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U81 X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (active# U81 X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U81 X -> active# X, active# U43 X -> U43# active X)
    (active# U81 X -> active# X, active# U43 X -> active# X)
    (active# U81 X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U81 X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U81 X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U81 X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (active# U81 X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U81 X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U81 X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U81 X -> active# X, active# U42(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (active# U81 X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (active# U81 X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U81 X -> active# X, active# U31(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# U32 X -> U32# active X)
    (active# U81 X -> active# X, active# U32 X -> active# X)
    (active# U81 X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (active# U81 X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U81 X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U81 X -> active# X, active# U21(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (active# U81 X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U81 X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (active# U81 X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U81 X -> active# X, active# U22 X -> U22# active X)
    (active# U81 X -> active# X, active# U22 X -> active# X)
    (active# U81 X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (active# U81 X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U81 X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U81 X -> active# X, active# U11(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U81 X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U81 X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U81 X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U81 X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U81 X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U81 X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U81 X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U81 X -> active# X, active# U12 X -> U12# active X)
    (active# U81 X -> active# X, active# U12 X -> active# X)
    (active# U81 X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (active# U81 X -> active# X, active# cons(X1, X2) -> active# X1)
    (active# U81 X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (U12# mark X -> U12# X, U12# ok X -> U12# X)
    (U12# mark X -> U12# X, U12# mark X -> U12# X)
    (isNatList# ok X -> isNatList# X, isNatList# ok X -> isNatList# X)
    (U22# ok X -> U22# X, U22# ok X -> U22# X)
    (U22# ok X -> U22# X, U22# mark X -> U22# X)
    (U32# mark X -> U32# X, U32# ok X -> U32# X)
    (U32# mark X -> U32# X, U32# mark X -> U32# X)
    (U43# mark X -> U43# X, U43# ok X -> U43# X)
    (U43# mark X -> U43# X, U43# mark X -> U43# X)
    (isNatIList# ok X -> isNatIList# X, isNatIList# ok X -> isNatIList# X)
    (U53# ok X -> U53# X, U53# ok X -> U53# X)
    (U53# ok X -> U53# X, U53# mark X -> U53# X)
    (U63# ok X -> U63# X, U63# ok X -> U63# X)
    (U63# ok X -> U63# X, U63# mark X -> U63# X)
    (s# ok X -> s# X, s# ok X -> s# X)
    (s# ok X -> s# X, s# mark X -> s# X)
    (length# ok X -> length# X, length# ok X -> length# X)
    (length# ok X -> length# X, length# mark X -> length# X)
    (U81# ok X -> U81# X, U81# ok X -> U81# X)
    (U81# ok X -> U81# X, U81# mark X -> U81# X)
    (isNatKind# ok X -> isNatKind# X, isNatKind# ok X -> isNatKind# X)
    (proper# isNatList X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# isNatList X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# isNatList X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# isNatList X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# isNatList X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# isNatList X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# isNatList X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# isNatList X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# isNatList X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# isNatList X -> proper# X, proper# U81 X -> proper# X)
    (proper# isNatList X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# isNatList X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# isNatList X -> proper# X, proper# length X -> proper# X)
    (proper# isNatList X -> proper# X, proper# length X -> length# proper X)
    (proper# isNatList X -> proper# X, proper# s X -> proper# X)
    (proper# isNatList X -> proper# X, proper# s X -> s# proper X)
    (proper# isNatList X -> proper# X, proper# U63 X -> proper# X)
    (proper# isNatList X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# isNatList X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# isNatList X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# isNatList X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# isNatList X -> proper# X, proper# U53 X -> proper# X)
    (proper# isNatList X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# isNatList X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# isNatList X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# isNatList X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# isNatList X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# isNatList X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# isNatList X -> proper# X, proper# U43 X -> proper# X)
    (proper# isNatList X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# isNatList X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# isNatList X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# isNatList X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# isNatList X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# isNatList X -> proper# X, proper# U32 X -> proper# X)
    (proper# isNatList X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# isNatList X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# isNatList X -> proper# X, proper# isNat X -> proper# X)
    (proper# isNatList X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# isNatList X -> proper# X, proper# U22 X -> proper# X)
    (proper# isNatList X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# isNatList X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# isNatList X -> proper# X, proper# isNatList X -> proper# X)
    (proper# isNatList X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# isNatList X -> proper# X, proper# U12 X -> proper# X)
    (proper# isNatList X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# isNatList X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# isNatList X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# isNatList X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# isNat X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# isNat X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# isNat X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# isNat X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# isNat X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# isNat X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# isNat X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# U81 X -> proper# X)
    (proper# isNat X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# isNat X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# length X -> proper# X)
    (proper# isNat X -> proper# X, proper# length X -> length# proper X)
    (proper# isNat X -> proper# X, proper# s X -> proper# X)
    (proper# isNat X -> proper# X, proper# s X -> s# proper X)
    (proper# isNat X -> proper# X, proper# U63 X -> proper# X)
    (proper# isNat X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# isNat X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# isNat X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# isNat X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# U53 X -> proper# X)
    (proper# isNat X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# isNat X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# isNat X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# isNat X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# isNat X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# isNat X -> proper# X, proper# U43 X -> proper# X)
    (proper# isNat X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# isNat X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# isNat X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# isNat X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# U32 X -> proper# X)
    (proper# isNat X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# isNat X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# isNat X -> proper# X)
    (proper# isNat X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# isNat X -> proper# X, proper# U22 X -> proper# X)
    (proper# isNat X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# isNat X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# isNat X -> proper# X, proper# isNatList X -> proper# X)
    (proper# isNat X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# isNat X -> proper# X, proper# U12 X -> proper# X)
    (proper# isNat X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# isNat X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# isNat X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# isNat X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# U43 X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# U43 X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# U43 X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U43 X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U43 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U43 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U43 X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# U81 X -> proper# X)
    (proper# U43 X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# U43 X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# length X -> proper# X)
    (proper# U43 X -> proper# X, proper# length X -> length# proper X)
    (proper# U43 X -> proper# X, proper# s X -> proper# X)
    (proper# U43 X -> proper# X, proper# s X -> s# proper X)
    (proper# U43 X -> proper# X, proper# U63 X -> proper# X)
    (proper# U43 X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# U43 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U43 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U43 X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# U53 X -> proper# X)
    (proper# U43 X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# U43 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U43 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U43 X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# U43 X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# U43 X -> proper# X, proper# U43 X -> proper# X)
    (proper# U43 X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# U43 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U43 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U43 X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# U32 X -> proper# X)
    (proper# U43 X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# U43 X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# isNat X -> proper# X)
    (proper# U43 X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# U43 X -> proper# X, proper# U22 X -> proper# X)
    (proper# U43 X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# U43 X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U43 X -> proper# X, proper# isNatList X -> proper# X)
    (proper# U43 X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# U43 X -> proper# X, proper# U12 X -> proper# X)
    (proper# U43 X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# U43 X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# U43 X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# U43 X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# U53 X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# U53 X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# U53 X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U53 X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U53 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U53 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U53 X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# U81 X -> proper# X)
    (proper# U53 X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# U53 X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# length X -> proper# X)
    (proper# U53 X -> proper# X, proper# length X -> length# proper X)
    (proper# U53 X -> proper# X, proper# s X -> proper# X)
    (proper# U53 X -> proper# X, proper# s X -> s# proper X)
    (proper# U53 X -> proper# X, proper# U63 X -> proper# X)
    (proper# U53 X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# U53 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U53 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U53 X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# U53 X -> proper# X)
    (proper# U53 X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# U53 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U53 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U53 X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# U53 X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# U53 X -> proper# X, proper# U43 X -> proper# X)
    (proper# U53 X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# U53 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U53 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U53 X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# U32 X -> proper# X)
    (proper# U53 X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# U53 X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# isNat X -> proper# X)
    (proper# U53 X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# U53 X -> proper# X, proper# U22 X -> proper# X)
    (proper# U53 X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# U53 X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U53 X -> proper# X, proper# isNatList X -> proper# X)
    (proper# U53 X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# U53 X -> proper# X, proper# U12 X -> proper# X)
    (proper# U53 X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# U53 X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# U53 X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# U53 X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# s X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# s X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# s X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# s X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# s X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# s X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# s X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# s X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# s X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# U81 X -> proper# X)
    (proper# s X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# s X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# length X -> proper# X)
    (proper# s X -> proper# X, proper# length X -> length# proper X)
    (proper# s X -> proper# X, proper# s X -> proper# X)
    (proper# s X -> proper# X, proper# s X -> s# proper X)
    (proper# s X -> proper# X, proper# U63 X -> proper# X)
    (proper# s X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# s X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# s X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# s X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# s X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# s X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# U53 X -> proper# X)
    (proper# s X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# s X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# s X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# s X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# s X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# s X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# s X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# s X -> proper# X, proper# U43 X -> proper# X)
    (proper# s X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# s X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# U32 X -> proper# X)
    (proper# s X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# s X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# isNat X -> proper# X)
    (proper# s X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# s X -> proper# X, proper# U22 X -> proper# X)
    (proper# s X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# s X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# s X -> proper# X, proper# isNatList X -> proper# X)
    (proper# s X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# s X -> proper# X, proper# U12 X -> proper# X)
    (proper# s X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# s X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# s X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# s X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# U81 X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# U81 X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# U81 X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U81 X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U81 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U81 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U81 X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# U81 X -> proper# X)
    (proper# U81 X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# U81 X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# length X -> proper# X)
    (proper# U81 X -> proper# X, proper# length X -> length# proper X)
    (proper# U81 X -> proper# X, proper# s X -> proper# X)
    (proper# U81 X -> proper# X, proper# s X -> s# proper X)
    (proper# U81 X -> proper# X, proper# U63 X -> proper# X)
    (proper# U81 X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# U81 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U81 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U81 X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# U53 X -> proper# X)
    (proper# U81 X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# U81 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U81 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U81 X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# U81 X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# U81 X -> proper# X, proper# U43 X -> proper# X)
    (proper# U81 X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# U81 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U81 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U81 X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# U32 X -> proper# X)
    (proper# U81 X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# U81 X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# isNat X -> proper# X)
    (proper# U81 X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# U81 X -> proper# X, proper# U22 X -> proper# X)
    (proper# U81 X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# U81 X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U81 X -> proper# X, proper# isNatList X -> proper# X)
    (proper# U81 X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# U81 X -> proper# X, proper# U12 X -> proper# X)
    (proper# U81 X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# U81 X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# U81 X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# U81 X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# isNatKind X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# isNatKind X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# isNatKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# isNatKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# isNatKind X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# U81 X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# isNatKind X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# length X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# length X -> length# proper X)
    (proper# isNatKind X -> proper# X, proper# s X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# s X -> s# proper X)
    (proper# isNatKind X -> proper# X, proper# U63 X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# isNatKind X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# isNatKind X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# isNatKind X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# U53 X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# isNatKind X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# isNatKind X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# isNatKind X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# isNatKind X -> proper# X, proper# U43 X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# isNatKind X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# isNatKind X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# isNatKind X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# U32 X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# isNatKind X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# isNat X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# isNatKind X -> proper# X, proper# U22 X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# isNatKind X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# isNatKind X -> proper# X, proper# isNatList X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# isNatKind X -> proper# X, proper# U12 X -> proper# X)
    (proper# isNatKind X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# isNatKind X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# isNatKind X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# isNatKind X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (top# ok X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (top# ok X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (top# ok X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (top# ok X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (top# ok X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (top# ok X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (top# ok X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (top# ok X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (top# ok X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (top# ok X -> active# X, active# and(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (top# ok X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (top# ok X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (top# ok X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (top# ok X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (top# ok X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (top# ok X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (top# ok X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (top# ok X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (top# ok X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (top# ok X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (top# ok X -> active# X, active# take(X1, X2) -> active# X2)
    (top# ok X -> active# X, active# take(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# U81 X -> U81# active X)
    (top# ok X -> active# X, active# U81 X -> active# X)
    (top# ok X -> active# X, active# U71(tt(), L) -> length# L)
    (top# ok X -> active# X, active# U71(tt(), L) -> s# length L)
    (top# ok X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (top# ok X -> active# X, active# U71(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (top# ok X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (top# ok X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (top# ok X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (top# ok X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (top# ok X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (top# ok X -> active# X, active# length cons(N, L) -> isNat# N)
    (top# ok X -> active# X, active# length cons(N, L) -> isNatList# L)
    (top# ok X -> active# X, active# length X -> length# active X)
    (top# ok X -> active# X, active# length X -> active# X)
    (top# ok X -> active# X, active# s X -> s# active X)
    (top# ok X -> active# X, active# s X -> active# X)
    (top# ok X -> active# X, active# U63 X -> U63# active X)
    (top# ok X -> active# X, active# U63 X -> active# X)
    (top# ok X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (top# ok X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (top# ok X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (top# ok X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (top# ok X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (top# ok X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (top# ok X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (top# ok X -> active# X, active# U62(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# U53 X -> U53# active X)
    (top# ok X -> active# X, active# U53 X -> active# X)
    (top# ok X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (top# ok X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (top# ok X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (top# ok X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (top# ok X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (top# ok X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (top# ok X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (top# ok X -> active# X, active# U52(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (top# ok X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (top# ok X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (top# ok X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (top# ok X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (top# ok X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (top# ok X -> active# X, active# U43 X -> U43# active X)
    (top# ok X -> active# X, active# U43 X -> active# X)
    (top# ok X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (top# ok X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (top# ok X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (top# ok X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (top# ok X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (top# ok X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (top# ok X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (top# ok X -> active# X, active# U42(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (top# ok X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (top# ok X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (top# ok X -> active# X, active# U31(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# U32 X -> U32# active X)
    (top# ok X -> active# X, active# U32 X -> active# X)
    (top# ok X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (top# ok X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (top# ok X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (top# ok X -> active# X, active# U21(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (top# ok X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (top# ok X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (top# ok X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (top# ok X -> active# X, active# U22 X -> U22# active X)
    (top# ok X -> active# X, active# U22 X -> active# X)
    (top# ok X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (top# ok X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (top# ok X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (top# ok X -> active# X, active# U11(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (top# ok X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (top# ok X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (top# ok X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (top# ok X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (top# ok X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (top# ok X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (top# ok X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (top# ok X -> active# X, active# U12 X -> U12# active X)
    (top# ok X -> active# X, active# U12 X -> active# X)
    (top# ok X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (top# ok X -> active# X, active# cons(X1, X2) -> active# X1)
    (top# ok X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (top# mark X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# U12 X -> U12# proper X)
    (top# mark X -> proper# X, proper# U12 X -> proper# X)
    (top# mark X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (top# mark X -> proper# X, proper# isNatList X -> proper# X)
    (top# mark X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# U22 X -> U22# proper X)
    (top# mark X -> proper# X, proper# U22 X -> proper# X)
    (top# mark X -> proper# X, proper# isNat X -> isNat# proper X)
    (top# mark X -> proper# X, proper# isNat X -> proper# X)
    (top# mark X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# U32 X -> U32# proper X)
    (top# mark X -> proper# X, proper# U32 X -> proper# X)
    (top# mark X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (top# mark X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (top# mark X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (top# mark X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (top# mark X -> proper# X, proper# U43 X -> U43# proper X)
    (top# mark X -> proper# X, proper# U43 X -> proper# X)
    (top# mark X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (top# mark X -> proper# X, proper# isNatIList X -> proper# X)
    (top# mark X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (top# mark X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (top# mark X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (top# mark X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (top# mark X -> proper# X, proper# U53 X -> U53# proper X)
    (top# mark X -> proper# X, proper# U53 X -> proper# X)
    (top# mark X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (top# mark X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (top# mark X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (top# mark X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (top# mark X -> proper# X, proper# U63 X -> U63# proper X)
    (top# mark X -> proper# X, proper# U63 X -> proper# X)
    (top# mark X -> proper# X, proper# s X -> s# proper X)
    (top# mark X -> proper# X, proper# s X -> proper# X)
    (top# mark X -> proper# X, proper# length X -> length# proper X)
    (top# mark X -> proper# X, proper# length X -> proper# X)
    (top# mark X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# U81 X -> U81# proper X)
    (top# mark X -> proper# X, proper# U81 X -> proper# X)
    (top# mark X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (top# mark X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (top# mark X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (top# mark X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (top# mark X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (top# mark X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (top# mark X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (top# mark X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (top# mark X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (top# mark X -> proper# X, proper# isNatIListKind X -> proper# X)
    (top# mark X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (top# mark X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# isNatIListKind X -> proper# X, proper# U12 X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# isNatIListKind X -> proper# X, proper# isNatList X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# isNatIListKind X -> proper# X, proper# U22 X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# isNatIListKind X -> proper# X, proper# isNat X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# isNatIListKind X -> proper# X, proper# U32 X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# isNatIListKind X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# isNatIListKind X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# isNatIListKind X -> proper# X, proper# U43 X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# isNatIListKind X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# isNatIListKind X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# isNatIListKind X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# isNatIListKind X -> proper# X, proper# U53 X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# isNatIListKind X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# isNatIListKind X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# isNatIListKind X -> proper# X, proper# U63 X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# s X -> s# proper X)
    (proper# isNatIListKind X -> proper# X, proper# s X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# length X -> length# proper X)
    (proper# isNatIListKind X -> proper# X, proper# length X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# isNatIListKind X -> proper# X, proper# U81 X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# isNatIListKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# isNatIListKind X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# isNatIListKind X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# isNatIListKind X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# isNatIListKind X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# isNatIListKind X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# isNatIListKind X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# isNatIListKind X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# isNatIListKind X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# length X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# length X -> proper# X, proper# U12 X -> proper# X)
    (proper# length X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# length X -> proper# X, proper# isNatList X -> proper# X)
    (proper# length X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# length X -> proper# X, proper# U22 X -> proper# X)
    (proper# length X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# length X -> proper# X, proper# isNat X -> proper# X)
    (proper# length X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# length X -> proper# X, proper# U32 X -> proper# X)
    (proper# length X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# length X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# length X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# length X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# length X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# length X -> proper# X, proper# U43 X -> proper# X)
    (proper# length X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# length X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# length X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# length X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# length X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# length X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# length X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# length X -> proper# X, proper# U53 X -> proper# X)
    (proper# length X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# length X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# length X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# length X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# length X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# length X -> proper# X, proper# U63 X -> proper# X)
    (proper# length X -> proper# X, proper# s X -> s# proper X)
    (proper# length X -> proper# X, proper# s X -> proper# X)
    (proper# length X -> proper# X, proper# length X -> length# proper X)
    (proper# length X -> proper# X, proper# length X -> proper# X)
    (proper# length X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# length X -> proper# X, proper# U81 X -> proper# X)
    (proper# length X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# length X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# length X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# length X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# length X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# length X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# length X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# length X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# length X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# length X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# length X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# length X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# U63 X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# U63 X -> proper# X, proper# U12 X -> proper# X)
    (proper# U63 X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# U63 X -> proper# X, proper# isNatList X -> proper# X)
    (proper# U63 X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# U63 X -> proper# X, proper# U22 X -> proper# X)
    (proper# U63 X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# U63 X -> proper# X, proper# isNat X -> proper# X)
    (proper# U63 X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# U63 X -> proper# X, proper# U32 X -> proper# X)
    (proper# U63 X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U63 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U63 X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# U63 X -> proper# X, proper# U43 X -> proper# X)
    (proper# U63 X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# U63 X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# U63 X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U63 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U63 X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# U63 X -> proper# X, proper# U53 X -> proper# X)
    (proper# U63 X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U63 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U63 X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# U63 X -> proper# X, proper# U63 X -> proper# X)
    (proper# U63 X -> proper# X, proper# s X -> s# proper X)
    (proper# U63 X -> proper# X, proper# s X -> proper# X)
    (proper# U63 X -> proper# X, proper# length X -> length# proper X)
    (proper# U63 X -> proper# X, proper# length X -> proper# X)
    (proper# U63 X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# U63 X -> proper# X, proper# U81 X -> proper# X)
    (proper# U63 X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U63 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U63 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U63 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U63 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U63 X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U63 X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# U63 X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# U63 X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U63 X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# U63 X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# U63 X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# isNatIList X -> proper# X, proper# U12 X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# isNatIList X -> proper# X, proper# isNatList X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# isNatIList X -> proper# X, proper# U22 X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# isNatIList X -> proper# X, proper# isNat X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# isNatIList X -> proper# X, proper# U32 X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# isNatIList X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# isNatIList X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# isNatIList X -> proper# X, proper# U43 X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# isNatIList X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# isNatIList X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# isNatIList X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# isNatIList X -> proper# X, proper# U53 X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# isNatIList X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# isNatIList X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# isNatIList X -> proper# X, proper# U63 X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# s X -> s# proper X)
    (proper# isNatIList X -> proper# X, proper# s X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# length X -> length# proper X)
    (proper# isNatIList X -> proper# X, proper# length X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# isNatIList X -> proper# X, proper# U81 X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# isNatIList X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# isNatIList X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# isNatIList X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# isNatIList X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# isNatIList X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# isNatIList X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# isNatIList X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# isNatIList X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# isNatIList X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# U32 X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# U32 X -> proper# X, proper# U12 X -> proper# X)
    (proper# U32 X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# U32 X -> proper# X, proper# isNatList X -> proper# X)
    (proper# U32 X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# U32 X -> proper# X, proper# U22 X -> proper# X)
    (proper# U32 X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# U32 X -> proper# X, proper# isNat X -> proper# X)
    (proper# U32 X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# U32 X -> proper# X, proper# U32 X -> proper# X)
    (proper# U32 X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U32 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U32 X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# U32 X -> proper# X, proper# U43 X -> proper# X)
    (proper# U32 X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# U32 X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# U32 X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U32 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U32 X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# U32 X -> proper# X, proper# U53 X -> proper# X)
    (proper# U32 X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U32 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U32 X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# U32 X -> proper# X, proper# U63 X -> proper# X)
    (proper# U32 X -> proper# X, proper# s X -> s# proper X)
    (proper# U32 X -> proper# X, proper# s X -> proper# X)
    (proper# U32 X -> proper# X, proper# length X -> length# proper X)
    (proper# U32 X -> proper# X, proper# length X -> proper# X)
    (proper# U32 X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# U32 X -> proper# X, proper# U81 X -> proper# X)
    (proper# U32 X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U32 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U32 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U32 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U32 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U32 X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U32 X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# U32 X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# U32 X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U32 X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# U32 X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# U32 X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# U22 X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# U22 X -> proper# X, proper# U12 X -> proper# X)
    (proper# U22 X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# U22 X -> proper# X, proper# isNatList X -> proper# X)
    (proper# U22 X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# U22 X -> proper# X, proper# U22 X -> proper# X)
    (proper# U22 X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# U22 X -> proper# X, proper# isNat X -> proper# X)
    (proper# U22 X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# U22 X -> proper# X, proper# U32 X -> proper# X)
    (proper# U22 X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U22 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U22 X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# U22 X -> proper# X, proper# U43 X -> proper# X)
    (proper# U22 X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# U22 X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# U22 X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U22 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U22 X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# U22 X -> proper# X, proper# U53 X -> proper# X)
    (proper# U22 X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U22 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U22 X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# U22 X -> proper# X, proper# U63 X -> proper# X)
    (proper# U22 X -> proper# X, proper# s X -> s# proper X)
    (proper# U22 X -> proper# X, proper# s X -> proper# X)
    (proper# U22 X -> proper# X, proper# length X -> length# proper X)
    (proper# U22 X -> proper# X, proper# length X -> proper# X)
    (proper# U22 X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# U22 X -> proper# X, proper# U81 X -> proper# X)
    (proper# U22 X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U22 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U22 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U22 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U22 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U22 X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U22 X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# U22 X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# U22 X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U22 X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# U22 X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# U22 X -> proper# X, proper# isNatKind X -> proper# X)
    (proper# U12 X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# cons(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# cons(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U12 X -> U12# proper X)
    (proper# U12 X -> proper# X, proper# U12 X -> proper# X)
    (proper# U12 X -> proper# X, proper# isNatList X -> isNatList# proper X)
    (proper# U12 X -> proper# X, proper# isNatList X -> proper# X)
    (proper# U12 X -> proper# X, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# U11(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U11(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U22 X -> U22# proper X)
    (proper# U12 X -> proper# X, proper# U22 X -> proper# X)
    (proper# U12 X -> proper# X, proper# isNat X -> isNat# proper X)
    (proper# U12 X -> proper# X, proper# isNat X -> proper# X)
    (proper# U12 X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# U21(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U21(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U32 X -> U32# proper X)
    (proper# U12 X -> proper# X, proper# U32 X -> proper# X)
    (proper# U12 X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# U31(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U31(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# U42(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U42(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U12 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U12 X -> proper# X, proper# U43 X -> U43# proper X)
    (proper# U12 X -> proper# X, proper# U43 X -> proper# X)
    (proper# U12 X -> proper# X, proper# isNatIList X -> isNatIList# proper X)
    (proper# U12 X -> proper# X, proper# isNatIList X -> proper# X)
    (proper# U12 X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# U52(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U52(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U12 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U12 X -> proper# X, proper# U53 X -> U53# proper X)
    (proper# U12 X -> proper# X, proper# U53 X -> proper# X)
    (proper# U12 X -> proper# X, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# U62(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U62(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U12 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U12 X -> proper# X, proper# U63 X -> U63# proper X)
    (proper# U12 X -> proper# X, proper# U63 X -> proper# X)
    (proper# U12 X -> proper# X, proper# s X -> s# proper X)
    (proper# U12 X -> proper# X, proper# s X -> proper# X)
    (proper# U12 X -> proper# X, proper# length X -> length# proper X)
    (proper# U12 X -> proper# X, proper# length X -> proper# X)
    (proper# U12 X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# U71(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U71(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U81 X -> U81# proper X)
    (proper# U12 X -> proper# X, proper# U81 X -> proper# X)
    (proper# U12 X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# take(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# take(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U12 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U12 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U12 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U12 X -> proper# X, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U12 X -> proper# X, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U12 X -> proper# X, proper# and(X1, X2) -> proper# X1)
    (proper# U12 X -> proper# X, proper# and(X1, X2) -> proper# X2)
    (proper# U12 X -> proper# X, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U12 X -> proper# X, proper# isNatIListKind X -> proper# X)
    (proper# U12 X -> proper# X, proper# isNatKind X -> isNatKind# proper X)
    (proper# U12 X -> proper# X, proper# isNatKind X -> proper# X)
    (isNatIListKind# ok X -> isNatIListKind# X, isNatIListKind# ok X -> isNatIListKind# X)
    (U81# mark X -> U81# X, U81# mark X -> U81# X)
    (U81# mark X -> U81# X, U81# ok X -> U81# X)
    (length# mark X -> length# X, length# mark X -> length# X)
    (length# mark X -> length# X, length# ok X -> length# X)
    (s# mark X -> s# X, s# mark X -> s# X)
    (s# mark X -> s# X, s# ok X -> s# X)
    (U63# mark X -> U63# X, U63# mark X -> U63# X)
    (U63# mark X -> U63# X, U63# ok X -> U63# X)
    (U53# mark X -> U53# X, U53# mark X -> U53# X)
    (U53# mark X -> U53# X, U53# ok X -> U53# X)
    (U43# ok X -> U43# X, U43# mark X -> U43# X)
    (U43# ok X -> U43# X, U43# ok X -> U43# X)
    (U32# ok X -> U32# X, U32# mark X -> U32# X)
    (U32# ok X -> U32# X, U32# ok X -> U32# X)
    (isNat# ok X -> isNat# X, isNat# ok X -> isNat# X)
    (U22# mark X -> U22# X, U22# mark X -> U22# X)
    (U22# mark X -> U22# X, U22# ok X -> U22# X)
    (U12# ok X -> U12# X, U12# mark X -> U12# X)
    (U12# ok X -> U12# X, U12# ok X -> U12# X)
    (active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL), U81# mark X -> U81# X)
    (active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL), U81# ok X -> U81# X)
    (active# length X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# length X -> active# X, active# cons(X1, X2) -> active# X1)
    (active# length X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (active# length X -> active# X, active# U12 X -> active# X)
    (active# length X -> active# X, active# U12 X -> U12# active X)
    (active# length X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# length X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# length X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# length X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# length X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# length X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# length X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# length X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# length X -> active# X, active# U11(X1, X2) -> active# X1)
    (active# length X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# length X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# length X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (active# length X -> active# X, active# U22 X -> active# X)
    (active# length X -> active# X, active# U22 X -> U22# active X)
    (active# length X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# length X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (active# length X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# length X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (active# length X -> active# X, active# U21(X1, X2) -> active# X1)
    (active# length X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# length X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (active# length X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (active# length X -> active# X, active# U32 X -> active# X)
    (active# length X -> active# X, active# U32 X -> U32# active X)
    (active# length X -> active# X, active# U31(X1, X2) -> active# X1)
    (active# length X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# length X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (active# length X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (active# length X -> active# X, active# U42(X1, X2) -> active# X1)
    (active# length X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# length X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# length X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (active# length X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (active# length X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# length X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# length X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# length X -> active# X, active# U43 X -> active# X)
    (active# length X -> active# X, active# U43 X -> U43# active X)
    (active# length X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# length X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (active# length X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# length X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# length X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# length X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# length X -> active# X, active# U52(X1, X2) -> active# X1)
    (active# length X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# length X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (active# length X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# length X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (active# length X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# length X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# length X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# length X -> active# X, active# U53 X -> active# X)
    (active# length X -> active# X, active# U53 X -> U53# active X)
    (active# length X -> active# X, active# U62(X1, X2) -> active# X1)
    (active# length X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# length X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (active# length X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# length X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (active# length X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# length X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# length X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# length X -> active# X, active# U63 X -> active# X)
    (active# length X -> active# X, active# U63 X -> U63# active X)
    (active# length X -> active# X, active# s X -> active# X)
    (active# length X -> active# X, active# s X -> s# active X)
    (active# length X -> active# X, active# length X -> active# X)
    (active# length X -> active# X, active# length X -> length# active X)
    (active# length X -> active# X, active# length cons(N, L) -> isNatList# L)
    (active# length X -> active# X, active# length cons(N, L) -> isNat# N)
    (active# length X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# length X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# length X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# length X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# length X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (active# length X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (active# length X -> active# X, active# U71(X1, X2) -> active# X1)
    (active# length X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# length X -> active# X, active# U71(tt(), L) -> s# length L)
    (active# length X -> active# X, active# U71(tt(), L) -> length# L)
    (active# length X -> active# X, active# U81 X -> active# X)
    (active# length X -> active# X, active# U81 X -> U81# active X)
    (active# length X -> active# X, active# take(X1, X2) -> active# X1)
    (active# length X -> active# X, active# take(X1, X2) -> active# X2)
    (active# length X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (active# length X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (active# length X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (active# length X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# length X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# length X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# length X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# length X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# length X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# length X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# length X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# length X -> active# X, active# and(X1, X2) -> active# X1)
    (active# length X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (active# length X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# length X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# length X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# length X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# length X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# length X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# length X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (active# length X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U63 X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U63 X -> active# X, active# cons(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (active# U63 X -> active# X, active# U12 X -> active# X)
    (active# U63 X -> active# X, active# U12 X -> U12# active X)
    (active# U63 X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U63 X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U63 X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U63 X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U63 X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U63 X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U63 X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U63 X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U63 X -> active# X, active# U11(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U63 X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U63 X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (active# U63 X -> active# X, active# U22 X -> active# X)
    (active# U63 X -> active# X, active# U22 X -> U22# active X)
    (active# U63 X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U63 X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (active# U63 X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U63 X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (active# U63 X -> active# X, active# U21(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U63 X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U63 X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (active# U63 X -> active# X, active# U32 X -> active# X)
    (active# U63 X -> active# X, active# U32 X -> U32# active X)
    (active# U63 X -> active# X, active# U31(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U63 X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (active# U63 X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (active# U63 X -> active# X, active# U42(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U63 X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U63 X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U63 X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (active# U63 X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U63 X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U63 X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U63 X -> active# X, active# U43 X -> active# X)
    (active# U63 X -> active# X, active# U43 X -> U43# active X)
    (active# U63 X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U63 X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (active# U63 X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U63 X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U63 X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U63 X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U63 X -> active# X, active# U52(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U63 X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (active# U63 X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U63 X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (active# U63 X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U63 X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U63 X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U63 X -> active# X, active# U53 X -> active# X)
    (active# U63 X -> active# X, active# U53 X -> U53# active X)
    (active# U63 X -> active# X, active# U62(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U63 X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U63 X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U63 X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (active# U63 X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U63 X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U63 X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U63 X -> active# X, active# U63 X -> active# X)
    (active# U63 X -> active# X, active# U63 X -> U63# active X)
    (active# U63 X -> active# X, active# s X -> active# X)
    (active# U63 X -> active# X, active# s X -> s# active X)
    (active# U63 X -> active# X, active# length X -> active# X)
    (active# U63 X -> active# X, active# length X -> length# active X)
    (active# U63 X -> active# X, active# length cons(N, L) -> isNatList# L)
    (active# U63 X -> active# X, active# length cons(N, L) -> isNat# N)
    (active# U63 X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U63 X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U63 X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U63 X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U63 X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (active# U63 X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (active# U63 X -> active# X, active# U71(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U63 X -> active# X, active# U71(tt(), L) -> s# length L)
    (active# U63 X -> active# X, active# U71(tt(), L) -> length# L)
    (active# U63 X -> active# X, active# U81 X -> active# X)
    (active# U63 X -> active# X, active# U81 X -> U81# active X)
    (active# U63 X -> active# X, active# take(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# take(X1, X2) -> active# X2)
    (active# U63 X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (active# U63 X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (active# U63 X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (active# U63 X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U63 X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U63 X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U63 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U63 X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U63 X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U63 X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U63 X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U63 X -> active# X, active# and(X1, X2) -> active# X1)
    (active# U63 X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (active# U63 X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U63 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U63 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U63 X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U63 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U63 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U63 X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (active# U63 X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U43 X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U43 X -> active# X, active# cons(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (active# U43 X -> active# X, active# U12 X -> active# X)
    (active# U43 X -> active# X, active# U12 X -> U12# active X)
    (active# U43 X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U43 X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U43 X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U43 X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U43 X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U43 X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U43 X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U43 X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U43 X -> active# X, active# U11(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U43 X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U43 X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (active# U43 X -> active# X, active# U22 X -> active# X)
    (active# U43 X -> active# X, active# U22 X -> U22# active X)
    (active# U43 X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U43 X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (active# U43 X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U43 X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (active# U43 X -> active# X, active# U21(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U43 X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U43 X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (active# U43 X -> active# X, active# U32 X -> active# X)
    (active# U43 X -> active# X, active# U32 X -> U32# active X)
    (active# U43 X -> active# X, active# U31(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U43 X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (active# U43 X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (active# U43 X -> active# X, active# U42(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U43 X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U43 X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U43 X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (active# U43 X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U43 X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U43 X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U43 X -> active# X, active# U43 X -> active# X)
    (active# U43 X -> active# X, active# U43 X -> U43# active X)
    (active# U43 X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U43 X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (active# U43 X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U43 X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U43 X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U43 X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U43 X -> active# X, active# U52(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U43 X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (active# U43 X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U43 X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (active# U43 X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U43 X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U43 X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U43 X -> active# X, active# U53 X -> active# X)
    (active# U43 X -> active# X, active# U53 X -> U53# active X)
    (active# U43 X -> active# X, active# U62(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U43 X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U43 X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U43 X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (active# U43 X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U43 X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U43 X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U43 X -> active# X, active# U63 X -> active# X)
    (active# U43 X -> active# X, active# U63 X -> U63# active X)
    (active# U43 X -> active# X, active# s X -> active# X)
    (active# U43 X -> active# X, active# s X -> s# active X)
    (active# U43 X -> active# X, active# length X -> active# X)
    (active# U43 X -> active# X, active# length X -> length# active X)
    (active# U43 X -> active# X, active# length cons(N, L) -> isNatList# L)
    (active# U43 X -> active# X, active# length cons(N, L) -> isNat# N)
    (active# U43 X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U43 X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U43 X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U43 X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U43 X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (active# U43 X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (active# U43 X -> active# X, active# U71(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U43 X -> active# X, active# U71(tt(), L) -> s# length L)
    (active# U43 X -> active# X, active# U71(tt(), L) -> length# L)
    (active# U43 X -> active# X, active# U81 X -> active# X)
    (active# U43 X -> active# X, active# U81 X -> U81# active X)
    (active# U43 X -> active# X, active# take(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# take(X1, X2) -> active# X2)
    (active# U43 X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (active# U43 X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (active# U43 X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (active# U43 X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U43 X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U43 X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U43 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U43 X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U43 X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U43 X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U43 X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U43 X -> active# X, active# and(X1, X2) -> active# X1)
    (active# U43 X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (active# U43 X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U43 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U43 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U43 X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U43 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U43 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U43 X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (active# U43 X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U22 X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U22 X -> active# X, active# cons(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# zeros() -> cons#(0(), zeros()))
    (active# U22 X -> active# X, active# U12 X -> active# X)
    (active# U22 X -> active# X, active# U12 X -> U12# active X)
    (active# U22 X -> active# X, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U22 X -> active# X, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U22 X -> active# X, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U22 X -> active# X, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U22 X -> active# X, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U22 X -> active# X, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U22 X -> active# X, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U22 X -> active# X, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U22 X -> active# X, active# U11(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U22 X -> active# X, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U22 X -> active# X, active# U11(tt(), V1) -> isNatList# V1)
    (active# U22 X -> active# X, active# U22 X -> active# X)
    (active# U22 X -> active# X, active# U22 X -> U22# active X)
    (active# U22 X -> active# X, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U22 X -> active# X, active# isNat s V1 -> isNatKind# V1)
    (active# U22 X -> active# X, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U22 X -> active# X, active# isNat length V1 -> isNatIListKind# V1)
    (active# U22 X -> active# X, active# U21(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U22 X -> active# X, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U22 X -> active# X, active# U21(tt(), V1) -> isNat# V1)
    (active# U22 X -> active# X, active# U32 X -> active# X)
    (active# U22 X -> active# X, active# U32 X -> U32# active X)
    (active# U22 X -> active# X, active# U31(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U22 X -> active# X, active# U31(tt(), V) -> isNatList# V)
    (active# U22 X -> active# X, active# U31(tt(), V) -> U32# isNatList V)
    (active# U22 X -> active# X, active# U42(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U22 X -> active# X, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U22 X -> active# X, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U22 X -> active# X, active# U41(X1, X2, X3) -> active# X1)
    (active# U22 X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U22 X -> active# X, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U22 X -> active# X, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U22 X -> active# X, active# U43 X -> active# X)
    (active# U22 X -> active# X, active# U43 X -> U43# active X)
    (active# U22 X -> active# X, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U22 X -> active# X, active# isNatIList V -> isNatIListKind# V)
    (active# U22 X -> active# X, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U22 X -> active# X, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U22 X -> active# X, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U22 X -> active# X, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U22 X -> active# X, active# U52(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U22 X -> active# X, active# U52(tt(), V2) -> isNatList# V2)
    (active# U22 X -> active# X, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U22 X -> active# X, active# U51(X1, X2, X3) -> active# X1)
    (active# U22 X -> active# X, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U22 X -> active# X, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U22 X -> active# X, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U22 X -> active# X, active# U53 X -> active# X)
    (active# U22 X -> active# X, active# U53 X -> U53# active X)
    (active# U22 X -> active# X, active# U62(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U22 X -> active# X, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U22 X -> active# X, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U22 X -> active# X, active# U61(X1, X2, X3) -> active# X1)
    (active# U22 X -> active# X, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U22 X -> active# X, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U22 X -> active# X, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U22 X -> active# X, active# U63 X -> active# X)
    (active# U22 X -> active# X, active# U63 X -> U63# active X)
    (active# U22 X -> active# X, active# s X -> active# X)
    (active# U22 X -> active# X, active# s X -> s# active X)
    (active# U22 X -> active# X, active# length X -> active# X)
    (active# U22 X -> active# X, active# length X -> length# active X)
    (active# U22 X -> active# X, active# length cons(N, L) -> isNatList# L)
    (active# U22 X -> active# X, active# length cons(N, L) -> isNat# N)
    (active# U22 X -> active# X, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U22 X -> active# X, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U22 X -> active# X, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U22 X -> active# X, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U22 X -> active# X, active# length cons(N, L) -> isNatIListKind# L)
    (active# U22 X -> active# X, active# length cons(N, L) -> isNatKind# N)
    (active# U22 X -> active# X, active# U71(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U22 X -> active# X, active# U71(tt(), L) -> s# length L)
    (active# U22 X -> active# X, active# U71(tt(), L) -> length# L)
    (active# U22 X -> active# X, active# U81 X -> active# X)
    (active# U22 X -> active# X, active# U81 X -> U81# active X)
    (active# U22 X -> active# X, active# take(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# take(X1, X2) -> active# X2)
    (active# U22 X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
    (active# U22 X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
    (active# U22 X -> active# X, active# take(0(), IL) -> isNatIList# IL)
    (active# U22 X -> active# X, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U22 X -> active# X, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U22 X -> active# X, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U22 X -> active# X, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U22 X -> active# X, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U22 X -> active# X, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U22 X -> active# X, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U22 X -> active# X, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U22 X -> active# X, active# and(X1, X2) -> active# X1)
    (active# U22 X -> active# X, active# and(X1, X2) -> and#(active X1, X2))
    (active# U22 X -> active# X, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U22 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U22 X -> active# X, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U22 X -> active# X, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U22 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U22 X -> active# X, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U22 X -> active# X, active# isNatKind s V1 -> isNatKind# V1)
    (active# U22 X -> active# X, active# isNatKind length V1 -> isNatIListKind# V1)
    (proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4), U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4))
    (proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4), U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4))
    (active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2, isNatIListKind# ok X -> isNatIListKind# X)
    (active# U52(tt(), V2) -> isNatList# V2, isNatList# ok X -> isNatList# X)
    (active# U42(tt(), V2) -> isNatIList# V2, isNatIList# ok X -> isNatIList# X)
    (active# isNatList cons(V1, V2) -> isNatIListKind# V2, isNatIListKind# ok X -> isNatIListKind# X)
    (active# isNat s V1 -> U21#(isNatKind V1, V1), U21#(mark X1, X2) -> U21#(X1, X2))
    (active# isNat s V1 -> U21#(isNatKind V1, V1), U21#(ok X1, ok X2) -> U21#(X1, X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# s X -> s# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# s X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# length X -> length# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# length X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U91(X1, X2, X3, X4) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U71(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U71(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U71(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U71(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U71(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U71(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U71(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U71(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U71(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U71(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U71(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U71(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U71(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U71(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U62(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U62(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U62(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U62(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U62(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U62(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U62(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U62(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U62(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U62(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U62(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U62(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U62(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U62(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U52(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U52(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U52(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U52(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U52(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U52(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U52(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U52(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U52(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U52(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U52(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U52(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U52(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U52(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U42(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U42(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U42(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U42(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U42(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U42(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U42(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U42(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U42(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U42(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U42(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U42(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U42(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U42(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U21(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U21(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U21(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U21(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U21(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U21(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U21(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U21(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U21(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U21(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# U21(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# U21(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# U21(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# U21(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U12 X -> U12# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# U12 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# isNatList X -> isNatList# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# isNatList X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U11(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U22 X -> U22# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# U22 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# isNat X -> isNat# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# isNat X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U32 X -> U32# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# U32 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U42(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# cons(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# cons(X1, X2) -> proper# X2, proper# U43 X -> U43# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# U43 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# isNatIList X -> isNatIList# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# isNatIList X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# cons(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# cons(X1, X2) -> proper# X2, proper# U53 X -> U53# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# U53 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U62(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# cons(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# cons(X1, X2) -> proper# X2, proper# U63 X -> U63# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# U63 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# s X -> s# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# s X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# length X -> length# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# length X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U81 X -> U81# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# U81 X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# cons(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# cons(X1, X2) -> proper# X2, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# cons(X1, X2) -> proper# X2, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# cons(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X1)
    (proper# cons(X1, X2) -> proper# X2, proper# and(X1, X2) -> proper# X2)
    (proper# cons(X1, X2) -> proper# X2, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# isNatIListKind X -> proper# X)
    (proper# cons(X1, X2) -> proper# X2, proper# isNatKind X -> isNatKind# proper X)
    (proper# cons(X1, X2) -> proper# X2, proper# isNatKind X -> proper# X)
    (active# take(s M, cons(N, IL)) -> isNatKind# N, isNatKind# ok X -> isNatKind# X)
    (active# length cons(N, L) -> isNatKind# N, isNatKind# ok X -> isNatKind# X)
    (active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L), U71#(mark X1, X2) -> U71#(X1, X2))
    (active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L), U71#(ok X1, ok X2) -> U71#(X1, X2))
    (active# U91(tt(), IL, M, N) -> take#(M, IL), take#(X1, mark X2) -> take#(X1, X2))
    (active# U91(tt(), IL, M, N) -> take#(M, IL), take#(mark X1, X2) -> take#(X1, X2))
    (active# U91(tt(), IL, M, N) -> take#(M, IL), take#(ok X1, ok X2) -> take#(X1, X2))
    (proper# take(X1, X2) -> take#(proper X1, proper X2), take#(X1, mark X2) -> take#(X1, X2))
    (proper# take(X1, X2) -> take#(proper X1, proper X2), take#(mark X1, X2) -> take#(X1, X2))
    (proper# take(X1, X2) -> take#(proper X1, proper X2), take#(ok X1, ok X2) -> take#(X1, X2))
    (proper# U62(X1, X2) -> U62#(proper X1, proper X2), U62#(mark X1, X2) -> U62#(X1, X2))
    (proper# U62(X1, X2) -> U62#(proper X1, proper X2), U62#(ok X1, ok X2) -> U62#(X1, X2))
    (proper# U42(X1, X2) -> U42#(proper X1, proper X2), U42#(mark X1, X2) -> U42#(X1, X2))
    (proper# U42(X1, X2) -> U42#(proper X1, proper X2), U42#(ok X1, ok X2) -> U42#(X1, X2))
    (proper# U21(X1, X2) -> U21#(proper X1, proper X2), U21#(mark X1, X2) -> U21#(X1, X2))
    (proper# U21(X1, X2) -> U21#(proper X1, proper X2), U21#(ok X1, ok X2) -> U21#(X1, X2))
    (proper# cons(X1, X2) -> cons#(proper X1, proper X2), cons#(mark X1, X2) -> cons#(X1, X2))
    (proper# cons(X1, X2) -> cons#(proper X1, proper X2), cons#(ok X1, ok X2) -> cons#(X1, X2))
    (active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(mark X1, X2) -> and#(X1, X2))
    (active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M), and#(mark X1, X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL), and#(mark X1, X2) -> and#(X1, X2))
    (active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# length cons(N, L) -> and#(isNat N, isNatKind N), and#(mark X1, X2) -> and#(X1, X2))
    (active# length cons(N, L) -> and#(isNat N, isNatKind N), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(mark X1, X2) -> and#(X1, X2))
    (active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(mark X1, X2) -> and#(X1, X2))
    (active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2), and#(ok X1, ok X2) -> and#(X1, X2))
    (U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4), U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4))
    (U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4), U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4))
    (active# take(s M, cons(N, IL)) -> isNatIListKind# IL, isNatIListKind# ok X -> isNatIListKind# X)
    (active# take(0(), IL) -> isNatIListKind# IL, isNatIListKind# ok X -> isNatIListKind# X)
    (active# U21(tt(), V1) -> U22# isNat V1, U22# mark X -> U22# X)
    (active# U21(tt(), V1) -> U22# isNat V1, U22# ok X -> U22# X)
    (active# U31(tt(), V) -> U32# isNatList V, U32# mark X -> U32# X)
    (active# U31(tt(), V) -> U32# isNatList V, U32# ok X -> U32# X)
    (active# U52(tt(), V2) -> U53# isNatList V2, U53# mark X -> U53# X)
    (active# U52(tt(), V2) -> U53# isNatList V2, U53# ok X -> U53# X)
    (active# U71(tt(), L) -> s# length L, s# mark X -> s# X)
    (active# U71(tt(), L) -> s# length L, s# ok X -> s# X)
    (top# mark X -> top# proper X, top# mark X -> proper# X)
    (top# mark X -> top# proper X, top# mark X -> top# proper X)
    (top# mark X -> top# proper X, top# ok X -> active# X)
    (top# mark X -> top# proper X, top# ok X -> top# active X)
    (proper# isNatIListKind X -> isNatIListKind# proper X, isNatIListKind# ok X -> isNatIListKind# X)
    (proper# length X -> length# proper X, length# mark X -> length# X)
    (proper# length X -> length# proper X, length# ok X -> length# X)
    (proper# U63 X -> U63# proper X, U63# mark X -> U63# X)
    (proper# U63 X -> U63# proper X, U63# ok X -> U63# X)
    (proper# isNatIList X -> isNatIList# proper X, isNatIList# ok X -> isNatIList# X)
    (proper# U32 X -> U32# proper X, U32# mark X -> U32# X)
    (proper# U32 X -> U32# proper X, U32# ok X -> U32# X)
    (proper# U22 X -> U22# proper X, U22# mark X -> U22# X)
    (proper# U22 X -> U22# proper X, U22# ok X -> U22# X)
    (proper# U12 X -> U12# proper X, U12# mark X -> U12# X)
    (proper# U12 X -> U12# proper X, U12# ok X -> U12# X)
    (active# length X -> length# active X, length# mark X -> length# X)
    (active# length X -> length# active X, length# ok X -> length# X)
    (active# U63 X -> U63# active X, U63# mark X -> U63# X)
    (active# U63 X -> U63# active X, U63# ok X -> U63# X)
    (active# U43 X -> U43# active X, U43# mark X -> U43# X)
    (active# U43 X -> U43# active X, U43# ok X -> U43# X)
    (active# U22 X -> U22# active X, U22# mark X -> U22# X)
    (active# U22 X -> U22# active X, U22# ok X -> U22# X)
    (proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3), U61#(mark X1, X2, X3) -> U61#(X1, X2, X3))
    (proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3), U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3))
    (proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3))
    (proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3))
    (active# U31(tt(), V) -> isNatList# V, isNatList# ok X -> isNatList# X)
    (active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2), U61#(mark X1, X2, X3) -> U61#(X1, X2, X3))
    (active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2), U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3))
    (and#(ok X1, ok X2) -> and#(X1, X2), and#(mark X1, X2) -> and#(X1, X2))
    (and#(ok X1, ok X2) -> and#(X1, X2), and#(ok X1, ok X2) -> and#(X1, X2))
    (take#(ok X1, ok X2) -> take#(X1, X2), take#(X1, mark X2) -> take#(X1, X2))
    (take#(ok X1, ok X2) -> take#(X1, X2), take#(mark X1, X2) -> take#(X1, X2))
    (take#(ok X1, ok X2) -> take#(X1, X2), take#(ok X1, ok X2) -> take#(X1, X2))
    (take#(X1, mark X2) -> take#(X1, X2), take#(X1, mark X2) -> take#(X1, X2))
    (take#(X1, mark X2) -> take#(X1, X2), take#(mark X1, X2) -> take#(X1, X2))
    (take#(X1, mark X2) -> take#(X1, X2), take#(ok X1, ok X2) -> take#(X1, X2))
    (U71#(mark X1, X2) -> U71#(X1, X2), U71#(mark X1, X2) -> U71#(X1, X2))
    (U71#(mark X1, X2) -> U71#(X1, X2), U71#(ok X1, ok X2) -> U71#(X1, X2))
    (U62#(mark X1, X2) -> U62#(X1, X2), U62#(mark X1, X2) -> U62#(X1, X2))
    (U62#(mark X1, X2) -> U62#(X1, X2), U62#(ok X1, ok X2) -> U62#(X1, X2))
    (U52#(mark X1, X2) -> U52#(X1, X2), U52#(mark X1, X2) -> U52#(X1, X2))
    (U52#(mark X1, X2) -> U52#(X1, X2), U52#(ok X1, ok X2) -> U52#(X1, X2))
    (U42#(mark X1, X2) -> U42#(X1, X2), U42#(mark X1, X2) -> U42#(X1, X2))
    (U42#(mark X1, X2) -> U42#(X1, X2), U42#(ok X1, ok X2) -> U42#(X1, X2))
    (U31#(mark X1, X2) -> U31#(X1, X2), U31#(mark X1, X2) -> U31#(X1, X2))
    (U31#(mark X1, X2) -> U31#(X1, X2), U31#(ok X1, ok X2) -> U31#(X1, X2))
    (U21#(mark X1, X2) -> U21#(X1, X2), U21#(mark X1, X2) -> U21#(X1, X2))
    (U21#(mark X1, X2) -> U21#(X1, X2), U21#(ok X1, ok X2) -> U21#(X1, X2))
    (U11#(mark X1, X2) -> U11#(X1, X2), U11#(mark X1, X2) -> U11#(X1, X2))
    (U11#(mark X1, X2) -> U11#(X1, X2), U11#(ok X1, ok X2) -> U11#(X1, X2))
    (cons#(mark X1, X2) -> cons#(X1, X2), cons#(mark X1, X2) -> cons#(X1, X2))
    (cons#(mark X1, X2) -> cons#(X1, X2), cons#(ok X1, ok X2) -> cons#(X1, X2))
    (active# U51(tt(), V1, V2) -> U52#(isNat V1, V2), U52#(mark X1, X2) -> U52#(X1, X2))
    (active# U51(tt(), V1, V2) -> U52#(isNat V1, V2), U52#(ok X1, ok X2) -> U52#(X1, X2))
    (proper# and(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# and(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# and(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# and(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# and(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# and(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# and(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# and(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# and(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# and(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# and(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# and(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# and(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# take(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# take(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# take(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# take(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# take(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# take(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# take(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# take(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# take(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# take(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# take(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# take(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# take(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# take(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# s X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# length X -> length# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# length X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U61(X1, X2, X3) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# s X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# length X -> length# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# length X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U51(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U51(X1, X2, X3) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# s X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# length X -> length# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# length X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U41(X1, X2, X3) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U31(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U31(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U31(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U31(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U31(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U31(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U31(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U31(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U31(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U31(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U31(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U31(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U31(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U31(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U12 X -> U12# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# U12 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# isNatList X -> isNatList# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# isNatList X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U11(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U22 X -> U22# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# U22 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# isNat X -> isNat# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# isNat X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U32 X -> U32# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# U32 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U42(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U11(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U11(X1, X2) -> proper# X1, proper# U43 X -> U43# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# U43 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# isNatIList X -> isNatIList# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# isNatIList X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U11(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U11(X1, X2) -> proper# X1, proper# U53 X -> U53# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# U53 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U62(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U11(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U11(X1, X2) -> proper# X1, proper# U63 X -> U63# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# U63 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# s X -> s# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# s X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# length X -> length# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# length X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U81 X -> U81# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# U81 X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U11(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U11(X1, X2) -> proper# X1, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U11(X1, X2) -> proper# X1, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U11(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X1)
    (proper# U11(X1, X2) -> proper# X1, proper# and(X1, X2) -> proper# X2)
    (proper# U11(X1, X2) -> proper# X1, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# isNatIListKind X -> proper# X)
    (proper# U11(X1, X2) -> proper# X1, proper# isNatKind X -> isNatKind# proper X)
    (proper# U11(X1, X2) -> proper# X1, proper# isNatKind X -> proper# X)
    (active# and(X1, X2) -> and#(active X1, X2), and#(mark X1, X2) -> and#(X1, X2))
    (active# and(X1, X2) -> and#(active X1, X2), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U12 X -> active# X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U12 X -> U12# active X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U22 X -> active# X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U22 X -> U22# active X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U32 X -> active# X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U32 X -> U32# active X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U43 X -> active# X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U43 X -> U43# active X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U53 X -> active# X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U53 X -> U53# active X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U63 X -> active# X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U63 X -> U63# active X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# s X -> active# X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# s X -> s# active X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length X -> active# X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length X -> length# active X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U81 X -> active# X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U81 X -> U81# active X)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U91(X1, X2, X3, X4) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# take(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# take(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# take(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# take(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# take(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# take(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# take(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# take(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# take(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# take(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# take(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# take(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# take(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# take(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# take(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# take(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# take(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# take(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# take(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# take(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# take(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# take(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# take(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# take(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# take(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# take(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# take(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# take(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# take(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# take(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# take(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# take(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# take(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# take(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# take(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# take(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# take(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# take(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# take(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# take(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# take(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# take(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# take(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# take(X1, X2) -> active# X1, active# s X -> active# X)
    (active# take(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# take(X1, X2) -> active# X1, active# length X -> active# X)
    (active# take(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# take(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# take(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# take(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# take(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# take(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# take(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# take(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# take(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# take(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# take(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# take(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# take(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# take(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# take(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# take(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# take(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# take(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# take(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# take(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# take(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# take(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# take(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# take(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# take(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# take(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# take(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# take(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# take(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# take(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U71(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U71(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# U71(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# U71(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U71(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U71(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U71(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U71(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U71(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U71(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U71(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U71(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U71(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U71(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# U71(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# U71(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U71(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U71(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U71(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U71(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U71(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U71(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# U71(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# U71(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U71(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U71(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U71(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U71(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U71(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U71(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U71(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# U71(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# U71(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U71(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U71(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U71(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U71(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U71(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U71(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U71(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U71(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U71(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U71(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U71(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# U71(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# U71(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U71(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U71(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U71(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U71(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U71(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# U71(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# U71(X1, X2) -> active# X1, active# s X -> active# X)
    (active# U71(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# U71(X1, X2) -> active# X1, active# length X -> active# X)
    (active# U71(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# U71(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U71(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U71(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U71(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U71(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U71(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U71(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U71(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U71(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U71(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U71(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# U71(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# U71(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U71(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U71(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U71(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U71(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U71(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U71(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U71(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U71(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U71(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U71(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U71(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U71(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U71(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U71(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U71(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U71(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U71(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U71(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U71(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U62(X1, X2) -> U62#(active X1, X2), U62#(mark X1, X2) -> U62#(X1, X2))
    (active# U62(X1, X2) -> U62#(active X1, X2), U62#(ok X1, ok X2) -> U62#(X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U51(X1, X2, X3) -> active# X1, active# U12 X -> active# X)
    (active# U51(X1, X2, X3) -> active# X1, active# U12 X -> U12# active X)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U22 X -> active# X)
    (active# U51(X1, X2, X3) -> active# X1, active# U22 X -> U22# active X)
    (active# U51(X1, X2, X3) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U51(X1, X2, X3) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U51(X1, X2, X3) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U32 X -> active# X)
    (active# U51(X1, X2, X3) -> active# X1, active# U32 X -> U32# active X)
    (active# U51(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U51(X1, X2, X3) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U51(X1, X2, X3) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U51(X1, X2, X3) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U51(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U51(X1, X2, X3) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U51(X1, X2, X3) -> active# X1, active# U43 X -> active# X)
    (active# U51(X1, X2, X3) -> active# X1, active# U43 X -> U43# active X)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U51(X1, X2, X3) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U51(X1, X2, X3) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U51(X1, X2, X3) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U51(X1, X2, X3) -> active# X1, active# U53 X -> active# X)
    (active# U51(X1, X2, X3) -> active# X1, active# U53 X -> U53# active X)
    (active# U51(X1, X2, X3) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U51(X1, X2, X3) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U51(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U51(X1, X2, X3) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U51(X1, X2, X3) -> active# X1, active# U63 X -> active# X)
    (active# U51(X1, X2, X3) -> active# X1, active# U63 X -> U63# active X)
    (active# U51(X1, X2, X3) -> active# X1, active# s X -> active# X)
    (active# U51(X1, X2, X3) -> active# X1, active# s X -> s# active X)
    (active# U51(X1, X2, X3) -> active# X1, active# length X -> active# X)
    (active# U51(X1, X2, X3) -> active# X1, active# length X -> length# active X)
    (active# U51(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U51(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U51(X1, X2, X3) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U51(X1, X2, X3) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U51(X1, X2, X3) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U51(X1, X2, X3) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U51(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U51(X1, X2, X3) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U51(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U51(X1, X2, X3) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U51(X1, X2, X3) -> active# X1, active# U81 X -> active# X)
    (active# U51(X1, X2, X3) -> active# X1, active# U81 X -> U81# active X)
    (active# U51(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U51(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U51(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U51(X1, X2, X3) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U51(X1, X2, X3) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U51(X1, X2, X3) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U51(X1, X2, X3) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U51(X1, X2, X3) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U51(X1, X2, X3) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U51(X1, X2, X3) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U51(X1, X2, X3) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U51(X1, X2, X3) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U51(X1, X2, X3) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U52(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# U52(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# U52(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# U52(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U52(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U52(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# U52(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# U52(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U52(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U52(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# U52(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# U52(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# U52(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# U52(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# U52(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# U52(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# U52(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# U52(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# U52(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# U52(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# U52(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# U52(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# U52(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# U52(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# U52(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# U52(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# U52(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# U52(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# U52(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# U52(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# U52(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# U52(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# U52(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# U52(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# U52(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# U52(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U52(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# U52(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# U52(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# U52(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# U52(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# U52(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# U52(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# U52(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# U52(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# U52(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# U52(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# U52(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# U52(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# U52(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# U52(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# U52(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# U52(X1, X2) -> active# X1, active# s X -> active# X)
    (active# U52(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# U52(X1, X2) -> active# X1, active# length X -> active# X)
    (active# U52(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# U52(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# U52(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# U52(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# U52(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# U52(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# U52(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# U52(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# U52(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# U52(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# U52(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# U52(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# U52(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# U52(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# U52(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# U52(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# U52(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# U52(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U52(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# U52(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# U52(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# U52(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# U52(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# U52(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# U52(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# U52(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U52(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# U52(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# U52(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# U52(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# U52(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# U52(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# U52(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U42(X1, X2) -> U42#(active X1, X2), U42#(mark X1, X2) -> U42#(X1, X2))
    (active# U42(X1, X2) -> U42#(active X1, X2), U42#(ok X1, ok X2) -> U42#(X1, X2))
    (active# U31(X1, X2) -> U31#(active X1, X2), U31#(mark X1, X2) -> U31#(X1, X2))
    (active# U31(X1, X2) -> U31#(active X1, X2), U31#(ok X1, ok X2) -> U31#(X1, X2))
    (active# U21(X1, X2) -> U21#(active X1, X2), U21#(mark X1, X2) -> U21#(X1, X2))
    (active# U21(X1, X2) -> U21#(active X1, X2), U21#(ok X1, ok X2) -> U21#(X1, X2))
    (active# U11(X1, X2) -> U11#(active X1, X2), U11#(mark X1, X2) -> U11#(X1, X2))
    (active# U11(X1, X2) -> U11#(active X1, X2), U11#(ok X1, ok X2) -> U11#(X1, X2))
    (active# cons(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# zeros() -> cons#(0(), zeros()))
    (active# cons(X1, X2) -> active# X1, active# U12 X -> active# X)
    (active# cons(X1, X2) -> active# X1, active# U12 X -> U12# active X)
    (active# cons(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> U51#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# cons(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# cons(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatIListKind# V2)
    (active# cons(X1, X2) -> active# X1, active# isNatList cons(V1, V2) -> isNatKind# V1)
    (active# cons(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> U61#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# cons(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# cons(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatIListKind# V2)
    (active# cons(X1, X2) -> active# X1, active# isNatList take(V1, V2) -> isNatKind# V1)
    (active# cons(X1, X2) -> active# X1, active# U11(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U11(X1, X2) -> U11#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# U11(tt(), V1) -> U12# isNatList V1)
    (active# cons(X1, X2) -> active# X1, active# U11(tt(), V1) -> isNatList# V1)
    (active# cons(X1, X2) -> active# X1, active# U22 X -> active# X)
    (active# cons(X1, X2) -> active# X1, active# U22 X -> U22# active X)
    (active# cons(X1, X2) -> active# X1, active# isNat s V1 -> U21#(isNatKind V1, V1))
    (active# cons(X1, X2) -> active# X1, active# isNat s V1 -> isNatKind# V1)
    (active# cons(X1, X2) -> active# X1, active# isNat length V1 -> U11#(isNatIListKind V1, V1))
    (active# cons(X1, X2) -> active# X1, active# isNat length V1 -> isNatIListKind# V1)
    (active# cons(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# U21(tt(), V1) -> U22# isNat V1)
    (active# cons(X1, X2) -> active# X1, active# U21(tt(), V1) -> isNat# V1)
    (active# cons(X1, X2) -> active# X1, active# U32 X -> active# X)
    (active# cons(X1, X2) -> active# X1, active# U32 X -> U32# active X)
    (active# cons(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# U31(tt(), V) -> isNatList# V)
    (active# cons(X1, X2) -> active# X1, active# U31(tt(), V) -> U32# isNatList V)
    (active# cons(X1, X2) -> active# X1, active# U42(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U42(X1, X2) -> U42#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# U42(tt(), V2) -> U43# isNatIList V2)
    (active# cons(X1, X2) -> active# X1, active# U42(tt(), V2) -> isNatIList# V2)
    (active# cons(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
    (active# cons(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> isNat# V1)
    (active# cons(X1, X2) -> active# X1, active# U41(tt(), V1, V2) -> U42#(isNat V1, V2))
    (active# cons(X1, X2) -> active# X1, active# U43 X -> active# X)
    (active# cons(X1, X2) -> active# X1, active# U43 X -> U43# active X)
    (active# cons(X1, X2) -> active# X1, active# isNatIList V -> U31#(isNatIListKind V, V))
    (active# cons(X1, X2) -> active# X1, active# isNatIList V -> isNatIListKind# V)
    (active# cons(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> U41#(and(isNatKind V1, isNatIListKind V2), V1, V2))
    (active# cons(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# cons(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatIListKind# V2)
    (active# cons(X1, X2) -> active# X1, active# isNatIList cons(V1, V2) -> isNatKind# V1)
    (active# cons(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# U52(tt(), V2) -> isNatList# V2)
    (active# cons(X1, X2) -> active# X1, active# U52(tt(), V2) -> U53# isNatList V2)
    (active# cons(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U51(X1, X2, X3) -> U51#(active X1, X2, X3))
    (active# cons(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> isNat# V1)
    (active# cons(X1, X2) -> active# X1, active# U51(tt(), V1, V2) -> U52#(isNat V1, V2))
    (active# cons(X1, X2) -> active# X1, active# U53 X -> active# X)
    (active# cons(X1, X2) -> active# X1, active# U53 X -> U53# active X)
    (active# cons(X1, X2) -> active# X1, active# U62(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U62(X1, X2) -> U62#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# U62(tt(), V2) -> isNatIList# V2)
    (active# cons(X1, X2) -> active# X1, active# U62(tt(), V2) -> U63# isNatIList V2)
    (active# cons(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U61(X1, X2, X3) -> U61#(active X1, X2, X3))
    (active# cons(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> isNat# V1)
    (active# cons(X1, X2) -> active# X1, active# U61(tt(), V1, V2) -> U62#(isNat V1, V2))
    (active# cons(X1, X2) -> active# X1, active# U63 X -> active# X)
    (active# cons(X1, X2) -> active# X1, active# U63 X -> U63# active X)
    (active# cons(X1, X2) -> active# X1, active# s X -> active# X)
    (active# cons(X1, X2) -> active# X1, active# s X -> s# active X)
    (active# cons(X1, X2) -> active# X1, active# length X -> active# X)
    (active# cons(X1, X2) -> active# X1, active# length X -> length# active X)
    (active# cons(X1, X2) -> active# X1, active# length cons(N, L) -> isNatList# L)
    (active# cons(X1, X2) -> active# X1, active# length cons(N, L) -> isNat# N)
    (active# cons(X1, X2) -> active# X1, active# length cons(N, L) -> U71#(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L))
    (active# cons(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNatList L, isNatIListKind L))
    (active# cons(X1, X2) -> active# X1, active# length cons(N, L) -> and#(isNat N, isNatKind N))
    (active# cons(X1, X2) -> active# X1, active# length cons(N, L) -> and#(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)))
    (active# cons(X1, X2) -> active# X1, active# length cons(N, L) -> isNatIListKind# L)
    (active# cons(X1, X2) -> active# X1, active# length cons(N, L) -> isNatKind# N)
    (active# cons(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# U71(tt(), L) -> s# length L)
    (active# cons(X1, X2) -> active# X1, active# U71(tt(), L) -> length# L)
    (active# cons(X1, X2) -> active# X1, active# U81 X -> active# X)
    (active# cons(X1, X2) -> active# X1, active# U81 X -> U81# active X)
    (active# cons(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
    (active# cons(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
    (active# cons(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIList# IL)
    (active# cons(X1, X2) -> active# X1, active# take(0(), IL) -> U81# and(isNatIList IL, isNatIListKind IL))
    (active# cons(X1, X2) -> active# X1, active# take(0(), IL) -> and#(isNatIList IL, isNatIListKind IL))
    (active# cons(X1, X2) -> active# X1, active# take(0(), IL) -> isNatIListKind# IL)
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# N)
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNat# M)
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIList# IL)
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> U91#(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N))
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat N, isNatKind N))
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNat M, isNatKind M))
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(isNatIList IL, isNatIListKind IL))
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)))
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> and#(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))))
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatIListKind# IL)
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# N)
    (active# cons(X1, X2) -> active# X1, active# take(s M, cons(N, IL)) -> isNatKind# M)
    (active# cons(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# U91(X1, X2, X3, X4) -> U91#(active X1, X2, X3, X4))
    (active# cons(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> cons#(N, take(M, IL)))
    (active# cons(X1, X2) -> active# X1, active# U91(tt(), IL, M, N) -> take#(M, IL))
    (active# cons(X1, X2) -> active# X1, active# and(X1, X2) -> active# X1)
    (active# cons(X1, X2) -> active# X1, active# and(X1, X2) -> and#(active X1, X2))
    (active# cons(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# cons(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatIListKind# V2)
    (active# cons(X1, X2) -> active# X1, active# isNatIListKind cons(V1, V2) -> isNatKind# V1)
    (active# cons(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> and#(isNatKind V1, isNatIListKind V2))
    (active# cons(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatIListKind# V2)
    (active# cons(X1, X2) -> active# X1, active# isNatIListKind take(V1, V2) -> isNatKind# V1)
    (active# cons(X1, X2) -> active# X1, active# isNatKind s V1 -> isNatKind# V1)
    (active# cons(X1, X2) -> active# X1, active# isNatKind length V1 -> isNatIListKind# V1)
    (active# U71(tt(), L) -> length# L, length# mark X -> length# X)
    (active# U71(tt(), L) -> length# L, length# ok X -> length# X)
    (active# length cons(N, L) -> isNatList# L, isNatList# ok X -> isNatList# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U12 X -> U12# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U12 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNatList X -> isNatList# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNatList X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U22 X -> U22# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U22 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNat X -> isNat# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNat X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U32 X -> U32# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U32 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U42(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U42(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U43 X -> U43# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U43 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNatIList X -> isNatIList# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNatIList X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U53 X -> U53# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U53 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U62(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U62(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U63 X -> U63# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U63 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# s X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# length X -> length# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# length X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U81 X -> U81# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U81 X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U61(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X1)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X2)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNatIListKind X -> proper# X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNatKind X -> isNatKind# proper X)
    (proper# U61(X1, X2, X3) -> proper# X3, proper# isNatKind X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U12 X -> U12# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U12 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNatList X -> isNatList# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNatList X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> U11#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U22 X -> U22# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U22 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNat X -> isNat# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNat X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U32 X -> U32# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U32 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U42(X1, X2) -> U42#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U42(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U42(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U43 X -> U43# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U43 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNatIList X -> isNatIList# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNatIList X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> U51#(proper X1, proper X2, proper X3))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U51(X1, X2, X3) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U53 X -> U53# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U53 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U62(X1, X2) -> U62#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U62(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U62(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> U61#(proper X1, proper X2, proper X3))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U63 X -> U63# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U63 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# s X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# length X -> length# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# length X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U81 X -> U81# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U81 X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> U91#(proper X1, proper X2, proper X3, proper X4))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X3)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# U91(X1, X2, X3, X4) -> proper# X4)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> and#(proper X1, proper X2))
    (proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X1)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# and(X1, X2) -> proper# X2)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNatIListKind X -> isNatIListKind# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNatIListKind X -> proper# X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNatKind X -> isNatKind# proper X)
    (proper# U41(X1, X2, X3) -> proper# X3, proper# isNatKind X -> proper# X)
    (U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3), U61#(mark X1, X2, X3) -> U61#(X1, X2, X3))
    (U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3), U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3))
    (U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3), U51#(mark X1, X2, X3) -> U51#(X1, X2, X3))
    (U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3), U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3))
    (U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3))
    (U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3))
    (active# U61(X1, X2, X3) -> U61#(active X1, X2, X3), U61#(mark X1, X2, X3) -> U61#(X1, X2, X3))
    (active# U61(X1, X2, X3) -> U61#(active X1, X2, X3), U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3))
    (active# U41(X1, X2, X3) -> U41#(active X1, X2, X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3))
    (active# U41(X1, X2, X3) -> U41#(active X1, X2, X3), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3))
    (active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)), and#(mark X1, X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> and#(and(isNat M, isNatKind M), and(isNat N, isNatKind N)), and#(ok X1, ok X2) -> and#(X1, X2))
    (active# take(s M, cons(N, IL)) -> isNatKind# M, isNatKind# ok X -> isNatKind# X)
    (active# isNatIList V -> U31#(isNatIListKind V, V), U31#(mark X1, X2) -> U31#(X1, X2))
    (active# isNatIList V -> U31#(isNatIListKind V, V), U31#(ok X1, ok X2) -> U31#(X1, X2))
    (active# isNatKind s V1 -> isNatKind# V1, isNatKind# ok X -> isNatKind# X)
    (active# isNatIListKind cons(V1, V2) -> isNatKind# V1, isNatKind# ok X -> isNatKind# X)
    (active# U51(tt(), V1, V2) -> isNat# V1, isNat# ok X -> isNat# X)
    (active# U41(tt(), V1, V2) -> isNat# V1, isNat# ok X -> isNat# X)
    (active# isNat length V1 -> isNatIListKind# V1, isNatIListKind# ok X -> isNatIListKind# X)
    (active# U11(tt(), V1) -> isNatList# V1, isNatList# ok X -> isNatList# X)
    (active# isNatList cons(V1, V2) -> isNatKind# V1, isNatKind# ok X -> isNatKind# X)
   }
   STATUS:
    arrows: 0.890621
    SCCS (31):
     Scc:
      {top# mark X -> top# proper X,
         top# ok X -> top# active X}
     Scc:
      {       active# cons(X1, X2) -> active# X1,
                     active# U12 X -> active# X,
               active# U11(X1, X2) -> active# X1,
                     active# U22 X -> active# X,
               active# U21(X1, X2) -> active# X1,
                     active# U32 X -> active# X,
               active# U31(X1, X2) -> active# X1,
               active# U42(X1, X2) -> active# X1,
           active# U41(X1, X2, X3) -> active# X1,
                     active# U43 X -> active# X,
               active# U52(X1, X2) -> active# X1,
           active# U51(X1, X2, X3) -> active# X1,
                     active# U53 X -> active# X,
               active# U62(X1, X2) -> active# X1,
           active# U61(X1, X2, X3) -> active# X1,
                     active# U63 X -> active# X,
                       active# s X -> active# X,
                  active# length X -> active# X,
               active# U71(X1, X2) -> active# X1,
                     active# U81 X -> active# X,
              active# take(X1, X2) -> active# X1,
              active# take(X1, X2) -> active# X2,
       active# U91(X1, X2, X3, X4) -> active# X1,
               active# and(X1, X2) -> active# X1}
     Scc:
      {       proper# cons(X1, X2) -> proper# X1,
              proper# cons(X1, X2) -> proper# X2,
                     proper# U12 X -> proper# X,
               proper# isNatList X -> proper# X,
               proper# U11(X1, X2) -> proper# X1,
               proper# U11(X1, X2) -> proper# X2,
                     proper# U22 X -> proper# X,
                   proper# isNat X -> proper# X,
               proper# U21(X1, X2) -> proper# X1,
               proper# U21(X1, X2) -> proper# X2,
                     proper# U32 X -> proper# X,
               proper# U31(X1, X2) -> proper# X1,
               proper# U31(X1, X2) -> proper# X2,
               proper# U42(X1, X2) -> proper# X1,
               proper# U42(X1, X2) -> proper# X2,
           proper# U41(X1, X2, X3) -> proper# X1,
           proper# U41(X1, X2, X3) -> proper# X2,
           proper# U41(X1, X2, X3) -> proper# X3,
                     proper# U43 X -> proper# X,
              proper# isNatIList X -> proper# X,
               proper# U52(X1, X2) -> proper# X1,
               proper# U52(X1, X2) -> proper# X2,
           proper# U51(X1, X2, X3) -> proper# X1,
           proper# U51(X1, X2, X3) -> proper# X2,
           proper# U51(X1, X2, X3) -> proper# X3,
                     proper# U53 X -> proper# X,
               proper# U62(X1, X2) -> proper# X1,
               proper# U62(X1, X2) -> proper# X2,
           proper# U61(X1, X2, X3) -> proper# X1,
           proper# U61(X1, X2, X3) -> proper# X2,
           proper# U61(X1, X2, X3) -> proper# X3,
                     proper# U63 X -> proper# X,
                       proper# s X -> proper# X,
                  proper# length X -> proper# X,
               proper# U71(X1, X2) -> proper# X1,
               proper# U71(X1, X2) -> proper# X2,
                     proper# U81 X -> proper# X,
              proper# take(X1, X2) -> proper# X1,
              proper# take(X1, X2) -> proper# X2,
       proper# U91(X1, X2, X3, X4) -> proper# X1,
       proper# U91(X1, X2, X3, X4) -> proper# X2,
       proper# U91(X1, X2, X3, X4) -> proper# X3,
       proper# U91(X1, X2, X3, X4) -> proper# X4,
               proper# and(X1, X2) -> proper# X1,
               proper# and(X1, X2) -> proper# X2,
          proper# isNatIListKind X -> proper# X,
               proper# isNatKind X -> proper# X}
     Scc:
      {       U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4),
       U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4)}
     Scc:
      { take#(X1, mark X2) -> take#(X1, X2),
        take#(mark X1, X2) -> take#(X1, X2),
       take#(ok X1, ok X2) -> take#(X1, X2)}
     Scc:
      {U81# mark X -> U81# X,
         U81# ok X -> U81# X}
     Scc:
      { U71#(mark X1, X2) -> U71#(X1, X2),
       U71#(ok X1, ok X2) -> U71#(X1, X2)}
     Scc:
      {length# mark X -> length# X,
         length# ok X -> length# X}
     Scc:
      {s# mark X -> s# X,
         s# ok X -> s# X}
     Scc:
      {U63# mark X -> U63# X,
         U63# ok X -> U63# X}
     Scc:
      { U62#(mark X1, X2) -> U62#(X1, X2),
       U62#(ok X1, ok X2) -> U62#(X1, X2)}
     Scc:
      {U53# mark X -> U53# X,
         U53# ok X -> U53# X}
     Scc:
      { U52#(mark X1, X2) -> U52#(X1, X2),
       U52#(ok X1, ok X2) -> U52#(X1, X2)}
     Scc:
      {isNatIList# ok X -> isNatIList# X}
     Scc:
      {U43# mark X -> U43# X,
         U43# ok X -> U43# X}
     Scc:
      { U42#(mark X1, X2) -> U42#(X1, X2),
       U42#(ok X1, ok X2) -> U42#(X1, X2)}
     Scc:
      {U32# mark X -> U32# X,
         U32# ok X -> U32# X}
     Scc:
      { U21#(mark X1, X2) -> U21#(X1, X2),
       U21#(ok X1, ok X2) -> U21#(X1, X2)}
     Scc:
      {U22# mark X -> U22# X,
         U22# ok X -> U22# X}
     Scc:
      { U11#(mark X1, X2) -> U11#(X1, X2),
       U11#(ok X1, ok X2) -> U11#(X1, X2)}
     Scc:
      {U12# mark X -> U12# X,
         U12# ok X -> U12# X}
     Scc:
      { cons#(mark X1, X2) -> cons#(X1, X2),
       cons#(ok X1, ok X2) -> cons#(X1, X2)}
     Scc:
      {    U61#(mark X1, X2, X3) -> U61#(X1, X2, X3),
       U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3)}
     Scc:
      {    U51#(mark X1, X2, X3) -> U51#(X1, X2, X3),
       U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3)}
     Scc:
      {    U41#(mark X1, X2, X3) -> U41#(X1, X2, X3),
       U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3)}
     Scc:
      { and#(mark X1, X2) -> and#(X1, X2),
       and#(ok X1, ok X2) -> and#(X1, X2)}
     Scc:
      { U31#(mark X1, X2) -> U31#(X1, X2),
       U31#(ok X1, ok X2) -> U31#(X1, X2)}
     Scc:
      {isNat# ok X -> isNat# X}
     Scc:
      {isNatIListKind# ok X -> isNatIListKind# X}
     Scc:
      {isNatList# ok X -> isNatList# X}
     Scc:
      {isNatKind# ok X -> isNatKind# X}
     
     SCC (2):
      Strict:
       {top# mark X -> top# proper X,
          top# ok X -> top# active X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (24):
      Strict:
       {       active# cons(X1, X2) -> active# X1,
                      active# U12 X -> active# X,
                active# U11(X1, X2) -> active# X1,
                      active# U22 X -> active# X,
                active# U21(X1, X2) -> active# X1,
                      active# U32 X -> active# X,
                active# U31(X1, X2) -> active# X1,
                active# U42(X1, X2) -> active# X1,
            active# U41(X1, X2, X3) -> active# X1,
                      active# U43 X -> active# X,
                active# U52(X1, X2) -> active# X1,
            active# U51(X1, X2, X3) -> active# X1,
                      active# U53 X -> active# X,
                active# U62(X1, X2) -> active# X1,
            active# U61(X1, X2, X3) -> active# X1,
                      active# U63 X -> active# X,
                        active# s X -> active# X,
                   active# length X -> active# X,
                active# U71(X1, X2) -> active# X1,
                      active# U81 X -> active# X,
               active# take(X1, X2) -> active# X1,
               active# take(X1, X2) -> active# X2,
        active# U91(X1, X2, X3, X4) -> active# X1,
                active# and(X1, X2) -> active# X1}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     SCC (47):
      Strict:
       {       proper# cons(X1, X2) -> proper# X1,
               proper# cons(X1, X2) -> proper# X2,
                      proper# U12 X -> proper# X,
                proper# isNatList X -> proper# X,
                proper# U11(X1, X2) -> proper# X1,
                proper# U11(X1, X2) -> proper# X2,
                      proper# U22 X -> proper# X,
                    proper# isNat X -> proper# X,
                proper# U21(X1, X2) -> proper# X1,
                proper# U21(X1, X2) -> proper# X2,
                      proper# U32 X -> proper# X,
                proper# U31(X1, X2) -> proper# X1,
                proper# U31(X1, X2) -> proper# X2,
                proper# U42(X1, X2) -> proper# X1,
                proper# U42(X1, X2) -> proper# X2,
            proper# U41(X1, X2, X3) -> proper# X1,
            proper# U41(X1, X2, X3) -> proper# X2,
            proper# U41(X1, X2, X3) -> proper# X3,
                      proper# U43 X -> proper# X,
               proper# isNatIList X -> proper# X,
                proper# U52(X1, X2) -> proper# X1,
                proper# U52(X1, X2) -> proper# X2,
            proper# U51(X1, X2, X3) -> proper# X1,
            proper# U51(X1, X2, X3) -> proper# X2,
            proper# U51(X1, X2, X3) -> proper# X3,
                      proper# U53 X -> proper# X,
                proper# U62(X1, X2) -> proper# X1,
                proper# U62(X1, X2) -> proper# X2,
            proper# U61(X1, X2, X3) -> proper# X1,
            proper# U61(X1, X2, X3) -> proper# X2,
            proper# U61(X1, X2, X3) -> proper# X3,
                      proper# U63 X -> proper# X,
                        proper# s X -> proper# X,
                   proper# length X -> proper# X,
                proper# U71(X1, X2) -> proper# X1,
                proper# U71(X1, X2) -> proper# X2,
                      proper# U81 X -> proper# X,
               proper# take(X1, X2) -> proper# X1,
               proper# take(X1, X2) -> proper# X2,
        proper# U91(X1, X2, X3, X4) -> proper# X1,
        proper# U91(X1, X2, X3, X4) -> proper# X2,
        proper# U91(X1, X2, X3, X4) -> proper# X3,
        proper# U91(X1, X2, X3, X4) -> proper# X4,
                proper# and(X1, X2) -> proper# X1,
                proper# and(X1, X2) -> proper# X2,
           proper# isNatIListKind X -> proper# X,
                proper# isNatKind X -> proper# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     
     
     SCC (2):
      Strict:
       {       U91#(mark X1, X2, X3, X4) -> U91#(X1, X2, X3, X4),
        U91#(ok X1, ok X2, ok X3, ok X4) -> U91#(X1, X2, X3, X4)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (3):
      Strict:
       { take#(X1, mark X2) -> take#(X1, X2),
         take#(mark X1, X2) -> take#(X1, X2),
        take#(ok X1, ok X2) -> take#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       {U81# mark X -> U81# X,
          U81# ok X -> U81# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       { U71#(mark X1, X2) -> U71#(X1, X2),
        U71#(ok X1, ok X2) -> U71#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       {length# mark X -> length# X,
          length# ok X -> length# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       {s# mark X -> s# X,
          s# ok X -> s# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       {U63# mark X -> U63# X,
          U63# ok X -> U63# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (2):
      Strict:
       { U62#(mark X1, X2) -> U62#(X1, X2),
        U62#(ok X1, ok X2) -> U62#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       {U53# mark X -> U53# X,
          U53# ok X -> U53# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (2):
      Strict:
       { U52#(mark X1, X2) -> U52#(X1, X2),
        U52#(ok X1, ok X2) -> U52#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (1):
      Strict:
       {isNatIList# ok X -> isNatIList# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       {U43# mark X -> U43# X,
          U43# ok X -> U43# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (2):
      Strict:
       { U42#(mark X1, X2) -> U42#(X1, X2),
        U42#(ok X1, ok X2) -> U42#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (2):
      Strict:
       {U32# mark X -> U32# X,
          U32# ok X -> U32# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       { U21#(mark X1, X2) -> U21#(X1, X2),
        U21#(ok X1, ok X2) -> U21#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (2):
      Strict:
       {U22# mark X -> U22# X,
          U22# ok X -> U22# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       { U11#(mark X1, X2) -> U11#(X1, X2),
        U11#(ok X1, ok X2) -> U11#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (2):
      Strict:
       {U12# mark X -> U12# X,
          U12# ok X -> U12# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (2):
      Strict:
       { cons#(mark X1, X2) -> cons#(X1, X2),
        cons#(ok X1, ok X2) -> cons#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       {    U61#(mark X1, X2, X3) -> U61#(X1, X2, X3),
        U61#(ok X1, ok X2, ok X3) -> U61#(X1, X2, X3)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       {    U51#(mark X1, X2, X3) -> U51#(X1, X2, X3),
        U51#(ok X1, ok X2, ok X3) -> U51#(X1, X2, X3)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (2):
      Strict:
       {    U41#(mark X1, X2, X3) -> U41#(X1, X2, X3),
        U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     
     SCC (2):
      Strict:
       { and#(mark X1, X2) -> and#(X1, X2),
        and#(ok X1, ok X2) -> and#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     
     SCC (2):
      Strict:
       { U31#(mark X1, X2) -> U31#(X1, X2),
        U31#(ok X1, ok X2) -> U31#(X1, X2)}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     
     
     
     
     
     
     
     SCC (1):
      Strict:
       {isNat# ok X -> isNat# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     SCC (1):
      Strict:
       {isNatIListKind# ok X -> isNatIListKind# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (1):
      Strict:
       {isNatList# ok X -> isNatList# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open
     
     
     SCC (1):
      Strict:
       {isNatKind# ok X -> isNatKind# X}
      Weak:
      {                 cons(mark X1, X2) -> mark cons(X1, X2),
                       cons(ok X1, ok X2) -> ok cons(X1, X2),
                      active cons(X1, X2) -> cons(active X1, X2),
                           active zeros() -> mark cons(0(), zeros()),
                             active U12 X -> U12 active X,
                          active U12 tt() -> mark tt(),
            active isNatList cons(V1, V2) -> mark U51(and(isNatKind V1, isNatIListKind V2), V1, V2),
                   active isNatList nil() -> mark tt(),
            active isNatList take(V1, V2) -> mark U61(and(isNatKind V1, isNatIListKind V2), V1, V2),
                       active U11(X1, X2) -> U11(active X1, X2),
                     active U11(tt(), V1) -> mark U12 isNatList V1,
                             active U22 X -> U22 active X,
                          active U22 tt() -> mark tt(),
                         active isNat 0() -> mark tt(),
                        active isNat s V1 -> mark U21(isNatKind V1, V1),
                   active isNat length V1 -> mark U11(isNatIListKind V1, V1),
                       active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), V1) -> mark U22 isNat V1,
                             active U32 X -> U32 active X,
                          active U32 tt() -> mark tt(),
                       active U31(X1, X2) -> U31(active X1, X2),
                      active U31(tt(), V) -> mark U32 isNatList V,
                       active U42(X1, X2) -> U42(active X1, X2),
                     active U42(tt(), V2) -> mark U43 isNatIList V2,
                   active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), V1, V2) -> mark U42(isNat V1, V2),
                             active U43 X -> U43 active X,
                          active U43 tt() -> mark tt(),
                      active isNatIList V -> mark U31(isNatIListKind V, V),
           active isNatIList cons(V1, V2) -> mark U41(and(isNatKind V1, isNatIListKind V2), V1, V2),
                active isNatIList zeros() -> mark tt(),
                       active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), V2) -> mark U53 isNatList V2,
                   active U51(X1, X2, X3) -> U51(active X1, X2, X3),
                 active U51(tt(), V1, V2) -> mark U52(isNat V1, V2),
                             active U53 X -> U53 active X,
                          active U53 tt() -> mark tt(),
                       active U62(X1, X2) -> U62(active X1, X2),
                     active U62(tt(), V2) -> mark U63 isNatIList V2,
                   active U61(X1, X2, X3) -> U61(active X1, X2, X3),
                 active U61(tt(), V1, V2) -> mark U62(isNat V1, V2),
                             active U63 X -> U63 active X,
                          active U63 tt() -> mark tt(),
                               active s X -> s active X,
                          active length X -> length active X,
                 active length cons(N, L) -> mark U71(and(and(isNatList L, isNatIListKind L), and(isNat N, isNatKind N)), L),
                      active length nil() -> mark 0(),
                       active U71(X1, X2) -> U71(active X1, X2),
                      active U71(tt(), L) -> mark s length L,
                             active U81 X -> U81 active X,
                          active U81 tt() -> mark nil(),
                      active take(X1, X2) -> take(X1, active X2),
                      active take(X1, X2) -> take(active X1, X2),
                     active take(0(), IL) -> mark U81 and(isNatIList IL, isNatIListKind IL),
            active take(s M, cons(N, IL)) -> mark U91(and(and(isNatIList IL, isNatIListKind IL), and(and(isNat M, isNatKind M), and(isNat N, isNatKind N))), IL, M, N),
               active U91(X1, X2, X3, X4) -> U91(active X1, X2, X3, X4),
               active U91(tt(), IL, M, N) -> mark cons(N, take(M, IL)),
                       active and(X1, X2) -> and(active X1, X2),
                      active and(tt(), X) -> mark X,
       active isNatIListKind cons(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
            active isNatIListKind zeros() -> mark tt(),
              active isNatIListKind nil() -> mark tt(),
       active isNatIListKind take(V1, V2) -> mark and(isNatKind V1, isNatIListKind V2),
                     active isNatKind 0() -> mark tt(),
                    active isNatKind s V1 -> mark isNatKind V1,
               active isNatKind length V1 -> mark isNatIListKind V1,
                               U12 mark X -> mark U12 X,
                                 U12 ok X -> ok U12 X,
                           isNatList ok X -> ok isNatList X,
                         U11(mark X1, X2) -> mark U11(X1, X2),
                        U11(ok X1, ok X2) -> ok U11(X1, X2),
                               U22 mark X -> mark U22 X,
                                 U22 ok X -> ok U22 X,
                               isNat ok X -> ok isNat X,
                         U21(mark X1, X2) -> mark U21(X1, X2),
                        U21(ok X1, ok X2) -> ok U21(X1, X2),
                               U32 mark X -> mark U32 X,
                                 U32 ok X -> ok U32 X,
                         U31(mark X1, X2) -> mark U31(X1, X2),
                        U31(ok X1, ok X2) -> ok U31(X1, X2),
                         U42(mark X1, X2) -> mark U42(X1, X2),
                        U42(ok X1, ok X2) -> ok U42(X1, X2),
                     U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                 U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                               U43 mark X -> mark U43 X,
                                 U43 ok X -> ok U43 X,
                          isNatIList ok X -> ok isNatIList X,
                         U52(mark X1, X2) -> mark U52(X1, X2),
                        U52(ok X1, ok X2) -> ok U52(X1, X2),
                     U51(mark X1, X2, X3) -> mark U51(X1, X2, X3),
                 U51(ok X1, ok X2, ok X3) -> ok U51(X1, X2, X3),
                               U53 mark X -> mark U53 X,
                                 U53 ok X -> ok U53 X,
                         U62(mark X1, X2) -> mark U62(X1, X2),
                        U62(ok X1, ok X2) -> ok U62(X1, X2),
                     U61(mark X1, X2, X3) -> mark U61(X1, X2, X3),
                 U61(ok X1, ok X2, ok X3) -> ok U61(X1, X2, X3),
                               U63 mark X -> mark U63 X,
                                 U63 ok X -> ok U63 X,
                                 s mark X -> mark s X,
                                   s ok X -> ok s X,
                            length mark X -> mark length X,
                              length ok X -> ok length X,
                         U71(mark X1, X2) -> mark U71(X1, X2),
                        U71(ok X1, ok X2) -> ok U71(X1, X2),
                               U81 mark X -> mark U81 X,
                                 U81 ok X -> ok U81 X,
                        take(X1, mark X2) -> mark take(X1, X2),
                        take(mark X1, X2) -> mark take(X1, X2),
                       take(ok X1, ok X2) -> ok take(X1, X2),
                 U91(mark X1, X2, X3, X4) -> mark U91(X1, X2, X3, X4),
          U91(ok X1, ok X2, ok X3, ok X4) -> ok U91(X1, X2, X3, X4),
                         and(mark X1, X2) -> mark and(X1, X2),
                        and(ok X1, ok X2) -> ok and(X1, X2),
                      isNatIListKind ok X -> ok isNatIListKind X,
                           isNatKind ok X -> ok isNatKind X,
                      proper cons(X1, X2) -> cons(proper X1, proper X2),
                               proper 0() -> ok 0(),
                           proper zeros() -> ok zeros(),
                             proper U12 X -> U12 proper X,
                       proper isNatList X -> isNatList proper X,
                       proper U11(X1, X2) -> U11(proper X1, proper X2),
                              proper tt() -> ok tt(),
                             proper U22 X -> U22 proper X,
                           proper isNat X -> isNat proper X,
                       proper U21(X1, X2) -> U21(proper X1, proper X2),
                             proper U32 X -> U32 proper X,
                       proper U31(X1, X2) -> U31(proper X1, proper X2),
                       proper U42(X1, X2) -> U42(proper X1, proper X2),
                   proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                             proper U43 X -> U43 proper X,
                      proper isNatIList X -> isNatIList proper X,
                       proper U52(X1, X2) -> U52(proper X1, proper X2),
                   proper U51(X1, X2, X3) -> U51(proper X1, proper X2, proper X3),
                             proper U53 X -> U53 proper X,
                       proper U62(X1, X2) -> U62(proper X1, proper X2),
                   proper U61(X1, X2, X3) -> U61(proper X1, proper X2, proper X3),
                             proper U63 X -> U63 proper X,
                               proper s X -> s proper X,
                          proper length X -> length proper X,
                       proper U71(X1, X2) -> U71(proper X1, proper X2),
                             proper nil() -> ok nil(),
                             proper U81 X -> U81 proper X,
                      proper take(X1, X2) -> take(proper X1, proper X2),
               proper U91(X1, X2, X3, X4) -> U91(proper X1, proper X2, proper X3, proper X4),
                       proper and(X1, X2) -> and(proper X1, proper X2),
                  proper isNatIListKind X -> isNatIListKind proper X,
                       proper isNatKind X -> isNatKind proper X,
                               top mark X -> top proper X,
                                 top ok X -> top active X}
      Open