MAYBE
Time: 3.132205
TRS:
 {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
          U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
            active U12(X1, X2, X3) -> U12(active X1, X2, X3),
           active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
            active U11(X1, X2, X3) -> U11(active X1, X2, X3),
           active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                      active snd X -> snd active X,
             active snd pair(X, Y) -> mark U51(tt(), Y),
            active splitAt(X1, X2) -> splitAt(X1, active X2),
            active splitAt(X1, X2) -> splitAt(active X1, X2),
  active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
           active splitAt(0(), XS) -> mark pair(nil(), XS),
                active U22(X1, X2) -> U22(active X1, X2),
               active U22(tt(), X) -> mark X,
                active U21(X1, X2) -> U21(active X1, X2),
               active U21(tt(), X) -> mark U22(tt(), X),
                active U32(X1, X2) -> U32(active X1, X2),
               active U32(tt(), N) -> mark N,
                active U31(X1, X2) -> U31(active X1, X2),
               active U31(tt(), N) -> mark U32(tt(), N),
            active U42(X1, X2, X3) -> U42(active X1, X2, X3),
           active U42(tt(), N, XS) -> mark head afterNth(N, XS),
            active U41(X1, X2, X3) -> U41(active X1, X2, X3),
           active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                     active head X -> head active X,
           active head cons(N, XS) -> mark U31(tt(), N),
            active afterNth(N, XS) -> mark U11(tt(), N, XS),
           active afterNth(X1, X2) -> afterNth(X1, active X2),
           active afterNth(X1, X2) -> afterNth(active X1, X2),
                active U52(X1, X2) -> U52(active X1, X2),
               active U52(tt(), Y) -> mark Y,
                active U51(X1, X2) -> U51(active X1, X2),
               active U51(tt(), Y) -> mark U52(tt(), Y),
        active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
        active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
        active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
        active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
        active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
        active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                active U64(X1, X2) -> U64(active X1, X2),
       active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
               active pair(X1, X2) -> pair(X1, active X2),
               active pair(X1, X2) -> pair(active X1, X2),
               active cons(X1, X2) -> cons(active X1, X2),
                active U72(X1, X2) -> U72(active X1, X2),
              active U72(tt(), XS) -> mark XS,
                active U71(X1, X2) -> U71(active X1, X2),
              active U71(tt(), XS) -> mark U72(tt(), XS),
            active U82(X1, X2, X3) -> U82(active X1, X2, X3),
           active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
            active U81(X1, X2, X3) -> U81(active X1, X2, X3),
           active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                      active fst X -> fst active X,
             active fst pair(X, Y) -> mark U21(tt(), X),
                 active natsFrom N -> mark cons(N, natsFrom s N),
                 active natsFrom X -> natsFrom active X,
                        active s X -> s active X,
                 active sel(N, XS) -> mark U41(tt(), N, XS),
                active sel(X1, X2) -> sel(X1, active X2),
                active sel(X1, X2) -> sel(active X1, X2),
                     active tail X -> tail active X,
           active tail cons(N, XS) -> mark U71(tt(), XS),
                active take(N, XS) -> mark U81(tt(), N, XS),
               active take(X1, X2) -> take(X1, active X2),
               active take(X1, X2) -> take(active X1, X2),
              U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
          U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                        snd mark X -> mark snd X,
                          snd ok X -> ok snd X,
              splitAt(X1, mark X2) -> mark splitAt(X1, X2),
              splitAt(mark X1, X2) -> mark splitAt(X1, X2),
             splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                  U22(mark X1, X2) -> mark U22(X1, X2),
                 U22(ok X1, ok X2) -> ok U22(X1, X2),
                  U21(mark X1, X2) -> mark U21(X1, X2),
                 U21(ok X1, ok X2) -> ok U21(X1, X2),
                  U32(mark X1, X2) -> mark U32(X1, X2),
                 U32(ok X1, ok X2) -> ok U32(X1, X2),
                  U31(mark X1, X2) -> mark U31(X1, X2),
                 U31(ok X1, ok X2) -> ok U31(X1, X2),
              U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
          U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
              U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
          U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                       head mark X -> mark head X,
                         head ok X -> ok head X,
             afterNth(X1, mark X2) -> mark afterNth(X1, X2),
             afterNth(mark X1, X2) -> mark afterNth(X1, X2),
            afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                  U52(mark X1, X2) -> mark U52(X1, X2),
                 U52(ok X1, ok X2) -> ok U52(X1, X2),
                  U51(mark X1, X2) -> mark U51(X1, X2),
                 U51(ok X1, ok X2) -> ok U51(X1, X2),
          U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
   U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
          U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
   U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
          U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
   U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                  U64(mark X1, X2) -> mark U64(X1, X2),
                 U64(ok X1, ok X2) -> ok U64(X1, X2),
                 pair(X1, mark X2) -> mark pair(X1, X2),
                 pair(mark X1, X2) -> mark pair(X1, X2),
                pair(ok X1, ok X2) -> ok pair(X1, X2),
                 cons(mark X1, X2) -> mark cons(X1, X2),
                cons(ok X1, ok X2) -> ok cons(X1, X2),
                  U72(mark X1, X2) -> mark U72(X1, X2),
                 U72(ok X1, ok X2) -> ok U72(X1, X2),
                  U71(mark X1, X2) -> mark U71(X1, X2),
                 U71(ok X1, ok X2) -> ok U71(X1, X2),
              U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
          U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
              U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
          U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                        fst mark X -> mark fst X,
                          fst ok X -> ok fst X,
                   natsFrom mark X -> mark natsFrom X,
                     natsFrom ok X -> ok natsFrom X,
                          s mark X -> mark s X,
                            s ok X -> ok s X,
                  sel(X1, mark X2) -> mark sel(X1, X2),
                  sel(mark X1, X2) -> mark sel(X1, X2),
                 sel(ok X1, ok X2) -> ok sel(X1, X2),
                       tail mark X -> mark tail X,
                         tail ok X -> ok tail 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),
            proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                       proper tt() -> ok tt(),
            proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                      proper snd X -> snd proper X,
            proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                proper U22(X1, X2) -> U22(proper X1, proper X2),
                proper U21(X1, X2) -> U21(proper X1, proper X2),
                proper U32(X1, X2) -> U32(proper X1, proper X2),
                proper U31(X1, X2) -> U31(proper X1, proper X2),
            proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
            proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                     proper head X -> head proper X,
           proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                proper U52(X1, X2) -> U52(proper X1, proper X2),
                proper U51(X1, X2) -> U51(proper X1, proper X2),
        proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
        proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
        proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                proper U64(X1, X2) -> U64(proper X1, proper X2),
               proper pair(X1, X2) -> pair(proper X1, proper X2),
               proper cons(X1, X2) -> cons(proper X1, proper X2),
                proper U72(X1, X2) -> U72(proper X1, proper X2),
                proper U71(X1, X2) -> U71(proper X1, proper X2),
            proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
            proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                      proper fst X -> fst proper X,
                 proper natsFrom X -> natsFrom proper X,
                        proper s X -> s proper X,
                proper sel(X1, X2) -> sel(proper X1, proper X2),
                      proper nil() -> ok nil(),
                        proper 0() -> ok 0(),
                     proper tail X -> tail proper X,
               proper take(X1, X2) -> take(proper X1, proper X2),
                        top mark X -> top proper X,
                          top ok X -> top active X}
 DP:
  DP:
   {
                U12#(mark X1, X2, X3) -> U12#(X1, X2, X3),
            U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3),
              active# U12(X1, X2, X3) -> U12#(active X1, X2, X3),
              active# U12(X1, X2, X3) -> active# X1,
             active# U12(tt(), N, XS) -> snd# splitAt(N, XS),
             active# U12(tt(), N, XS) -> splitAt#(N, XS),
              active# U11(X1, X2, X3) -> active# X1,
              active# U11(X1, X2, X3) -> U11#(active X1, X2, X3),
             active# U11(tt(), N, XS) -> U12#(tt(), N, XS),
                        active# snd X -> active# X,
                        active# snd X -> snd# active X,
               active# snd pair(X, Y) -> U51#(tt(), Y),
              active# splitAt(X1, X2) -> active# X1,
              active# splitAt(X1, X2) -> active# X2,
              active# splitAt(X1, X2) -> splitAt#(X1, active X2),
              active# splitAt(X1, X2) -> splitAt#(active X1, X2),
    active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS),
             active# splitAt(0(), XS) -> pair#(nil(), XS),
                  active# U22(X1, X2) -> active# X1,
                  active# U22(X1, X2) -> U22#(active X1, X2),
                  active# U21(X1, X2) -> active# X1,
                  active# U21(X1, X2) -> U21#(active X1, X2),
                 active# U21(tt(), X) -> U22#(tt(), X),
                  active# U32(X1, X2) -> active# X1,
                  active# U32(X1, X2) -> U32#(active X1, X2),
                  active# U31(X1, X2) -> active# X1,
                  active# U31(X1, X2) -> U31#(active X1, X2),
                 active# U31(tt(), N) -> U32#(tt(), N),
              active# U42(X1, X2, X3) -> active# X1,
              active# U42(X1, X2, X3) -> U42#(active X1, X2, X3),
             active# U42(tt(), N, XS) -> head# afterNth(N, XS),
             active# U42(tt(), N, XS) -> afterNth#(N, XS),
              active# U41(X1, X2, X3) -> active# X1,
              active# U41(X1, X2, X3) -> U41#(active X1, X2, X3),
             active# U41(tt(), N, XS) -> U42#(tt(), N, XS),
                       active# head X -> active# X,
                       active# head X -> head# active X,
             active# head cons(N, XS) -> U31#(tt(), N),
              active# afterNth(N, XS) -> U11#(tt(), N, XS),
             active# afterNth(X1, X2) -> active# X1,
             active# afterNth(X1, X2) -> active# X2,
             active# afterNth(X1, X2) -> afterNth#(X1, active X2),
             active# afterNth(X1, X2) -> afterNth#(active X1, X2),
                  active# U52(X1, X2) -> active# X1,
                  active# U52(X1, X2) -> U52#(active X1, X2),
                  active# U51(X1, X2) -> active# X1,
                  active# U51(X1, X2) -> U51#(active X1, X2),
                 active# U51(tt(), Y) -> U52#(tt(), Y),
          active# U62(X1, X2, X3, X4) -> active# X1,
          active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4),
          active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS),
          active# U61(X1, X2, X3, X4) -> active# X1,
          active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4),
          active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS),
          active# U63(X1, X2, X3, X4) -> active# X1,
          active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4),
          active# U63(tt(), N, X, XS) -> splitAt#(N, XS),
          active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X),
                  active# U64(X1, X2) -> active# X1,
                  active# U64(X1, X2) -> U64#(active X1, X2),
         active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS),
         active# U64(pair(YS, ZS), X) -> cons#(X, YS),
                 active# pair(X1, X2) -> active# X1,
                 active# pair(X1, X2) -> active# X2,
                 active# pair(X1, X2) -> pair#(X1, active X2),
                 active# pair(X1, X2) -> pair#(active X1, X2),
                 active# cons(X1, X2) -> active# X1,
                 active# cons(X1, X2) -> cons#(active X1, X2),
                  active# U72(X1, X2) -> active# X1,
                  active# U72(X1, X2) -> U72#(active X1, X2),
                  active# U71(X1, X2) -> active# X1,
                  active# U71(X1, X2) -> U71#(active X1, X2),
                active# U71(tt(), XS) -> U72#(tt(), XS),
              active# U82(X1, X2, X3) -> active# X1,
              active# U82(X1, X2, X3) -> U82#(active X1, X2, X3),
             active# U82(tt(), N, XS) -> splitAt#(N, XS),
             active# U82(tt(), N, XS) -> fst# splitAt(N, XS),
              active# U81(X1, X2, X3) -> active# X1,
              active# U81(X1, X2, X3) -> U81#(active X1, X2, X3),
             active# U81(tt(), N, XS) -> U82#(tt(), N, XS),
                        active# fst X -> active# X,
                        active# fst X -> fst# active X,
               active# fst pair(X, Y) -> U21#(tt(), X),
                   active# natsFrom N -> cons#(N, natsFrom s N),
                   active# natsFrom N -> natsFrom# s N,
                   active# natsFrom N -> s# N,
                   active# natsFrom X -> active# X,
                   active# natsFrom X -> natsFrom# active X,
                          active# s X -> active# X,
                          active# s X -> s# active X,
                   active# sel(N, XS) -> U41#(tt(), N, XS),
                  active# sel(X1, X2) -> active# X1,
                  active# sel(X1, X2) -> active# X2,
                  active# sel(X1, X2) -> sel#(X1, active X2),
                  active# sel(X1, X2) -> sel#(active X1, X2),
                       active# tail X -> active# X,
                       active# tail X -> tail# active X,
             active# tail cons(N, XS) -> U71#(tt(), XS),
                  active# take(N, XS) -> U81#(tt(), N, XS),
                 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),
                U11#(mark X1, X2, X3) -> U11#(X1, X2, X3),
            U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3),
                          snd# mark X -> snd# X,
                            snd# ok X -> snd# X,
                splitAt#(X1, mark X2) -> splitAt#(X1, X2),
                splitAt#(mark X1, X2) -> splitAt#(X1, X2),
               splitAt#(ok X1, ok X2) -> splitAt#(X1, X2),
                    U22#(mark X1, X2) -> U22#(X1, X2),
                   U22#(ok X1, ok X2) -> U22#(X1, X2),
                    U21#(mark X1, X2) -> U21#(X1, X2),
                   U21#(ok X1, ok X2) -> U21#(X1, X2),
                    U32#(mark X1, X2) -> U32#(X1, X2),
                   U32#(ok X1, ok X2) -> U32#(X1, X2),
                    U31#(mark X1, X2) -> U31#(X1, X2),
                   U31#(ok X1, ok X2) -> U31#(X1, X2),
                U42#(mark X1, X2, X3) -> U42#(X1, X2, X3),
            U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3),
                U41#(mark X1, X2, X3) -> U41#(X1, X2, X3),
            U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3),
                         head# mark X -> head# X,
                           head# ok X -> head# X,
               afterNth#(X1, mark X2) -> afterNth#(X1, X2),
               afterNth#(mark X1, X2) -> afterNth#(X1, X2),
              afterNth#(ok X1, ok X2) -> afterNth#(X1, X2),
                    U52#(mark X1, X2) -> U52#(X1, X2),
                   U52#(ok X1, ok X2) -> U52#(X1, X2),
                    U51#(mark X1, X2) -> U51#(X1, X2),
                   U51#(ok X1, ok X2) -> U51#(X1, X2),
            U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4),
     U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4),
            U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4),
     U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4),
            U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4),
     U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4),
                    U64#(mark X1, X2) -> U64#(X1, X2),
                   U64#(ok X1, ok X2) -> U64#(X1, X2),
                   pair#(X1, mark X2) -> pair#(X1, X2),
                   pair#(mark X1, X2) -> pair#(X1, X2),
                  pair#(ok X1, ok X2) -> pair#(X1, X2),
                   cons#(mark X1, X2) -> cons#(X1, X2),
                  cons#(ok X1, ok X2) -> cons#(X1, X2),
                    U72#(mark X1, X2) -> U72#(X1, X2),
                   U72#(ok X1, ok X2) -> U72#(X1, X2),
                    U71#(mark X1, X2) -> U71#(X1, X2),
                   U71#(ok X1, ok X2) -> U71#(X1, X2),
                U82#(mark X1, X2, X3) -> U82#(X1, X2, X3),
            U82#(ok X1, ok X2, ok X3) -> U82#(X1, X2, X3),
                U81#(mark X1, X2, X3) -> U81#(X1, X2, X3),
            U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3),
                          fst# mark X -> fst# X,
                            fst# ok X -> fst# X,
                     natsFrom# mark X -> natsFrom# X,
                       natsFrom# ok X -> natsFrom# X,
                            s# mark X -> s# X,
                              s# ok X -> s# X,
                    sel#(X1, mark X2) -> sel#(X1, X2),
                    sel#(mark X1, X2) -> sel#(X1, X2),
                   sel#(ok X1, ok X2) -> sel#(X1, X2),
                         tail# mark X -> tail# X,
                           tail# ok X -> tail# X,
                   take#(X1, mark X2) -> take#(X1, X2),
                   take#(mark X1, X2) -> take#(X1, X2),
                  take#(ok X1, ok X2) -> take#(X1, X2),
              proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3),
              proper# U12(X1, X2, X3) -> proper# X1,
              proper# U12(X1, X2, X3) -> proper# X2,
              proper# U12(X1, X2, X3) -> proper# X3,
              proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3),
              proper# U11(X1, X2, X3) -> proper# X1,
              proper# U11(X1, X2, X3) -> proper# X2,
              proper# U11(X1, X2, X3) -> proper# X3,
                        proper# snd X -> snd# proper X,
                        proper# snd X -> proper# X,
              proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2),
              proper# splitAt(X1, X2) -> proper# X1,
              proper# splitAt(X1, X2) -> proper# X2,
                  proper# U22(X1, X2) -> U22#(proper X1, proper X2),
                  proper# U22(X1, X2) -> proper# X1,
                  proper# U22(X1, X2) -> proper# X2,
                  proper# U21(X1, X2) -> U21#(proper X1, proper X2),
                  proper# U21(X1, X2) -> proper# X1,
                  proper# U21(X1, X2) -> proper# X2,
                  proper# U32(X1, X2) -> U32#(proper X1, proper X2),
                  proper# U32(X1, X2) -> proper# X1,
                  proper# U32(X1, X2) -> proper# X2,
                  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, X3) -> U42#(proper X1, proper X2, proper X3),
              proper# U42(X1, X2, X3) -> proper# X1,
              proper# U42(X1, X2, X3) -> proper# X2,
              proper# U42(X1, X2, X3) -> proper# X3,
              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# head X -> head# proper X,
                       proper# head X -> proper# X,
             proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2),
             proper# afterNth(X1, X2) -> proper# X1,
             proper# afterNth(X1, X2) -> proper# X2,
                  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) -> U51#(proper X1, proper X2),
                  proper# U51(X1, X2) -> proper# X1,
                  proper# U51(X1, X2) -> proper# X2,
          proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4),
          proper# U62(X1, X2, X3, X4) -> proper# X1,
          proper# U62(X1, X2, X3, X4) -> proper# X2,
          proper# U62(X1, X2, X3, X4) -> proper# X3,
          proper# U62(X1, X2, X3, X4) -> proper# X4,
          proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4),
          proper# U61(X1, X2, X3, X4) -> proper# X1,
          proper# U61(X1, X2, X3, X4) -> proper# X2,
          proper# U61(X1, X2, X3, X4) -> proper# X3,
          proper# U61(X1, X2, X3, X4) -> proper# X4,
          proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4),
          proper# U63(X1, X2, X3, X4) -> proper# X1,
          proper# U63(X1, X2, X3, X4) -> proper# X2,
          proper# U63(X1, X2, X3, X4) -> proper# X3,
          proper# U63(X1, X2, X3, X4) -> proper# X4,
                  proper# U64(X1, X2) -> U64#(proper X1, proper X2),
                  proper# U64(X1, X2) -> proper# X1,
                  proper# U64(X1, X2) -> proper# X2,
                 proper# pair(X1, X2) -> pair#(proper X1, proper X2),
                 proper# pair(X1, X2) -> proper# X1,
                 proper# pair(X1, X2) -> proper# X2,
                 proper# cons(X1, X2) -> cons#(proper X1, proper X2),
                 proper# cons(X1, X2) -> proper# X1,
                 proper# cons(X1, X2) -> proper# X2,
                  proper# U72(X1, X2) -> U72#(proper X1, proper X2),
                  proper# U72(X1, X2) -> proper# X1,
                  proper# U72(X1, X2) -> proper# X2,
                  proper# U71(X1, X2) -> U71#(proper X1, proper X2),
                  proper# U71(X1, X2) -> proper# X1,
                  proper# U71(X1, X2) -> proper# X2,
              proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3),
              proper# U82(X1, X2, X3) -> proper# X1,
              proper# U82(X1, X2, X3) -> proper# X2,
              proper# U82(X1, X2, X3) -> proper# X3,
              proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3),
              proper# U81(X1, X2, X3) -> proper# X1,
              proper# U81(X1, X2, X3) -> proper# X2,
              proper# U81(X1, X2, X3) -> proper# X3,
                        proper# fst X -> fst# proper X,
                        proper# fst X -> proper# X,
                   proper# natsFrom X -> natsFrom# proper X,
                   proper# natsFrom X -> proper# X,
                          proper# s X -> s# proper X,
                          proper# s X -> proper# X,
                  proper# sel(X1, X2) -> sel#(proper X1, proper X2),
                  proper# sel(X1, X2) -> proper# X1,
                  proper# sel(X1, X2) -> proper# X2,
                       proper# tail X -> tail# proper X,
                       proper# tail X -> proper# X,
                 proper# take(X1, X2) -> take#(proper X1, proper X2),
                 proper# take(X1, X2) -> proper# X1,
                 proper# take(X1, X2) -> proper# X2,
                          top# mark X -> proper# X,
                          top# mark X -> top# proper X,
                            top# ok X -> active# X,
                            top# ok X -> top# active X
   }
  TRS:
  {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
           U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
             active U12(X1, X2, X3) -> U12(active X1, X2, X3),
            active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
             active U11(X1, X2, X3) -> U11(active X1, X2, X3),
            active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                       active snd X -> snd active X,
              active snd pair(X, Y) -> mark U51(tt(), Y),
             active splitAt(X1, X2) -> splitAt(X1, active X2),
             active splitAt(X1, X2) -> splitAt(active X1, X2),
   active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
            active splitAt(0(), XS) -> mark pair(nil(), XS),
                 active U22(X1, X2) -> U22(active X1, X2),
                active U22(tt(), X) -> mark X,
                 active U21(X1, X2) -> U21(active X1, X2),
                active U21(tt(), X) -> mark U22(tt(), X),
                 active U32(X1, X2) -> U32(active X1, X2),
                active U32(tt(), N) -> mark N,
                 active U31(X1, X2) -> U31(active X1, X2),
                active U31(tt(), N) -> mark U32(tt(), N),
             active U42(X1, X2, X3) -> U42(active X1, X2, X3),
            active U42(tt(), N, XS) -> mark head afterNth(N, XS),
             active U41(X1, X2, X3) -> U41(active X1, X2, X3),
            active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                      active head X -> head active X,
            active head cons(N, XS) -> mark U31(tt(), N),
             active afterNth(N, XS) -> mark U11(tt(), N, XS),
            active afterNth(X1, X2) -> afterNth(X1, active X2),
            active afterNth(X1, X2) -> afterNth(active X1, X2),
                 active U52(X1, X2) -> U52(active X1, X2),
                active U52(tt(), Y) -> mark Y,
                 active U51(X1, X2) -> U51(active X1, X2),
                active U51(tt(), Y) -> mark U52(tt(), Y),
         active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
         active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
         active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
         active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
         active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
         active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                 active U64(X1, X2) -> U64(active X1, X2),
        active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                active pair(X1, X2) -> pair(X1, active X2),
                active pair(X1, X2) -> pair(active X1, X2),
                active cons(X1, X2) -> cons(active X1, X2),
                 active U72(X1, X2) -> U72(active X1, X2),
               active U72(tt(), XS) -> mark XS,
                 active U71(X1, X2) -> U71(active X1, X2),
               active U71(tt(), XS) -> mark U72(tt(), XS),
             active U82(X1, X2, X3) -> U82(active X1, X2, X3),
            active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
             active U81(X1, X2, X3) -> U81(active X1, X2, X3),
            active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                       active fst X -> fst active X,
              active fst pair(X, Y) -> mark U21(tt(), X),
                  active natsFrom N -> mark cons(N, natsFrom s N),
                  active natsFrom X -> natsFrom active X,
                         active s X -> s active X,
                  active sel(N, XS) -> mark U41(tt(), N, XS),
                 active sel(X1, X2) -> sel(X1, active X2),
                 active sel(X1, X2) -> sel(active X1, X2),
                      active tail X -> tail active X,
            active tail cons(N, XS) -> mark U71(tt(), XS),
                 active take(N, XS) -> mark U81(tt(), N, XS),
                active take(X1, X2) -> take(X1, active X2),
                active take(X1, X2) -> take(active X1, X2),
               U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
           U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                         snd mark X -> mark snd X,
                           snd ok X -> ok snd X,
               splitAt(X1, mark X2) -> mark splitAt(X1, X2),
               splitAt(mark X1, X2) -> mark splitAt(X1, X2),
              splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                   U22(mark X1, X2) -> mark U22(X1, X2),
                  U22(ok X1, ok X2) -> ok U22(X1, X2),
                   U21(mark X1, X2) -> mark U21(X1, X2),
                  U21(ok X1, ok X2) -> ok U21(X1, X2),
                   U32(mark X1, X2) -> mark U32(X1, X2),
                  U32(ok X1, ok X2) -> ok U32(X1, X2),
                   U31(mark X1, X2) -> mark U31(X1, X2),
                  U31(ok X1, ok X2) -> ok U31(X1, X2),
               U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
           U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
               U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
           U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                        head mark X -> mark head X,
                          head ok X -> ok head X,
              afterNth(X1, mark X2) -> mark afterNth(X1, X2),
              afterNth(mark X1, X2) -> mark afterNth(X1, X2),
             afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                   U52(mark X1, X2) -> mark U52(X1, X2),
                  U52(ok X1, ok X2) -> ok U52(X1, X2),
                   U51(mark X1, X2) -> mark U51(X1, X2),
                  U51(ok X1, ok X2) -> ok U51(X1, X2),
           U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
    U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
           U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
    U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
           U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
    U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                   U64(mark X1, X2) -> mark U64(X1, X2),
                  U64(ok X1, ok X2) -> ok U64(X1, X2),
                  pair(X1, mark X2) -> mark pair(X1, X2),
                  pair(mark X1, X2) -> mark pair(X1, X2),
                 pair(ok X1, ok X2) -> ok pair(X1, X2),
                  cons(mark X1, X2) -> mark cons(X1, X2),
                 cons(ok X1, ok X2) -> ok cons(X1, X2),
                   U72(mark X1, X2) -> mark U72(X1, X2),
                  U72(ok X1, ok X2) -> ok U72(X1, X2),
                   U71(mark X1, X2) -> mark U71(X1, X2),
                  U71(ok X1, ok X2) -> ok U71(X1, X2),
               U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
           U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
               U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
           U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                         fst mark X -> mark fst X,
                           fst ok X -> ok fst X,
                    natsFrom mark X -> mark natsFrom X,
                      natsFrom ok X -> ok natsFrom X,
                           s mark X -> mark s X,
                             s ok X -> ok s X,
                   sel(X1, mark X2) -> mark sel(X1, X2),
                   sel(mark X1, X2) -> mark sel(X1, X2),
                  sel(ok X1, ok X2) -> ok sel(X1, X2),
                        tail mark X -> mark tail X,
                          tail ok X -> ok tail 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),
             proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                        proper tt() -> ok tt(),
             proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                       proper snd X -> snd proper X,
             proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                 proper U22(X1, X2) -> U22(proper X1, proper X2),
                 proper U21(X1, X2) -> U21(proper X1, proper X2),
                 proper U32(X1, X2) -> U32(proper X1, proper X2),
                 proper U31(X1, X2) -> U31(proper X1, proper X2),
             proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
             proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                      proper head X -> head proper X,
            proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                 proper U52(X1, X2) -> U52(proper X1, proper X2),
                 proper U51(X1, X2) -> U51(proper X1, proper X2),
         proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
         proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
         proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                 proper U64(X1, X2) -> U64(proper X1, proper X2),
                proper pair(X1, X2) -> pair(proper X1, proper X2),
                proper cons(X1, X2) -> cons(proper X1, proper X2),
                 proper U72(X1, X2) -> U72(proper X1, proper X2),
                 proper U71(X1, X2) -> U71(proper X1, proper X2),
             proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
             proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                       proper fst X -> fst proper X,
                  proper natsFrom X -> natsFrom proper X,
                         proper s X -> s proper X,
                 proper sel(X1, X2) -> sel(proper X1, proper X2),
                       proper nil() -> ok nil(),
                         proper 0() -> ok 0(),
                      proper tail X -> tail proper X,
                proper take(X1, X2) -> take(proper X1, proper X2),
                         top mark X -> top proper X,
                           top ok X -> top active X}
  UR:
   {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
            U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
              active U12(X1, X2, X3) -> U12(active X1, X2, X3),
             active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
              active U11(X1, X2, X3) -> U11(active X1, X2, X3),
             active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                        active snd X -> snd active X,
               active snd pair(X, Y) -> mark U51(tt(), Y),
              active splitAt(X1, X2) -> splitAt(X1, active X2),
              active splitAt(X1, X2) -> splitAt(active X1, X2),
    active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
             active splitAt(0(), XS) -> mark pair(nil(), XS),
                  active U22(X1, X2) -> U22(active X1, X2),
                 active U22(tt(), X) -> mark X,
                  active U21(X1, X2) -> U21(active X1, X2),
                 active U21(tt(), X) -> mark U22(tt(), X),
                  active U32(X1, X2) -> U32(active X1, X2),
                 active U32(tt(), N) -> mark N,
                  active U31(X1, X2) -> U31(active X1, X2),
                 active U31(tt(), N) -> mark U32(tt(), N),
              active U42(X1, X2, X3) -> U42(active X1, X2, X3),
             active U42(tt(), N, XS) -> mark head afterNth(N, XS),
              active U41(X1, X2, X3) -> U41(active X1, X2, X3),
             active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                       active head X -> head active X,
             active head cons(N, XS) -> mark U31(tt(), N),
              active afterNth(N, XS) -> mark U11(tt(), N, XS),
             active afterNth(X1, X2) -> afterNth(X1, active X2),
             active afterNth(X1, X2) -> afterNth(active X1, X2),
                  active U52(X1, X2) -> U52(active X1, X2),
                 active U52(tt(), Y) -> mark Y,
                  active U51(X1, X2) -> U51(active X1, X2),
                 active U51(tt(), Y) -> mark U52(tt(), Y),
          active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
          active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
          active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
          active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
          active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
          active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                  active U64(X1, X2) -> U64(active X1, X2),
         active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                 active pair(X1, X2) -> pair(X1, active X2),
                 active pair(X1, X2) -> pair(active X1, X2),
                 active cons(X1, X2) -> cons(active X1, X2),
                  active U72(X1, X2) -> U72(active X1, X2),
                active U72(tt(), XS) -> mark XS,
                  active U71(X1, X2) -> U71(active X1, X2),
                active U71(tt(), XS) -> mark U72(tt(), XS),
              active U82(X1, X2, X3) -> U82(active X1, X2, X3),
             active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
              active U81(X1, X2, X3) -> U81(active X1, X2, X3),
             active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                        active fst X -> fst active X,
               active fst pair(X, Y) -> mark U21(tt(), X),
                   active natsFrom N -> mark cons(N, natsFrom s N),
                   active natsFrom X -> natsFrom active X,
                          active s X -> s active X,
                   active sel(N, XS) -> mark U41(tt(), N, XS),
                  active sel(X1, X2) -> sel(X1, active X2),
                  active sel(X1, X2) -> sel(active X1, X2),
                       active tail X -> tail active X,
             active tail cons(N, XS) -> mark U71(tt(), XS),
                  active take(N, XS) -> mark U81(tt(), N, XS),
                 active take(X1, X2) -> take(X1, active X2),
                 active take(X1, X2) -> take(active X1, X2),
                U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
            U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                          snd mark X -> mark snd X,
                            snd ok X -> ok snd X,
                splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                splitAt(mark X1, X2) -> mark splitAt(X1, X2),
               splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                    U22(mark X1, X2) -> mark U22(X1, X2),
                   U22(ok X1, ok X2) -> ok U22(X1, X2),
                    U21(mark X1, X2) -> mark U21(X1, X2),
                   U21(ok X1, ok X2) -> ok U21(X1, X2),
                    U32(mark X1, X2) -> mark U32(X1, X2),
                   U32(ok X1, ok X2) -> ok U32(X1, X2),
                    U31(mark X1, X2) -> mark U31(X1, X2),
                   U31(ok X1, ok X2) -> ok U31(X1, X2),
                U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
            U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
            U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                         head mark X -> mark head X,
                           head ok X -> ok head X,
               afterNth(X1, mark X2) -> mark afterNth(X1, X2),
               afterNth(mark X1, X2) -> mark afterNth(X1, X2),
              afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                    U52(mark X1, X2) -> mark U52(X1, X2),
                   U52(ok X1, ok X2) -> ok U52(X1, X2),
                    U51(mark X1, X2) -> mark U51(X1, X2),
                   U51(ok X1, ok X2) -> ok U51(X1, X2),
            U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
     U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
            U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
     U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
            U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
     U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                    U64(mark X1, X2) -> mark U64(X1, X2),
                   U64(ok X1, ok X2) -> ok U64(X1, X2),
                   pair(X1, mark X2) -> mark pair(X1, X2),
                   pair(mark X1, X2) -> mark pair(X1, X2),
                  pair(ok X1, ok X2) -> ok pair(X1, X2),
                   cons(mark X1, X2) -> mark cons(X1, X2),
                  cons(ok X1, ok X2) -> ok cons(X1, X2),
                    U72(mark X1, X2) -> mark U72(X1, X2),
                   U72(ok X1, ok X2) -> ok U72(X1, X2),
                    U71(mark X1, X2) -> mark U71(X1, X2),
                   U71(ok X1, ok X2) -> ok U71(X1, X2),
                U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
            U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
            U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                          fst mark X -> mark fst X,
                            fst ok X -> ok fst X,
                     natsFrom mark X -> mark natsFrom X,
                       natsFrom ok X -> ok natsFrom X,
                            s mark X -> mark s X,
                              s ok X -> ok s X,
                    sel(X1, mark X2) -> mark sel(X1, X2),
                    sel(mark X1, X2) -> mark sel(X1, X2),
                   sel(ok X1, ok X2) -> ok sel(X1, X2),
                         tail mark X -> mark tail X,
                           tail ok X -> ok tail 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),
              proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                         proper tt() -> ok tt(),
              proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                        proper snd X -> snd proper X,
              proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                  proper U22(X1, X2) -> U22(proper X1, proper X2),
                  proper U21(X1, X2) -> U21(proper X1, proper X2),
                  proper U32(X1, X2) -> U32(proper X1, proper X2),
                  proper U31(X1, X2) -> U31(proper X1, proper X2),
              proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
              proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                       proper head X -> head proper X,
             proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                  proper U52(X1, X2) -> U52(proper X1, proper X2),
                  proper U51(X1, X2) -> U51(proper X1, proper X2),
          proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
          proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
          proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                  proper U64(X1, X2) -> U64(proper X1, proper X2),
                 proper pair(X1, X2) -> pair(proper X1, proper X2),
                 proper cons(X1, X2) -> cons(proper X1, proper X2),
                  proper U72(X1, X2) -> U72(proper X1, proper X2),
                  proper U71(X1, X2) -> U71(proper X1, proper X2),
              proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
              proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                        proper fst X -> fst proper X,
                   proper natsFrom X -> natsFrom proper X,
                          proper s X -> s proper X,
                  proper sel(X1, X2) -> sel(proper X1, proper X2),
                        proper nil() -> ok nil(),
                          proper 0() -> ok 0(),
                       proper tail X -> tail proper X,
                 proper take(X1, X2) -> take(proper X1, proper X2)}
   EDG:
    {
     (proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3), U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3))
     (proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3), U11#(mark X1, X2, X3) -> U11#(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))
     (proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3))
     (proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3), U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3))
     (proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3), U81#(mark X1, X2, X3) -> U81#(X1, X2, X3))
     (active# U11(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U11(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U11(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U11(X1, X2, X3) -> active# X1, active# tail X -> tail# active X)
     (active# U11(X1, X2, X3) -> active# X1, active# tail X -> active# X)
     (active# U11(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U11(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U11(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# s X -> s# active X)
     (active# U11(X1, X2, X3) -> active# X1, active# s X -> active# X)
     (active# U11(X1, X2, X3) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U11(X1, X2, X3) -> active# X1, active# natsFrom X -> active# X)
     (active# U11(X1, X2, X3) -> active# X1, active# natsFrom N -> s# N)
     (active# U11(X1, X2, X3) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U11(X1, X2, X3) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U11(X1, X2, X3) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U11(X1, X2, X3) -> active# X1, active# fst X -> fst# active X)
     (active# U11(X1, X2, X3) -> active# X1, active# fst X -> active# X)
     (active# U11(X1, X2, X3) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U11(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U11(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U11(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U11(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U11(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U11(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U11(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U11(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U11(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U11(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U11(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U11(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U11(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U11(X1, X2, X3) -> active# X1, active# head X -> head# active X)
     (active# U11(X1, X2, X3) -> active# X1, active# head X -> active# X)
     (active# U11(X1, X2, X3) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U11(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U11(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U11(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U11(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U11(X1, X2, X3) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U11(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U11(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U11(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U11(X1, X2, X3) -> active# X1, active# snd X -> snd# active X)
     (active# U11(X1, X2, X3) -> active# X1, active# snd X -> active# X)
     (active# U11(X1, X2, X3) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U11(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U11(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U11(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U22(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U22(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U22(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U22(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U22(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# U22(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# U22(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U22(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U22(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U22(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# U22(X1, X2) -> active# X1, active# s X -> active# X)
     (active# U22(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U22(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# U22(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# U22(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U22(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U22(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U22(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# U22(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# U22(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U22(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U22(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U22(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U22(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U22(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U22(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U22(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U22(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U22(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U22(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U22(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U22(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U22(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U22(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U22(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U22(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U22(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U22(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U22(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U22(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U22(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U22(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# U22(X1, X2) -> active# X1, active# head X -> active# X)
     (active# U22(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U22(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U22(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U22(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U22(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U22(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U22(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U22(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U22(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U22(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U22(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U22(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U22(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U22(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# U22(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# U22(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U22(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U22(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U22(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U22(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U22(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U32(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U32(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U32(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U32(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U32(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# U32(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# U32(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U32(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U32(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U32(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# U32(X1, X2) -> active# X1, active# s X -> active# X)
     (active# U32(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U32(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# U32(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# U32(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U32(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U32(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U32(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# U32(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# U32(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U32(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U32(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U32(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U32(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U32(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U32(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U32(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U32(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U32(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U32(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U32(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U32(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U32(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U32(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U32(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U32(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U32(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U32(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U32(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U32(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U32(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U32(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# U32(X1, X2) -> active# X1, active# head X -> active# X)
     (active# U32(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U32(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U32(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U32(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U32(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U32(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U32(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U32(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U32(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U32(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U32(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U32(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U32(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U32(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# U32(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# U32(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U32(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U32(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U32(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U32(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U32(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U42(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U42(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U42(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U42(X1, X2, X3) -> active# X1, active# tail X -> tail# active X)
     (active# U42(X1, X2, X3) -> active# X1, active# tail X -> active# X)
     (active# U42(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U42(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U42(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# s X -> s# active X)
     (active# U42(X1, X2, X3) -> active# X1, active# s X -> active# X)
     (active# U42(X1, X2, X3) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U42(X1, X2, X3) -> active# X1, active# natsFrom X -> active# X)
     (active# U42(X1, X2, X3) -> active# X1, active# natsFrom N -> s# N)
     (active# U42(X1, X2, X3) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U42(X1, X2, X3) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U42(X1, X2, X3) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U42(X1, X2, X3) -> active# X1, active# fst X -> fst# active X)
     (active# U42(X1, X2, X3) -> active# X1, active# fst X -> active# X)
     (active# U42(X1, X2, X3) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U42(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U42(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U42(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U42(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U42(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U42(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U42(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U42(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U42(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U42(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U42(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U42(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U42(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U42(X1, X2, X3) -> active# X1, active# head X -> head# active X)
     (active# U42(X1, X2, X3) -> active# X1, active# head X -> active# X)
     (active# U42(X1, X2, X3) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U42(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U42(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U42(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U42(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U42(X1, X2, X3) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U42(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U42(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U42(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U42(X1, X2, X3) -> active# X1, active# snd X -> snd# active X)
     (active# U42(X1, X2, X3) -> active# X1, active# snd X -> active# X)
     (active# U42(X1, X2, X3) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U42(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U42(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U42(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# afterNth(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# afterNth(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# afterNth(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# afterNth(X1, X2) -> active# X1, active# s X -> active# X)
     (active# afterNth(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# afterNth(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# afterNth(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# afterNth(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# afterNth(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# afterNth(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# afterNth(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# afterNth(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# afterNth(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# afterNth(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# afterNth(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# afterNth(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# afterNth(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# afterNth(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# afterNth(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# afterNth(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# afterNth(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# afterNth(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# afterNth(X1, X2) -> active# X1, active# head X -> active# X)
     (active# afterNth(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# afterNth(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# afterNth(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# afterNth(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# afterNth(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# afterNth(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# afterNth(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# afterNth(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# afterNth(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U51(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U51(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U51(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U51(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U51(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# U51(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# U51(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U51(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U51(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U51(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# U51(X1, X2) -> active# X1, active# s X -> active# X)
     (active# U51(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U51(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# U51(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# U51(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U51(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U51(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U51(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# U51(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# U51(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U51(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U51(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U51(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U51(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U51(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U51(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U51(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U51(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U51(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U51(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U51(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U51(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U51(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U51(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U51(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U51(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U51(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U51(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U51(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U51(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U51(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U51(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# U51(X1, X2) -> active# X1, active# head X -> active# X)
     (active# U51(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U51(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U51(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U51(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U51(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U51(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U51(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U51(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U51(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U51(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U51(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U51(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U51(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U51(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# U51(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# U51(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U51(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U51(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U51(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U51(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U51(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# tail X -> tail# active X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# tail X -> active# X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# s X -> s# active X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# s X -> active# X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# natsFrom X -> active# X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# natsFrom N -> s# N)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# fst X -> fst# active X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# fst X -> active# X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# head X -> head# active X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# head X -> active# X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# snd X -> snd# active X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# snd X -> active# X)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U61(X1, X2, X3, X4) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U64(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U64(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U64(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U64(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U64(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# U64(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# U64(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U64(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U64(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U64(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# U64(X1, X2) -> active# X1, active# s X -> active# X)
     (active# U64(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U64(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# U64(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# U64(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U64(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U64(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U64(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# U64(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# U64(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U64(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U64(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U64(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U64(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U64(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U64(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U64(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U64(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U64(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U64(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U64(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U64(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U64(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U64(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U64(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U64(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U64(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U64(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U64(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U64(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U64(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U64(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# U64(X1, X2) -> active# X1, active# head X -> active# X)
     (active# U64(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U64(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U64(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U64(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U64(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U64(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U64(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U64(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U64(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U64(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U64(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U64(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U64(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U64(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# U64(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# U64(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U64(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U64(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U64(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U64(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U64(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# cons(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, 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) -> active# X2)
     (active# cons(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# cons(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# cons(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# cons(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# cons(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# cons(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# cons(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# cons(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# cons(X1, X2) -> active# X1, active# s X -> active# X)
     (active# cons(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# cons(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# cons(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# cons(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# cons(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# cons(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# cons(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# cons(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# cons(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# cons(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# cons(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# cons(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# cons(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# cons(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# cons(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (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# pair(X1, X2) -> pair#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# cons(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# cons(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# cons(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# cons(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# cons(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# cons(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# cons(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# cons(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# cons(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# cons(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# cons(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# cons(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# U51(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(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# cons(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# cons(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# cons(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# cons(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# cons(X1, X2) -> active# X1, active# head X -> active# X)
     (active# cons(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# cons(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# cons(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# cons(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# cons(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# cons(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# cons(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# cons(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# cons(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# cons(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# cons(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# cons(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# cons(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# cons(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# cons(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# cons(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# cons(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# cons(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# cons(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# cons(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# cons(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U71(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, 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) -> active# X2)
     (active# U71(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U71(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U71(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# U71(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# U71(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U71(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U71(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U71(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# U71(X1, X2) -> active# X1, active# s X -> active# X)
     (active# U71(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U71(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# U71(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# U71(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U71(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U71(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U71(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# U71(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# U71(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U71(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U71(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U71(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U71(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U71(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U71(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (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# pair(X1, X2) -> pair#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U71(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U71(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U71(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U71(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U71(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U71(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U71(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U71(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U71(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U71(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U71(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U71(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# U51(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(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U71(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U71(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U71(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U71(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# U71(X1, X2) -> active# X1, active# head X -> active# X)
     (active# U71(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U71(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U71(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U71(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U71(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U71(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U71(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U71(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U71(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U71(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U71(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U71(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U71(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U71(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# U71(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# U71(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U71(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U71(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U71(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U71(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U71(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U81(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U81(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U81(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U81(X1, X2, X3) -> active# X1, active# tail X -> tail# active X)
     (active# U81(X1, X2, X3) -> active# X1, active# tail X -> active# X)
     (active# U81(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U81(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U81(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# s X -> s# active X)
     (active# U81(X1, X2, X3) -> active# X1, active# s X -> active# X)
     (active# U81(X1, X2, X3) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U81(X1, X2, X3) -> active# X1, active# natsFrom X -> active# X)
     (active# U81(X1, X2, X3) -> active# X1, active# natsFrom N -> s# N)
     (active# U81(X1, X2, X3) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U81(X1, X2, X3) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U81(X1, X2, X3) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U81(X1, X2, X3) -> active# X1, active# fst X -> fst# active X)
     (active# U81(X1, X2, X3) -> active# X1, active# fst X -> active# X)
     (active# U81(X1, X2, X3) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U81(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U81(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U81(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U81(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U81(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U81(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U81(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U81(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U81(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U81(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U81(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U81(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U81(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U81(X1, X2, X3) -> active# X1, active# head X -> head# active X)
     (active# U81(X1, X2, X3) -> active# X1, active# head X -> active# X)
     (active# U81(X1, X2, X3) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U81(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U81(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U81(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U81(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U81(X1, X2, X3) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U81(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U81(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U81(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U81(X1, X2, X3) -> active# X1, active# snd X -> snd# active X)
     (active# U81(X1, X2, X3) -> active# X1, active# snd X -> active# X)
     (active# U81(X1, X2, X3) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U81(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U81(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U81(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, 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) -> active# X2)
     (active# take(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# take(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# take(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# take(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# take(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# take(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# take(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# take(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# take(X1, X2) -> active# X1, active# s X -> active# X)
     (active# take(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# take(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# take(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# take(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# take(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# take(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# take(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# take(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# take(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# take(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# take(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# take(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# take(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (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# pair(X1, X2) -> pair#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# take(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# take(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# take(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# take(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# take(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# take(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# take(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# take(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# take(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# take(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# take(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# take(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# U51(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(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# take(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# take(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# take(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# take(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# take(X1, X2) -> active# X1, active# head X -> active# X)
     (active# take(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# take(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# take(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# take(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# take(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# take(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# take(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# take(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# take(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# take(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# take(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# take(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# take(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# take(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# take(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# take(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# take(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# tail X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# s X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# fst X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# head X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# head X -> head# proper X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# snd X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# U22(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U22(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# U22(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# U22(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U22(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U22(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# U22(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U22(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U22(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U22(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U22(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U22(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U22(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U22(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# U22(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# U22(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# U22(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U22(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# U32(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U32(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# U32(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# U32(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U32(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U32(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# U32(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U32(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U32(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U32(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U32(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U32(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U32(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U32(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# U32(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# U32(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# U32(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U32(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# tail X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# s X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# fst X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# head X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# head X -> head# proper X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# snd X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# U51(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U51(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# U51(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# U51(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U51(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U51(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# U51(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U51(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U51(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U51(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U51(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U51(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U51(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U51(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# U51(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# U51(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# U51(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U51(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# tail X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# s X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# s X -> s# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# fst X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# head X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# head X -> head# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# snd X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# U64(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U64(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# U64(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# U64(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U64(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U64(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# U64(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U64(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U64(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U64(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U64(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U64(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U64(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U64(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# U64(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# U64(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# U64(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U64(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (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# tail X -> proper# X)
     (proper# cons(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# cons(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (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# natsFrom X -> proper# X)
     (proper# cons(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# cons(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# cons(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# cons(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# cons(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (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# U72(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (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# cons(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# cons(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# cons(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# cons(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# cons(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# cons(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# cons(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (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# afterNth(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# cons(X1, X2) -> proper# X1, proper# head X -> head# 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, X3) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (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(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (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# U22(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# cons(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# cons(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# cons(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (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# tail X -> proper# X)
     (proper# U71(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U71(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (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# natsFrom X -> proper# X)
     (proper# U71(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U71(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# U71(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U71(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U71(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (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# U72(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (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# U71(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U71(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U71(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U71(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U71(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U71(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U71(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (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# afterNth(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# U71(X1, X2) -> proper# X1, proper# head X -> head# 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, X3) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (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(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (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# U22(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# U71(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U71(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U71(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# tail X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# s X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# fst X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# head X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# head X -> head# proper X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# snd X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# take(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# take(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# take(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# take(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# take(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# take(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# take(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# take(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# take(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# take(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# take(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# take(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# take(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# take(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# take(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# take(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# take(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# take(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# take(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# take(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# take(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (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# X1)
     (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# U42(X1, X2, X3) -> proper# X3)
     (proper# take(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# take(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# take(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# take(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# take(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4), U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4))
     (active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4), U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4))
     (U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4), U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4))
     (U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4), U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4))
     (U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4), U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4))
     (U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4), U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4))
     (U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4), U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4))
     (U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4), U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4))
     (active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS), U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4))
     (active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS), U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4))
     (active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS), U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4))
     (active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS), U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4))
     (active# head cons(N, XS) -> U31#(tt(), N), U31#(ok X1, ok X2) -> U31#(X1, X2))
     (active# head cons(N, XS) -> U31#(tt(), N), U31#(mark X1, X2) -> U31#(X1, X2))
     (active# head X -> head# active X, head# ok X -> head# X)
     (active# head X -> head# active X, head# mark X -> head# X)
     (active# natsFrom X -> natsFrom# active X, natsFrom# ok X -> natsFrom# X)
     (active# natsFrom X -> natsFrom# active X, natsFrom# mark X -> natsFrom# X)
     (active# tail X -> tail# active X, tail# ok X -> tail# X)
     (active# tail X -> tail# active X, tail# mark X -> tail# X)
     (proper# head X -> head# proper X, head# ok X -> head# X)
     (proper# head X -> head# proper X, head# mark X -> head# X)
     (proper# natsFrom X -> natsFrom# proper X, natsFrom# ok X -> natsFrom# X)
     (proper# natsFrom X -> natsFrom# proper X, natsFrom# mark X -> natsFrom# X)
     (proper# tail X -> tail# proper X, tail# ok X -> tail# X)
     (proper# tail X -> tail# proper X, tail# mark X -> tail# 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)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# tail X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# tail X -> tail# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# sel(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# sel(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# s X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# s X -> s# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# natsFrom X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# natsFrom X -> natsFrom# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# fst X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# fst X -> fst# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U72(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U72(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# pair(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# pair(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U64(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U64(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# head X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# head X -> head# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U32(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U32(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U22(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U22(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# snd X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# snd X -> snd# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# tail X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# tail X -> tail# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# sel(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# sel(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# s X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# s X -> s# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# natsFrom X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# natsFrom X -> natsFrom# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# fst X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# fst X -> fst# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U72(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U72(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# pair(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# pair(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U64(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U64(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# head X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# head X -> head# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U32(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U32(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U22(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U22(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# snd X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# snd X -> snd# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4), U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4))
     (proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4), U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4))
     (active# splitAt(0(), XS) -> pair#(nil(), XS), pair#(ok X1, ok X2) -> pair#(X1, X2))
     (active# splitAt(0(), XS) -> pair#(nil(), XS), pair#(mark X1, X2) -> pair#(X1, X2))
     (active# splitAt(0(), XS) -> pair#(nil(), XS), pair#(X1, mark X2) -> pair#(X1, X2))
     (active# tail cons(N, XS) -> U71#(tt(), XS), U71#(ok X1, ok X2) -> U71#(X1, X2))
     (active# tail cons(N, XS) -> U71#(tt(), XS), U71#(mark X1, X2) -> U71#(X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# take(X1, X2) -> take#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# take(X1, X2) -> take#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X2, active# take(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X2, active# take(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# afterNth(X1, X2) -> active# X2, active# tail X -> tail# active X)
     (active# afterNth(X1, X2) -> active# X2, active# tail X -> active# X)
     (active# afterNth(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# s X -> s# active X)
     (active# afterNth(X1, X2) -> active# X2, active# s X -> active# X)
     (active# afterNth(X1, X2) -> active# X2, active# natsFrom X -> natsFrom# active X)
     (active# afterNth(X1, X2) -> active# X2, active# natsFrom X -> active# X)
     (active# afterNth(X1, X2) -> active# X2, active# natsFrom N -> s# N)
     (active# afterNth(X1, X2) -> active# X2, active# natsFrom N -> natsFrom# s N)
     (active# afterNth(X1, X2) -> active# X2, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# afterNth(X1, X2) -> active# X2, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# afterNth(X1, X2) -> active# X2, active# fst X -> fst# active X)
     (active# afterNth(X1, X2) -> active# X2, active# fst X -> active# X)
     (active# afterNth(X1, X2) -> active# X2, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# afterNth(X1, X2) -> active# X2, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# U71(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# U72(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# cons(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# afterNth(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# afterNth(X1, X2) -> active# X2, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# U64(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# afterNth(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# afterNth(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# afterNth(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# afterNth(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# afterNth(X1, X2) -> active# X2, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# U51(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# U52(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# head cons(N, XS) -> U31#(tt(), N))
     (active# afterNth(X1, X2) -> active# X2, active# head X -> head# active X)
     (active# afterNth(X1, X2) -> active# X2, active# head X -> active# X)
     (active# afterNth(X1, X2) -> active# X2, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U31(tt(), N) -> U32#(tt(), N))
     (active# afterNth(X1, X2) -> active# X2, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# U31(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# U32(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U21(tt(), X) -> U22#(tt(), X))
     (active# afterNth(X1, X2) -> active# X2, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# U21(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# U22(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# afterNth(X1, X2) -> active# X2, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# afterNth(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# afterNth(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# afterNth(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X2)
     (active# afterNth(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# afterNth(X1, X2) -> active# X2, active# snd X -> snd# active X)
     (active# afterNth(X1, X2) -> active# X2, active# snd X -> active# X)
     (active# afterNth(X1, X2) -> active# X2, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# afterNth(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# afterNth(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> active# X1)
     (active# afterNth(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X2, active# take(X1, X2) -> take#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# take(X1, X2) -> take#(X1, active X2))
     (active# sel(X1, X2) -> active# X2, active# take(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X2, active# take(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X2, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# sel(X1, X2) -> active# X2, active# tail X -> tail# active X)
     (active# sel(X1, X2) -> active# X2, active# tail X -> active# X)
     (active# sel(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# sel(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X2, active# s X -> s# active X)
     (active# sel(X1, X2) -> active# X2, active# s X -> active# X)
     (active# sel(X1, X2) -> active# X2, active# natsFrom X -> natsFrom# active X)
     (active# sel(X1, X2) -> active# X2, active# natsFrom X -> active# X)
     (active# sel(X1, X2) -> active# X2, active# natsFrom N -> s# N)
     (active# sel(X1, X2) -> active# X2, active# natsFrom N -> natsFrom# s N)
     (active# sel(X1, X2) -> active# X2, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# sel(X1, X2) -> active# X2, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# sel(X1, X2) -> active# X2, active# fst X -> fst# active X)
     (active# sel(X1, X2) -> active# X2, active# fst X -> active# X)
     (active# sel(X1, X2) -> active# X2, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# sel(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# sel(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# sel(X1, X2) -> active# X2, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# U71(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# U72(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# cons(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# sel(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# sel(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# sel(X1, X2) -> active# X2, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# U64(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# sel(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# sel(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# sel(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# sel(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# sel(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# sel(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# sel(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# sel(X1, X2) -> active# X2, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# U51(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# U52(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# sel(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X2, active# head cons(N, XS) -> U31#(tt(), N))
     (active# sel(X1, X2) -> active# X2, active# head X -> head# active X)
     (active# sel(X1, X2) -> active# X2, active# head X -> active# X)
     (active# sel(X1, X2) -> active# X2, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# sel(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# sel(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U31(tt(), N) -> U32#(tt(), N))
     (active# sel(X1, X2) -> active# X2, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# U31(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# U32(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U21(tt(), X) -> U22#(tt(), X))
     (active# sel(X1, X2) -> active# X2, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# U21(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# U22(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# sel(X1, X2) -> active# X2, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# sel(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# sel(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# sel(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# sel(X1, X2) -> active# X2, active# snd X -> snd# active X)
     (active# sel(X1, X2) -> active# X2, active# snd X -> active# X)
     (active# sel(X1, X2) -> active# X2, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# sel(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# sel(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# tail X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# s X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# fst X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# head X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# head X -> head# proper X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# snd X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# U21(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U21(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# U21(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# U21(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U21(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U21(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# U21(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U21(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U21(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U21(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U21(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U21(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U21(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U21(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# U21(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# U21(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (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# X1)
     (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# U42(X1, X2, X3) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# U21(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U21(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (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# tail X -> proper# X)
     (proper# U31(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U31(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (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# natsFrom X -> proper# X)
     (proper# U31(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U31(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# U31(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U31(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U31(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (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# U72(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (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# U31(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U31(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U31(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U31(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U31(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U31(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U31(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (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# afterNth(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# U31(X1, X2) -> proper# X2, proper# head X -> head# 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, X3) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (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(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (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# U22(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# U31(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U31(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U31(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (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# tail X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (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# natsFrom X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# fst X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (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# U72(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (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# U41(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (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# afterNth(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# head X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# head X -> head# 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, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (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(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (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# U22(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# snd X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# U52(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U52(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# U52(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# U52(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U52(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U52(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# U52(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U52(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U52(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U52(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U52(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U52(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U52(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U52(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# U52(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# U52(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (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# X1)
     (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# U42(X1, X2, X3) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# U52(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U52(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# tail X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# s X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# s X -> s# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# fst X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# head X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# head X -> head# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# snd X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# tail X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# s X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# s X -> s# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# fst X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# head X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# head X -> head# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# snd X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# pair(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# pair(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# pair(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# pair(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# pair(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# pair(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# pair(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# pair(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# pair(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# pair(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# pair(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# pair(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# pair(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# pair(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# pair(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# pair(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# pair(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# pair(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# U72(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U72(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# U72(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# U72(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U72(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U72(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# U72(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U72(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U72(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U72(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U72(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U72(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U72(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U72(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# U72(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# U72(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# U72(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U72(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# tail X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# s X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# fst X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# head X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# head X -> head# proper X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# snd X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# sel(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# sel(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# sel(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# sel(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# sel(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# sel(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# sel(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# sel(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# sel(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# sel(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# sel(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# sel(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# sel(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# sel(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# sel(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# sel(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# sel(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# sel(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (active# U12(tt(), N, XS) -> snd# splitAt(N, XS), snd# ok X -> snd# X)
     (active# U12(tt(), N, XS) -> snd# splitAt(N, XS), snd# mark X -> snd# X)
     (active# U82(tt(), N, XS) -> fst# splitAt(N, XS), fst# ok X -> fst# X)
     (active# U82(tt(), N, XS) -> fst# splitAt(N, XS), fst# mark X -> fst# X)
     (active# head X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
     (active# head X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
     (active# head X -> active# X, active# take(X1, X2) -> active# X2)
     (active# head X -> active# X, active# take(X1, X2) -> active# X1)
     (active# head X -> active# X, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# head X -> active# X, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# head X -> active# X, active# tail X -> tail# active X)
     (active# head X -> active# X, active# tail X -> active# X)
     (active# head X -> active# X, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# head X -> active# X, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# head X -> active# X, active# sel(X1, X2) -> active# X2)
     (active# head X -> active# X, active# sel(X1, X2) -> active# X1)
     (active# head X -> active# X, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# head X -> active# X, active# s X -> s# active X)
     (active# head X -> active# X, active# s X -> active# X)
     (active# head X -> active# X, active# natsFrom X -> natsFrom# active X)
     (active# head X -> active# X, active# natsFrom X -> active# X)
     (active# head X -> active# X, active# natsFrom N -> s# N)
     (active# head X -> active# X, active# natsFrom N -> natsFrom# s N)
     (active# head X -> active# X, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# head X -> active# X, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# head X -> active# X, active# fst X -> fst# active X)
     (active# head X -> active# X, active# fst X -> active# X)
     (active# head X -> active# X, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# head X -> active# X, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# head X -> active# X, active# U81(X1, X2, X3) -> active# X1)
     (active# head X -> active# X, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# head X -> active# X, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# head X -> active# X, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# head X -> active# X, active# U82(X1, X2, X3) -> active# X1)
     (active# head X -> active# X, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# head X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# head X -> active# X, active# U71(X1, X2) -> active# X1)
     (active# head X -> active# X, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# head X -> active# X, active# U72(X1, X2) -> active# X1)
     (active# head X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# head X -> active# X, active# cons(X1, X2) -> active# X1)
     (active# head X -> active# X, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# head X -> active# X, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# head X -> active# X, active# pair(X1, X2) -> active# X2)
     (active# head X -> active# X, active# pair(X1, X2) -> active# X1)
     (active# head X -> active# X, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# head X -> active# X, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# head X -> active# X, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# head X -> active# X, active# U64(X1, X2) -> active# X1)
     (active# head X -> active# X, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# head X -> active# X, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# head X -> active# X, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# head X -> active# X, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# head X -> active# X, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# head X -> active# X, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# head X -> active# X, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# head X -> active# X, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# head X -> active# X, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# head X -> active# X, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# head X -> active# X, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# head X -> active# X, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# head X -> active# X, active# U51(X1, X2) -> active# X1)
     (active# head X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# head X -> active# X, active# U52(X1, X2) -> active# X1)
     (active# head X -> active# X, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# head X -> active# X, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# head X -> active# X, active# afterNth(X1, X2) -> active# X2)
     (active# head X -> active# X, active# afterNth(X1, X2) -> active# X1)
     (active# head X -> active# X, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# head X -> active# X, active# head cons(N, XS) -> U31#(tt(), N))
     (active# head X -> active# X, active# head X -> head# active X)
     (active# head X -> active# X, active# head X -> active# X)
     (active# head X -> active# X, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# head X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# head X -> active# X, active# U41(X1, X2, X3) -> active# X1)
     (active# head X -> active# X, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# head X -> active# X, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# head X -> active# X, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# head X -> active# X, active# U42(X1, X2, X3) -> active# X1)
     (active# head X -> active# X, active# U31(tt(), N) -> U32#(tt(), N))
     (active# head X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# head X -> active# X, active# U31(X1, X2) -> active# X1)
     (active# head X -> active# X, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# head X -> active# X, active# U32(X1, X2) -> active# X1)
     (active# head X -> active# X, active# U21(tt(), X) -> U22#(tt(), X))
     (active# head X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# head X -> active# X, active# U21(X1, X2) -> active# X1)
     (active# head X -> active# X, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# head X -> active# X, active# U22(X1, X2) -> active# X1)
     (active# head X -> active# X, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# head X -> active# X, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# head X -> active# X, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# head X -> active# X, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# head X -> active# X, active# splitAt(X1, X2) -> active# X2)
     (active# head X -> active# X, active# splitAt(X1, X2) -> active# X1)
     (active# head X -> active# X, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# head X -> active# X, active# snd X -> snd# active X)
     (active# head X -> active# X, active# snd X -> active# X)
     (active# head X -> active# X, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# head X -> active# X, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# head X -> active# X, active# U11(X1, X2, X3) -> active# X1)
     (active# head X -> active# X, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# head X -> active# X, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# head X -> active# X, active# U12(X1, X2, X3) -> active# X1)
     (active# head X -> active# X, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# natsFrom X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
     (active# natsFrom X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
     (active# natsFrom X -> active# X, active# take(X1, X2) -> active# X2)
     (active# natsFrom X -> active# X, active# take(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# natsFrom X -> active# X, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# natsFrom X -> active# X, active# tail X -> tail# active X)
     (active# natsFrom X -> active# X, active# tail X -> active# X)
     (active# natsFrom X -> active# X, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# natsFrom X -> active# X, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# natsFrom X -> active# X, active# sel(X1, X2) -> active# X2)
     (active# natsFrom X -> active# X, active# sel(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# natsFrom X -> active# X, active# s X -> s# active X)
     (active# natsFrom X -> active# X, active# s X -> active# X)
     (active# natsFrom X -> active# X, active# natsFrom X -> natsFrom# active X)
     (active# natsFrom X -> active# X, active# natsFrom X -> active# X)
     (active# natsFrom X -> active# X, active# natsFrom N -> s# N)
     (active# natsFrom X -> active# X, active# natsFrom N -> natsFrom# s N)
     (active# natsFrom X -> active# X, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# natsFrom X -> active# X, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# natsFrom X -> active# X, active# fst X -> fst# active X)
     (active# natsFrom X -> active# X, active# fst X -> active# X)
     (active# natsFrom X -> active# X, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# natsFrom X -> active# X, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# natsFrom X -> active# X, active# U81(X1, X2, X3) -> active# X1)
     (active# natsFrom X -> active# X, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# natsFrom X -> active# X, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# natsFrom X -> active# X, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# natsFrom X -> active# X, active# U82(X1, X2, X3) -> active# X1)
     (active# natsFrom X -> active# X, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# natsFrom X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# natsFrom X -> active# X, active# U71(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# natsFrom X -> active# X, active# U72(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# natsFrom X -> active# X, active# cons(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# natsFrom X -> active# X, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# natsFrom X -> active# X, active# pair(X1, X2) -> active# X2)
     (active# natsFrom X -> active# X, active# pair(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# natsFrom X -> active# X, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# natsFrom X -> active# X, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# natsFrom X -> active# X, active# U64(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# natsFrom X -> active# X, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# natsFrom X -> active# X, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# natsFrom X -> active# X, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# natsFrom X -> active# X, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# natsFrom X -> active# X, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# natsFrom X -> active# X, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# natsFrom X -> active# X, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# natsFrom X -> active# X, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# natsFrom X -> active# X, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# natsFrom X -> active# X, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# natsFrom X -> active# X, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# natsFrom X -> active# X, active# U51(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# natsFrom X -> active# X, active# U52(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# natsFrom X -> active# X, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# natsFrom X -> active# X, active# afterNth(X1, X2) -> active# X2)
     (active# natsFrom X -> active# X, active# afterNth(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# natsFrom X -> active# X, active# head cons(N, XS) -> U31#(tt(), N))
     (active# natsFrom X -> active# X, active# head X -> head# active X)
     (active# natsFrom X -> active# X, active# head X -> active# X)
     (active# natsFrom X -> active# X, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# natsFrom X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# natsFrom X -> active# X, active# U41(X1, X2, X3) -> active# X1)
     (active# natsFrom X -> active# X, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# natsFrom X -> active# X, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# natsFrom X -> active# X, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# natsFrom X -> active# X, active# U42(X1, X2, X3) -> active# X1)
     (active# natsFrom X -> active# X, active# U31(tt(), N) -> U32#(tt(), N))
     (active# natsFrom X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# natsFrom X -> active# X, active# U31(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# natsFrom X -> active# X, active# U32(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# U21(tt(), X) -> U22#(tt(), X))
     (active# natsFrom X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# natsFrom X -> active# X, active# U21(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# natsFrom X -> active# X, active# U22(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# natsFrom X -> active# X, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# natsFrom X -> active# X, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# natsFrom X -> active# X, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# natsFrom X -> active# X, active# splitAt(X1, X2) -> active# X2)
     (active# natsFrom X -> active# X, active# splitAt(X1, X2) -> active# X1)
     (active# natsFrom X -> active# X, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# natsFrom X -> active# X, active# snd X -> snd# active X)
     (active# natsFrom X -> active# X, active# snd X -> active# X)
     (active# natsFrom X -> active# X, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# natsFrom X -> active# X, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# natsFrom X -> active# X, active# U11(X1, X2, X3) -> active# X1)
     (active# natsFrom X -> active# X, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# natsFrom X -> active# X, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# natsFrom X -> active# X, active# U12(X1, X2, X3) -> active# X1)
     (active# natsFrom X -> active# X, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# tail X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
     (active# tail X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
     (active# tail X -> active# X, active# take(X1, X2) -> active# X2)
     (active# tail X -> active# X, active# take(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# tail X -> active# X, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# tail X -> active# X, active# tail X -> tail# active X)
     (active# tail X -> active# X, active# tail X -> active# X)
     (active# tail X -> active# X, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# tail X -> active# X, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# tail X -> active# X, active# sel(X1, X2) -> active# X2)
     (active# tail X -> active# X, active# sel(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# tail X -> active# X, active# s X -> s# active X)
     (active# tail X -> active# X, active# s X -> active# X)
     (active# tail X -> active# X, active# natsFrom X -> natsFrom# active X)
     (active# tail X -> active# X, active# natsFrom X -> active# X)
     (active# tail X -> active# X, active# natsFrom N -> s# N)
     (active# tail X -> active# X, active# natsFrom N -> natsFrom# s N)
     (active# tail X -> active# X, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# tail X -> active# X, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# tail X -> active# X, active# fst X -> fst# active X)
     (active# tail X -> active# X, active# fst X -> active# X)
     (active# tail X -> active# X, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# tail X -> active# X, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# tail X -> active# X, active# U81(X1, X2, X3) -> active# X1)
     (active# tail X -> active# X, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# tail X -> active# X, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# tail X -> active# X, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# tail X -> active# X, active# U82(X1, X2, X3) -> active# X1)
     (active# tail X -> active# X, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# tail X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# tail X -> active# X, active# U71(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# tail X -> active# X, active# U72(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# tail X -> active# X, active# cons(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# tail X -> active# X, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# tail X -> active# X, active# pair(X1, X2) -> active# X2)
     (active# tail X -> active# X, active# pair(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# tail X -> active# X, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# tail X -> active# X, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# tail X -> active# X, active# U64(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# tail X -> active# X, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# tail X -> active# X, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# tail X -> active# X, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# tail X -> active# X, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# tail X -> active# X, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# tail X -> active# X, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# tail X -> active# X, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# tail X -> active# X, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# tail X -> active# X, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# tail X -> active# X, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# tail X -> active# X, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# tail X -> active# X, active# U51(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# tail X -> active# X, active# U52(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# tail X -> active# X, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# tail X -> active# X, active# afterNth(X1, X2) -> active# X2)
     (active# tail X -> active# X, active# afterNth(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# tail X -> active# X, active# head cons(N, XS) -> U31#(tt(), N))
     (active# tail X -> active# X, active# head X -> head# active X)
     (active# tail X -> active# X, active# head X -> active# X)
     (active# tail X -> active# X, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# tail X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# tail X -> active# X, active# U41(X1, X2, X3) -> active# X1)
     (active# tail X -> active# X, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# tail X -> active# X, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# tail X -> active# X, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# tail X -> active# X, active# U42(X1, X2, X3) -> active# X1)
     (active# tail X -> active# X, active# U31(tt(), N) -> U32#(tt(), N))
     (active# tail X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# tail X -> active# X, active# U31(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# tail X -> active# X, active# U32(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# U21(tt(), X) -> U22#(tt(), X))
     (active# tail X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# tail X -> active# X, active# U21(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# tail X -> active# X, active# U22(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# tail X -> active# X, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# tail X -> active# X, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# tail X -> active# X, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# tail X -> active# X, active# splitAt(X1, X2) -> active# X2)
     (active# tail X -> active# X, active# splitAt(X1, X2) -> active# X1)
     (active# tail X -> active# X, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# tail X -> active# X, active# snd X -> snd# active X)
     (active# tail X -> active# X, active# snd X -> active# X)
     (active# tail X -> active# X, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# tail X -> active# X, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# tail X -> active# X, active# U11(X1, X2, X3) -> active# X1)
     (active# tail X -> active# X, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# tail X -> active# X, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# tail X -> active# X, active# U12(X1, X2, X3) -> active# X1)
     (active# tail X -> active# X, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (snd# ok X -> snd# X, snd# ok X -> snd# X)
     (snd# ok X -> snd# X, snd# mark X -> snd# X)
     (head# ok X -> head# X, head# ok X -> head# X)
     (head# ok X -> head# X, head# mark X -> head# X)
     (fst# ok X -> fst# X, fst# ok X -> fst# X)
     (fst# ok X -> fst# X, fst# mark X -> fst# X)
     (natsFrom# ok X -> natsFrom# X, natsFrom# ok X -> natsFrom# X)
     (natsFrom# ok X -> natsFrom# X, natsFrom# mark X -> natsFrom# X)
     (s# ok X -> s# X, s# ok X -> s# X)
     (s# ok X -> s# X, s# mark X -> s# X)
     (tail# ok X -> tail# X, tail# ok X -> tail# X)
     (tail# ok X -> tail# X, tail# mark X -> tail# X)
     (proper# head X -> proper# X, proper# take(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# take(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# tail X -> proper# X)
     (proper# head X -> proper# X, proper# tail X -> tail# proper X)
     (proper# head X -> proper# X, proper# sel(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# sel(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# s X -> proper# X)
     (proper# head X -> proper# X, proper# s X -> s# proper X)
     (proper# head X -> proper# X, proper# natsFrom X -> proper# X)
     (proper# head X -> proper# X, proper# natsFrom X -> natsFrom# proper X)
     (proper# head X -> proper# X, proper# fst X -> proper# X)
     (proper# head X -> proper# X, proper# fst X -> fst# proper X)
     (proper# head X -> proper# X, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# head X -> proper# X, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# head X -> proper# X, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# head X -> proper# X, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# head X -> proper# X, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# head X -> proper# X, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# head X -> proper# X, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# head X -> proper# X, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# head X -> proper# X, proper# U71(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# U71(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# U72(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# U72(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# cons(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# cons(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# pair(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# pair(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# U64(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# U64(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# head X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# head X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# head X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# head X -> proper# X, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# head X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# head X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# head X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# head X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# head X -> proper# X, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# head X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# head X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# head X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# head X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# head X -> proper# X, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# head X -> proper# X, proper# U51(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# U51(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# U52(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# U52(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# afterNth(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# afterNth(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# head X -> proper# X)
     (proper# head X -> proper# X, proper# head X -> head# proper X)
     (proper# head X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# head X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# head X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# head X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# head X -> proper# X, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# head X -> proper# X, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# head X -> proper# X, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# head X -> proper# X, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# head X -> proper# X, proper# U31(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# U31(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# U32(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# U32(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# U21(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# U21(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# U22(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# U22(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# splitAt(X1, X2) -> proper# X2)
     (proper# head X -> proper# X, proper# splitAt(X1, X2) -> proper# X1)
     (proper# head X -> proper# X, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# head X -> proper# X, proper# snd X -> proper# X)
     (proper# head X -> proper# X, proper# snd X -> snd# proper X)
     (proper# head X -> proper# X, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# head X -> proper# X, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# head X -> proper# X, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# head X -> proper# X, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# head X -> proper# X, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# head X -> proper# X, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# head X -> proper# X, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# head X -> proper# X, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# natsFrom X -> proper# X, proper# take(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# take(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# tail X -> proper# X)
     (proper# natsFrom X -> proper# X, proper# tail X -> tail# proper X)
     (proper# natsFrom X -> proper# X, proper# sel(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# sel(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# s X -> proper# X)
     (proper# natsFrom X -> proper# X, proper# s X -> s# proper X)
     (proper# natsFrom X -> proper# X, proper# natsFrom X -> proper# X)
     (proper# natsFrom X -> proper# X, proper# natsFrom X -> natsFrom# proper X)
     (proper# natsFrom X -> proper# X, proper# fst X -> proper# X)
     (proper# natsFrom X -> proper# X, proper# fst X -> fst# proper X)
     (proper# natsFrom X -> proper# X, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# natsFrom X -> proper# X, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# natsFrom X -> proper# X, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# natsFrom X -> proper# X, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# natsFrom X -> proper# X, proper# U71(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U71(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# U72(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U72(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# cons(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# cons(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# pair(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# pair(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# U64(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U64(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# natsFrom X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# natsFrom X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# natsFrom X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# natsFrom X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# natsFrom X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# natsFrom X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# natsFrom X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# natsFrom X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# natsFrom X -> proper# X, proper# U51(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U51(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# U52(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U52(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# afterNth(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# afterNth(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# head X -> proper# X)
     (proper# natsFrom X -> proper# X, proper# head X -> head# proper X)
     (proper# natsFrom X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# natsFrom X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# natsFrom X -> proper# X, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# natsFrom X -> proper# X, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# natsFrom X -> proper# X, proper# U31(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U31(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# U32(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U32(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# U21(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U21(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# U22(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U22(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# splitAt(X1, X2) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# splitAt(X1, X2) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# natsFrom X -> proper# X, proper# snd X -> proper# X)
     (proper# natsFrom X -> proper# X, proper# snd X -> snd# proper X)
     (proper# natsFrom X -> proper# X, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# natsFrom X -> proper# X, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# natsFrom X -> proper# X, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# natsFrom X -> proper# X, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# natsFrom X -> proper# X, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# natsFrom X -> proper# X, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# tail X -> proper# X, proper# take(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# take(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# tail X -> proper# X)
     (proper# tail X -> proper# X, proper# tail X -> tail# proper X)
     (proper# tail X -> proper# X, proper# sel(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# sel(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# s X -> proper# X)
     (proper# tail X -> proper# X, proper# s X -> s# proper X)
     (proper# tail X -> proper# X, proper# natsFrom X -> proper# X)
     (proper# tail X -> proper# X, proper# natsFrom X -> natsFrom# proper X)
     (proper# tail X -> proper# X, proper# fst X -> proper# X)
     (proper# tail X -> proper# X, proper# fst X -> fst# proper X)
     (proper# tail X -> proper# X, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# tail X -> proper# X, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# tail X -> proper# X, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# tail X -> proper# X, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# tail X -> proper# X, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# tail X -> proper# X, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# tail X -> proper# X, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# tail X -> proper# X, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# tail X -> proper# X, proper# U71(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# U71(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# U72(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# U72(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# cons(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# cons(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# pair(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# pair(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# U64(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# U64(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# tail X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# tail X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# tail X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# tail X -> proper# X, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# tail X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# tail X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# tail X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# tail X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# tail X -> proper# X, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# tail X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# tail X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# tail X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# tail X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# tail X -> proper# X, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# tail X -> proper# X, proper# U51(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# U51(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# U52(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# U52(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# afterNth(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# afterNth(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# head X -> proper# X)
     (proper# tail X -> proper# X, proper# head X -> head# proper X)
     (proper# tail X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# tail X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# tail X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# tail X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# tail X -> proper# X, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# tail X -> proper# X, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# tail X -> proper# X, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# tail X -> proper# X, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# tail X -> proper# X, proper# U31(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# U31(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# U32(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# U32(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# U21(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# U21(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# U22(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# U22(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# splitAt(X1, X2) -> proper# X2)
     (proper# tail X -> proper# X, proper# splitAt(X1, X2) -> proper# X1)
     (proper# tail X -> proper# X, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# tail X -> proper# X, proper# snd X -> proper# X)
     (proper# tail X -> proper# X, proper# snd X -> snd# proper X)
     (proper# tail X -> proper# X, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# tail X -> proper# X, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# tail X -> proper# X, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# tail X -> proper# X, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# tail X -> proper# X, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# tail X -> proper# X, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# tail X -> proper# X, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# tail X -> proper# X, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (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# take(N, XS) -> U81#(tt(), N, XS))
     (top# ok X -> active# X, active# tail cons(N, XS) -> U71#(tt(), XS))
     (top# ok X -> active# X, active# tail X -> tail# active X)
     (top# ok X -> active# X, active# tail X -> active# X)
     (top# ok X -> active# X, active# sel(X1, X2) -> sel#(active X1, X2))
     (top# ok X -> active# X, active# sel(X1, X2) -> sel#(X1, active X2))
     (top# ok X -> active# X, active# sel(X1, X2) -> active# X2)
     (top# ok X -> active# X, active# sel(X1, X2) -> active# X1)
     (top# ok X -> active# X, active# sel(N, XS) -> U41#(tt(), N, XS))
     (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# natsFrom X -> natsFrom# active X)
     (top# ok X -> active# X, active# natsFrom X -> active# X)
     (top# ok X -> active# X, active# natsFrom N -> s# N)
     (top# ok X -> active# X, active# natsFrom N -> natsFrom# s N)
     (top# ok X -> active# X, active# natsFrom N -> cons#(N, natsFrom s N))
     (top# ok X -> active# X, active# fst pair(X, Y) -> U21#(tt(), X))
     (top# ok X -> active# X, active# fst X -> fst# active X)
     (top# ok X -> active# X, active# fst X -> active# X)
     (top# ok X -> active# X, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (top# ok X -> active# X, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (top# ok X -> active# X, active# U81(X1, X2, X3) -> active# X1)
     (top# ok X -> active# X, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (top# ok X -> active# X, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (top# ok X -> active# X, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (top# ok X -> active# X, active# U82(X1, X2, X3) -> active# X1)
     (top# ok X -> active# X, active# U71(tt(), XS) -> U72#(tt(), XS))
     (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# U72(X1, X2) -> U72#(active X1, X2))
     (top# ok X -> active# X, active# U72(X1, X2) -> active# X1)
     (top# ok X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
     (top# ok X -> active# X, active# cons(X1, X2) -> active# X1)
     (top# ok X -> active# X, active# pair(X1, X2) -> pair#(active X1, X2))
     (top# ok X -> active# X, active# pair(X1, X2) -> pair#(X1, active X2))
     (top# ok X -> active# X, active# pair(X1, X2) -> active# X2)
     (top# ok X -> active# X, active# pair(X1, X2) -> active# X1)
     (top# ok X -> active# X, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (top# ok X -> active# X, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (top# ok X -> active# X, active# U64(X1, X2) -> U64#(active X1, X2))
     (top# ok X -> active# X, active# U64(X1, X2) -> active# X1)
     (top# ok X -> active# X, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (top# ok X -> active# X, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (top# ok X -> active# X, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (top# ok X -> active# X, active# U63(X1, X2, X3, X4) -> active# X1)
     (top# ok X -> active# X, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (top# ok X -> active# X, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (top# ok X -> active# X, active# U61(X1, X2, X3, X4) -> active# X1)
     (top# ok X -> active# X, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (top# ok X -> active# X, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (top# ok X -> active# X, active# U62(X1, X2, X3, X4) -> active# X1)
     (top# ok X -> active# X, active# U51(tt(), Y) -> U52#(tt(), Y))
     (top# ok X -> active# X, active# U51(X1, X2) -> U51#(active X1, X2))
     (top# ok X -> active# X, active# U51(X1, X2) -> active# X1)
     (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# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (top# ok X -> active# X, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (top# ok X -> active# X, active# afterNth(X1, X2) -> active# X2)
     (top# ok X -> active# X, active# afterNth(X1, X2) -> active# X1)
     (top# ok X -> active# X, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (top# ok X -> active# X, active# head cons(N, XS) -> U31#(tt(), N))
     (top# ok X -> active# X, active# head X -> head# active X)
     (top# ok X -> active# X, active# head X -> active# X)
     (top# ok X -> active# X, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (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(), N, XS) -> afterNth#(N, XS))
     (top# ok X -> active# X, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (top# ok X -> active# X, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (top# ok X -> active# X, active# U42(X1, X2, X3) -> active# X1)
     (top# ok X -> active# X, active# U31(tt(), N) -> U32#(tt(), N))
     (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(X1, X2) -> U32#(active X1, X2))
     (top# ok X -> active# X, active# U32(X1, X2) -> active# X1)
     (top# ok X -> active# X, active# U21(tt(), X) -> U22#(tt(), X))
     (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# U22(X1, X2) -> U22#(active X1, X2))
     (top# ok X -> active# X, active# U22(X1, X2) -> active# X1)
     (top# ok X -> active# X, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (top# ok X -> active# X, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (top# ok X -> active# X, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (top# ok X -> active# X, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (top# ok X -> active# X, active# splitAt(X1, X2) -> active# X2)
     (top# ok X -> active# X, active# splitAt(X1, X2) -> active# X1)
     (top# ok X -> active# X, active# snd pair(X, Y) -> U51#(tt(), Y))
     (top# ok X -> active# X, active# snd X -> snd# active X)
     (top# ok X -> active# X, active# snd X -> active# X)
     (top# ok X -> active# X, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (top# ok X -> active# X, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (top# ok X -> active# X, active# U11(X1, X2, X3) -> active# X1)
     (top# ok X -> active# X, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (top# ok X -> active# X, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (top# ok X -> active# X, active# U12(X1, X2, X3) -> active# X1)
     (top# ok X -> active# X, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# fst pair(X, Y) -> U21#(tt(), X), U21#(ok X1, ok X2) -> U21#(X1, X2))
     (active# fst pair(X, Y) -> U21#(tt(), X), U21#(mark X1, X2) -> U21#(X1, X2))
     (active# U22(X1, X2) -> U22#(active X1, X2), U22#(ok X1, ok X2) -> U22#(X1, X2))
     (active# U22(X1, X2) -> U22#(active X1, X2), U22#(mark X1, X2) -> U22#(X1, X2))
     (active# U32(X1, X2) -> U32#(active X1, X2), U32#(ok X1, ok X2) -> U32#(X1, X2))
     (active# U32(X1, X2) -> U32#(active X1, X2), U32#(mark X1, X2) -> U32#(X1, X2))
     (active# afterNth(X1, X2) -> afterNth#(active X1, X2), afterNth#(ok X1, ok X2) -> afterNth#(X1, X2))
     (active# afterNth(X1, X2) -> afterNth#(active X1, X2), afterNth#(mark X1, X2) -> afterNth#(X1, X2))
     (active# afterNth(X1, X2) -> afterNth#(active X1, X2), afterNth#(X1, mark X2) -> afterNth#(X1, X2))
     (active# U51(X1, X2) -> U51#(active X1, X2), U51#(ok X1, ok X2) -> U51#(X1, X2))
     (active# U51(X1, X2) -> U51#(active X1, X2), U51#(mark X1, X2) -> U51#(X1, X2))
     (active# pair(X1, X2) -> pair#(active X1, X2), pair#(ok X1, ok X2) -> pair#(X1, X2))
     (active# pair(X1, X2) -> pair#(active X1, X2), pair#(mark X1, X2) -> pair#(X1, X2))
     (active# pair(X1, X2) -> pair#(active X1, X2), pair#(X1, mark X2) -> pair#(X1, X2))
     (active# U72(X1, X2) -> U72#(active X1, X2), U72#(ok X1, ok X2) -> U72#(X1, X2))
     (active# U72(X1, X2) -> U72#(active X1, X2), U72#(mark X1, X2) -> U72#(X1, X2))
     (active# sel(X1, X2) -> sel#(active X1, X2), sel#(ok X1, ok X2) -> sel#(X1, X2))
     (active# sel(X1, X2) -> sel#(active X1, X2), sel#(mark X1, X2) -> sel#(X1, X2))
     (active# sel(X1, X2) -> sel#(active X1, X2), sel#(X1, mark X2) -> sel#(X1, X2))
     (splitAt#(X1, mark X2) -> splitAt#(X1, X2), splitAt#(ok X1, ok X2) -> splitAt#(X1, X2))
     (splitAt#(X1, mark X2) -> splitAt#(X1, X2), splitAt#(mark X1, X2) -> splitAt#(X1, X2))
     (splitAt#(X1, mark X2) -> splitAt#(X1, X2), splitAt#(X1, mark X2) -> splitAt#(X1, X2))
     (splitAt#(ok X1, ok X2) -> splitAt#(X1, X2), splitAt#(ok X1, ok X2) -> splitAt#(X1, X2))
     (splitAt#(ok X1, ok X2) -> splitAt#(X1, X2), splitAt#(mark X1, X2) -> splitAt#(X1, X2))
     (splitAt#(ok X1, ok X2) -> splitAt#(X1, X2), splitAt#(X1, mark X2) -> splitAt#(X1, X2))
     (U22#(ok X1, ok X2) -> U22#(X1, X2), U22#(ok X1, ok X2) -> U22#(X1, X2))
     (U22#(ok X1, ok X2) -> U22#(X1, X2), U22#(mark X1, X2) -> U22#(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))
     (U32#(ok X1, ok X2) -> U32#(X1, X2), U32#(ok X1, ok X2) -> U32#(X1, X2))
     (U32#(ok X1, ok X2) -> U32#(X1, X2), U32#(mark X1, X2) -> U32#(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))
     (afterNth#(mark X1, X2) -> afterNth#(X1, X2), afterNth#(ok X1, ok X2) -> afterNth#(X1, X2))
     (afterNth#(mark X1, X2) -> afterNth#(X1, X2), afterNth#(mark X1, X2) -> afterNth#(X1, X2))
     (afterNth#(mark X1, X2) -> afterNth#(X1, X2), afterNth#(X1, mark X2) -> afterNth#(X1, X2))
     (U52#(mark X1, X2) -> U52#(X1, X2), U52#(ok X1, ok X2) -> U52#(X1, X2))
     (U52#(mark X1, X2) -> U52#(X1, X2), U52#(mark X1, X2) -> U52#(X1, X2))
     (U51#(mark X1, X2) -> U51#(X1, X2), U51#(ok X1, ok X2) -> U51#(X1, X2))
     (U51#(mark X1, X2) -> U51#(X1, X2), U51#(mark X1, X2) -> U51#(X1, X2))
     (U64#(mark X1, X2) -> U64#(X1, X2), U64#(ok X1, ok X2) -> U64#(X1, X2))
     (U64#(mark X1, X2) -> U64#(X1, X2), U64#(mark X1, X2) -> U64#(X1, X2))
     (pair#(X1, mark X2) -> pair#(X1, X2), pair#(ok X1, ok X2) -> pair#(X1, X2))
     (pair#(X1, mark X2) -> pair#(X1, X2), pair#(mark X1, X2) -> pair#(X1, X2))
     (pair#(X1, mark X2) -> pair#(X1, X2), pair#(X1, mark X2) -> pair#(X1, X2))
     (pair#(ok X1, ok X2) -> pair#(X1, X2), pair#(ok X1, ok X2) -> pair#(X1, X2))
     (pair#(ok X1, ok X2) -> pair#(X1, X2), pair#(mark X1, X2) -> pair#(X1, X2))
     (pair#(ok X1, ok X2) -> pair#(X1, X2), pair#(X1, mark X2) -> pair#(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))
     (U72#(ok X1, ok X2) -> U72#(X1, X2), U72#(ok X1, ok X2) -> U72#(X1, X2))
     (U72#(ok X1, ok X2) -> U72#(X1, X2), U72#(mark X1, X2) -> U72#(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))
     (sel#(mark X1, X2) -> sel#(X1, X2), sel#(ok X1, ok X2) -> sel#(X1, X2))
     (sel#(mark X1, X2) -> sel#(X1, X2), sel#(mark X1, X2) -> sel#(X1, X2))
     (sel#(mark X1, X2) -> sel#(X1, X2), sel#(X1, mark X2) -> sel#(X1, X2))
     (take#(X1, mark X2) -> take#(X1, X2), take#(ok X1, ok 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#(X1, mark X2) -> take#(X1, X2))
     (take#(ok X1, ok X2) -> take#(X1, X2), take#(ok X1, ok 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#(X1, mark X2) -> take#(X1, X2))
     (active# splitAt(X1, X2) -> splitAt#(X1, active X2), splitAt#(ok X1, ok X2) -> splitAt#(X1, X2))
     (active# splitAt(X1, X2) -> splitAt#(X1, active X2), splitAt#(mark X1, X2) -> splitAt#(X1, X2))
     (active# splitAt(X1, X2) -> splitAt#(X1, active X2), splitAt#(X1, mark X2) -> splitAt#(X1, X2))
     (active# pair(X1, X2) -> pair#(X1, active X2), pair#(ok X1, ok X2) -> pair#(X1, X2))
     (active# pair(X1, X2) -> pair#(X1, active X2), pair#(mark X1, X2) -> pair#(X1, X2))
     (active# pair(X1, X2) -> pair#(X1, active X2), pair#(X1, mark X2) -> pair#(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))
     (proper# U22(X1, X2) -> U22#(proper X1, proper X2), U22#(ok X1, ok X2) -> U22#(X1, X2))
     (proper# U22(X1, X2) -> U22#(proper X1, proper X2), U22#(mark X1, X2) -> U22#(X1, X2))
     (proper# U32(X1, X2) -> U32#(proper X1, proper X2), U32#(ok X1, ok X2) -> U32#(X1, X2))
     (proper# U32(X1, X2) -> U32#(proper X1, proper X2), U32#(mark X1, X2) -> U32#(X1, X2))
     (proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2), afterNth#(ok X1, ok X2) -> afterNth#(X1, X2))
     (proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2), afterNth#(mark X1, X2) -> afterNth#(X1, X2))
     (proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2), afterNth#(X1, mark X2) -> afterNth#(X1, X2))
     (proper# U51(X1, X2) -> U51#(proper X1, proper X2), U51#(ok X1, ok X2) -> U51#(X1, X2))
     (proper# U51(X1, X2) -> U51#(proper X1, proper X2), U51#(mark X1, X2) -> U51#(X1, X2))
     (proper# pair(X1, X2) -> pair#(proper X1, proper X2), pair#(ok X1, ok X2) -> pair#(X1, X2))
     (proper# pair(X1, X2) -> pair#(proper X1, proper X2), pair#(mark X1, X2) -> pair#(X1, X2))
     (proper# pair(X1, X2) -> pair#(proper X1, proper X2), pair#(X1, mark X2) -> pair#(X1, X2))
     (proper# U72(X1, X2) -> U72#(proper X1, proper X2), U72#(ok X1, ok X2) -> U72#(X1, X2))
     (proper# U72(X1, X2) -> U72#(proper X1, proper X2), U72#(mark X1, X2) -> U72#(X1, X2))
     (proper# sel(X1, X2) -> sel#(proper X1, proper X2), sel#(ok X1, ok X2) -> sel#(X1, X2))
     (proper# sel(X1, X2) -> sel#(proper X1, proper X2), sel#(mark X1, X2) -> sel#(X1, X2))
     (proper# sel(X1, X2) -> sel#(proper X1, proper X2), sel#(X1, mark X2) -> sel#(X1, X2))
     (active# natsFrom N -> s# N, s# ok X -> s# X)
     (active# natsFrom N -> s# N, s# mark X -> s# X)
     (active# U51(tt(), Y) -> U52#(tt(), Y), U52#(ok X1, ok X2) -> U52#(X1, X2))
     (active# U51(tt(), Y) -> U52#(tt(), Y), U52#(mark X1, X2) -> U52#(X1, X2))
     (active# U42(tt(), N, XS) -> afterNth#(N, XS), afterNth#(ok X1, ok X2) -> afterNth#(X1, X2))
     (active# U42(tt(), N, XS) -> afterNth#(N, XS), afterNth#(mark X1, X2) -> afterNth#(X1, X2))
     (active# U42(tt(), N, XS) -> afterNth#(N, XS), afterNth#(X1, mark X2) -> afterNth#(X1, X2))
     (active# U82(tt(), N, XS) -> splitAt#(N, XS), splitAt#(ok X1, ok X2) -> splitAt#(X1, X2))
     (active# U82(tt(), N, XS) -> splitAt#(N, XS), splitAt#(mark X1, X2) -> splitAt#(X1, X2))
     (active# U82(tt(), N, XS) -> splitAt#(N, XS), splitAt#(X1, mark X2) -> splitAt#(X1, X2))
     (U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3), U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3))
     (U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3), U12#(mark X1, X2, X3) -> U12#(X1, X2, X3))
     (active# U11(X1, X2, X3) -> U11#(active X1, X2, X3), U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3))
     (active# U11(X1, X2, X3) -> U11#(active X1, X2, X3), U11#(mark X1, X2, X3) -> U11#(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# U41(X1, X2, X3) -> U41#(active X1, X2, X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3))
     (active# U81(X1, X2, X3) -> U81#(active X1, X2, X3), U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3))
     (active# U81(X1, X2, X3) -> U81#(active X1, X2, X3), U81#(mark X1, X2, X3) -> U81#(X1, X2, X3))
     (U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3), U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3))
     (U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3), U11#(mark X1, X2, X3) -> U11#(X1, X2, X3))
     (U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3), U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3))
     (U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3), U42#(mark X1, X2, X3) -> U42#(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))
     (U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3))
     (U82#(ok X1, ok X2, ok X3) -> U82#(X1, X2, X3), U82#(ok X1, ok X2, ok X3) -> U82#(X1, X2, X3))
     (U82#(ok X1, ok X2, ok X3) -> U82#(X1, X2, X3), U82#(mark X1, X2, X3) -> U82#(X1, X2, X3))
     (U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3), U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3))
     (U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3), U81#(mark X1, X2, X3) -> U81#(X1, X2, X3))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# tail X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# tail X -> tail# proper X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# s X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# natsFrom X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# natsFrom X -> natsFrom# proper X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# fst X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# fst X -> fst# proper X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# head X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# head X -> head# proper X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# snd X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# snd X -> snd# proper X)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> 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) -> take#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# tail X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# tail X -> tail# proper X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# s X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# natsFrom X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# natsFrom X -> natsFrom# proper X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# fst X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# fst X -> fst# proper X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> 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) -> U71#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> 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) -> cons#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> 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) -> U52#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# head X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# head X -> head# proper X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
     (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# X1)
     (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# U42(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> 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) -> U31#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> 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) -> U21#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# snd X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# snd X -> snd# proper X)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# tail X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# tail X -> tail# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# sel(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# sel(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# s X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# s X -> s# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# natsFrom X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# natsFrom X -> natsFrom# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# fst X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# fst X -> fst# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U72(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U72(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# pair(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# pair(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U64(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U64(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# head X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# head X -> head# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U32(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U32(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U22(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U22(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# snd X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# snd X -> snd# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# tail X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# tail X -> tail# proper X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# s X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# natsFrom X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# natsFrom X -> natsFrom# proper X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# fst X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# fst X -> fst# proper X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# head X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# head X -> head# proper X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# snd X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# snd X -> snd# proper X)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (active# natsFrom N -> cons#(N, natsFrom s N), cons#(ok X1, ok X2) -> cons#(X1, X2))
     (active# natsFrom N -> cons#(N, natsFrom s N), cons#(mark X1, X2) -> cons#(X1, X2))
     (active# U11(tt(), N, XS) -> U12#(tt(), N, XS), U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3))
     (active# U11(tt(), N, XS) -> U12#(tt(), N, XS), U12#(mark X1, X2, X3) -> U12#(X1, X2, X3))
     (active# afterNth(N, XS) -> U11#(tt(), N, XS), U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3))
     (active# afterNth(N, XS) -> U11#(tt(), N, XS), U11#(mark X1, X2, X3) -> U11#(X1, X2, X3))
     (active# U81(tt(), N, XS) -> U82#(tt(), N, XS), U82#(ok X1, ok X2, ok X3) -> U82#(X1, X2, X3))
     (active# U81(tt(), N, XS) -> U82#(tt(), N, XS), U82#(mark X1, X2, X3) -> U82#(X1, X2, X3))
     (active# take(N, XS) -> U81#(tt(), N, XS), U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3))
     (active# take(N, XS) -> U81#(tt(), N, XS), U81#(mark X1, X2, X3) -> U81#(X1, X2, X3))
     (active# sel(N, XS) -> U41#(tt(), N, XS), U41#(mark X1, X2, X3) -> U41#(X1, X2, X3))
     (active# sel(N, XS) -> U41#(tt(), N, XS), U41#(ok X1, ok X2, ok X3) -> U41#(X1, X2, X3))
     (active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X), U64#(mark X1, X2) -> U64#(X1, X2))
     (active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X), U64#(ok X1, ok X2) -> U64#(X1, X2))
     (active# U41(tt(), N, XS) -> U42#(tt(), N, XS), U42#(mark X1, X2, X3) -> U42#(X1, X2, X3))
     (active# U41(tt(), N, XS) -> U42#(tt(), N, XS), U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3))
     (active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS), pair#(X1, mark X2) -> pair#(X1, X2))
     (active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS), pair#(mark X1, X2) -> pair#(X1, X2))
     (active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS), pair#(ok X1, ok X2) -> pair#(X1, X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# snd X -> snd# proper X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# snd X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# head X -> head# proper X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# head X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# fst X -> fst# proper X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# fst X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# natsFrom X -> natsFrom# proper X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# natsFrom X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# s X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# tail X -> tail# proper X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# tail X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# snd X -> snd# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# snd X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U22(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U22(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U32(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U32(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# head X -> head# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# head X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U64(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U64(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# pair(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# pair(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U72(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U72(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# fst X -> fst# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# fst X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# natsFrom X -> natsFrom# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# natsFrom X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# s X -> s# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# s X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# sel(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# sel(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# tail X -> tail# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# tail X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# snd X -> snd# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# snd X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U22(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U22(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U32(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U32(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# head X -> head# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# head X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U51(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U64(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U64(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# pair(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# pair(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U72(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U72(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# fst X -> fst# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# fst X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# natsFrom X -> natsFrom# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# natsFrom X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# s X -> s# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# s X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# sel(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# sel(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# tail X -> tail# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# tail X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X3, proper# take(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# snd X -> snd# proper X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# snd X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# head X -> head# proper X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# head X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# fst X -> fst# proper X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# fst X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# natsFrom X -> natsFrom# proper X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# natsFrom X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# s X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# tail X -> tail# proper X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# tail X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# snd X -> snd# proper X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# snd X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U22(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U21(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U32(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U31(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# head X -> head# proper X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# head X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U52(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U51(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U64(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# pair(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# cons(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U72(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U71(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# fst X -> fst# proper X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# fst X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# natsFrom X -> natsFrom# proper X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# natsFrom X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# s X -> s# proper X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# s X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# sel(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# tail X -> tail# proper X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# tail X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X3, proper# take(X1, X2) -> proper# X2)
     (U81#(mark X1, X2, X3) -> U81#(X1, X2, X3), U81#(mark X1, X2, X3) -> U81#(X1, X2, X3))
     (U81#(mark X1, X2, X3) -> U81#(X1, X2, X3), U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3))
     (U82#(mark X1, X2, X3) -> U82#(X1, X2, X3), U82#(mark X1, X2, X3) -> U82#(X1, X2, X3))
     (U82#(mark X1, X2, X3) -> U82#(X1, X2, X3), U82#(ok X1, ok X2, ok X3) -> U82#(X1, X2, X3))
     (U41#(mark X1, X2, X3) -> U41#(X1, X2, X3), U41#(mark X1, X2, 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))
     (U42#(mark X1, X2, X3) -> U42#(X1, X2, X3), U42#(mark X1, X2, X3) -> U42#(X1, X2, X3))
     (U42#(mark X1, X2, X3) -> U42#(X1, X2, X3), U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3))
     (U11#(mark X1, X2, X3) -> U11#(X1, X2, X3), U11#(mark X1, X2, X3) -> U11#(X1, X2, X3))
     (U11#(mark X1, X2, X3) -> U11#(X1, X2, X3), U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3))
     (active# U82(X1, X2, X3) -> U82#(active X1, X2, X3), U82#(mark X1, X2, X3) -> U82#(X1, X2, X3))
     (active# U82(X1, X2, X3) -> U82#(active X1, X2, X3), U82#(ok X1, ok X2, ok X3) -> U82#(X1, X2, X3))
     (active# U42(X1, X2, X3) -> U42#(active X1, X2, X3), U42#(mark X1, X2, X3) -> U42#(X1, X2, X3))
     (active# U42(X1, X2, X3) -> U42#(active X1, X2, X3), U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3))
     (active# U12(X1, X2, X3) -> U12#(active X1, X2, X3), U12#(mark X1, X2, X3) -> U12#(X1, X2, X3))
     (active# U12(X1, X2, X3) -> U12#(active X1, X2, X3), U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3))
     (U12#(mark X1, X2, X3) -> U12#(X1, X2, X3), U12#(mark X1, X2, X3) -> U12#(X1, X2, X3))
     (U12#(mark X1, X2, X3) -> U12#(X1, X2, X3), U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3))
     (active# U63(tt(), N, X, XS) -> splitAt#(N, XS), splitAt#(X1, mark X2) -> splitAt#(X1, X2))
     (active# U63(tt(), N, X, XS) -> splitAt#(N, XS), splitAt#(mark X1, X2) -> splitAt#(X1, X2))
     (active# U63(tt(), N, X, XS) -> splitAt#(N, XS), splitAt#(ok X1, ok X2) -> splitAt#(X1, X2))
     (active# U12(tt(), N, XS) -> splitAt#(N, XS), splitAt#(X1, mark X2) -> splitAt#(X1, X2))
     (active# U12(tt(), N, XS) -> splitAt#(N, XS), splitAt#(mark X1, X2) -> splitAt#(X1, X2))
     (active# U12(tt(), N, XS) -> splitAt#(N, XS), splitAt#(ok X1, ok X2) -> splitAt#(X1, X2))
     (active# snd pair(X, Y) -> U51#(tt(), Y), U51#(mark X1, X2) -> U51#(X1, X2))
     (active# snd pair(X, Y) -> U51#(tt(), Y), U51#(ok X1, ok X2) -> U51#(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# U71(X1, X2) -> U71#(proper X1, proper X2), U71#(mark X1, X2) -> U71#(X1, X2))
     (proper# U71(X1, X2) -> U71#(proper X1, proper X2), U71#(ok X1, ok X2) -> U71#(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))
     (proper# U64(X1, X2) -> U64#(proper X1, proper X2), U64#(mark X1, X2) -> U64#(X1, X2))
     (proper# U64(X1, X2) -> U64#(proper X1, proper X2), U64#(ok X1, ok X2) -> U64#(X1, X2))
     (proper# U52(X1, X2) -> U52#(proper X1, proper X2), U52#(mark X1, X2) -> U52#(X1, X2))
     (proper# U52(X1, X2) -> U52#(proper X1, proper X2), U52#(ok X1, ok X2) -> U52#(X1, X2))
     (proper# U31(X1, X2) -> U31#(proper X1, proper X2), U31#(mark X1, X2) -> U31#(X1, X2))
     (proper# U31(X1, X2) -> U31#(proper X1, proper X2), U31#(ok X1, ok X2) -> U31#(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# splitAt(X1, X2) -> splitAt#(proper X1, proper X2), splitAt#(X1, mark X2) -> splitAt#(X1, X2))
     (proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2), splitAt#(mark X1, X2) -> splitAt#(X1, X2))
     (proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2), splitAt#(ok X1, ok X2) -> splitAt#(X1, X2))
     (active# sel(X1, X2) -> sel#(X1, active X2), sel#(X1, mark X2) -> sel#(X1, X2))
     (active# sel(X1, X2) -> sel#(X1, active X2), sel#(mark X1, X2) -> sel#(X1, X2))
     (active# sel(X1, X2) -> sel#(X1, active X2), sel#(ok X1, ok X2) -> sel#(X1, X2))
     (active# afterNth(X1, X2) -> afterNth#(X1, active X2), afterNth#(X1, mark X2) -> afterNth#(X1, X2))
     (active# afterNth(X1, X2) -> afterNth#(X1, active X2), afterNth#(mark X1, X2) -> afterNth#(X1, X2))
     (active# afterNth(X1, X2) -> afterNth#(X1, active X2), afterNth#(ok X1, ok X2) -> afterNth#(X1, X2))
     (active# U64(pair(YS, ZS), X) -> cons#(X, YS), cons#(mark X1, X2) -> cons#(X1, X2))
     (active# U64(pair(YS, ZS), X) -> cons#(X, YS), cons#(ok X1, ok X2) -> cons#(X1, X2))
     (take#(mark X1, X2) -> take#(X1, X2), take#(X1, mark 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#(ok X1, ok X2) -> take#(X1, X2))
     (sel#(ok X1, ok X2) -> sel#(X1, X2), sel#(X1, mark X2) -> sel#(X1, X2))
     (sel#(ok X1, ok X2) -> sel#(X1, X2), sel#(mark X1, X2) -> sel#(X1, X2))
     (sel#(ok X1, ok X2) -> sel#(X1, X2), sel#(ok X1, ok X2) -> sel#(X1, X2))
     (sel#(X1, mark X2) -> sel#(X1, X2), sel#(X1, mark X2) -> sel#(X1, X2))
     (sel#(X1, mark X2) -> sel#(X1, X2), sel#(mark X1, X2) -> sel#(X1, X2))
     (sel#(X1, mark X2) -> sel#(X1, X2), sel#(ok X1, ok X2) -> sel#(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))
     (U72#(mark X1, X2) -> U72#(X1, X2), U72#(mark X1, X2) -> U72#(X1, X2))
     (U72#(mark X1, X2) -> U72#(X1, X2), U72#(ok X1, ok X2) -> U72#(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))
     (pair#(mark X1, X2) -> pair#(X1, X2), pair#(X1, mark X2) -> pair#(X1, X2))
     (pair#(mark X1, X2) -> pair#(X1, X2), pair#(mark X1, X2) -> pair#(X1, X2))
     (pair#(mark X1, X2) -> pair#(X1, X2), pair#(ok X1, ok X2) -> pair#(X1, X2))
     (U64#(ok X1, ok X2) -> U64#(X1, X2), U64#(mark X1, X2) -> U64#(X1, X2))
     (U64#(ok X1, ok X2) -> U64#(X1, X2), U64#(ok X1, ok X2) -> U64#(X1, X2))
     (U51#(ok X1, ok X2) -> U51#(X1, X2), U51#(mark X1, X2) -> U51#(X1, X2))
     (U51#(ok X1, ok X2) -> U51#(X1, X2), U51#(ok X1, ok X2) -> U51#(X1, X2))
     (U52#(ok X1, ok X2) -> U52#(X1, X2), U52#(mark X1, X2) -> U52#(X1, X2))
     (U52#(ok X1, ok X2) -> U52#(X1, X2), U52#(ok X1, ok X2) -> U52#(X1, X2))
     (afterNth#(ok X1, ok X2) -> afterNth#(X1, X2), afterNth#(X1, mark X2) -> afterNth#(X1, X2))
     (afterNth#(ok X1, ok X2) -> afterNth#(X1, X2), afterNth#(mark X1, X2) -> afterNth#(X1, X2))
     (afterNth#(ok X1, ok X2) -> afterNth#(X1, X2), afterNth#(ok X1, ok X2) -> afterNth#(X1, X2))
     (afterNth#(X1, mark X2) -> afterNth#(X1, X2), afterNth#(X1, mark X2) -> afterNth#(X1, X2))
     (afterNth#(X1, mark X2) -> afterNth#(X1, X2), afterNth#(mark X1, X2) -> afterNth#(X1, X2))
     (afterNth#(X1, mark X2) -> afterNth#(X1, X2), afterNth#(ok X1, ok X2) -> afterNth#(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))
     (U32#(mark X1, X2) -> U32#(X1, X2), U32#(mark X1, X2) -> U32#(X1, X2))
     (U32#(mark X1, X2) -> U32#(X1, X2), U32#(ok X1, ok X2) -> U32#(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))
     (U22#(mark X1, X2) -> U22#(X1, X2), U22#(mark X1, X2) -> U22#(X1, X2))
     (U22#(mark X1, X2) -> U22#(X1, X2), U22#(ok X1, ok X2) -> U22#(X1, X2))
     (splitAt#(mark X1, X2) -> splitAt#(X1, X2), splitAt#(X1, mark X2) -> splitAt#(X1, X2))
     (splitAt#(mark X1, X2) -> splitAt#(X1, X2), splitAt#(mark X1, X2) -> splitAt#(X1, X2))
     (splitAt#(mark X1, X2) -> splitAt#(X1, X2), splitAt#(ok X1, ok X2) -> splitAt#(X1, X2))
     (active# take(X1, X2) -> take#(active X1, X2), take#(X1, mark 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#(ok X1, ok X2) -> take#(X1, X2))
     (active# U71(X1, X2) -> U71#(active X1, X2), U71#(mark X1, X2) -> U71#(X1, X2))
     (active# U71(X1, X2) -> U71#(active X1, X2), U71#(ok X1, ok X2) -> U71#(X1, X2))
     (active# cons(X1, X2) -> cons#(active X1, X2), cons#(mark X1, X2) -> cons#(X1, X2))
     (active# cons(X1, X2) -> cons#(active X1, X2), cons#(ok X1, ok X2) -> cons#(X1, X2))
     (active# U64(X1, X2) -> U64#(active X1, X2), U64#(mark X1, X2) -> U64#(X1, X2))
     (active# U64(X1, X2) -> U64#(active X1, X2), U64#(ok X1, ok X2) -> U64#(X1, X2))
     (active# U52(X1, X2) -> U52#(active X1, X2), U52#(mark X1, X2) -> U52#(X1, X2))
     (active# U52(X1, X2) -> U52#(active X1, X2), U52#(ok X1, ok X2) -> U52#(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# splitAt(X1, X2) -> splitAt#(active X1, X2), splitAt#(X1, mark X2) -> splitAt#(X1, X2))
     (active# splitAt(X1, X2) -> splitAt#(active X1, X2), splitAt#(mark X1, X2) -> splitAt#(X1, X2))
     (active# splitAt(X1, X2) -> splitAt#(active X1, X2), splitAt#(ok X1, ok X2) -> splitAt#(X1, X2))
     (active# U21(tt(), X) -> U22#(tt(), X), U22#(mark X1, X2) -> U22#(X1, X2))
     (active# U21(tt(), X) -> U22#(tt(), X), U22#(ok X1, ok X2) -> U22#(X1, X2))
     (top# mark X -> proper# X, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (top# mark X -> proper# X, proper# U12(X1, X2, X3) -> proper# X1)
     (top# mark X -> proper# X, proper# U12(X1, X2, X3) -> proper# X2)
     (top# mark X -> proper# X, proper# U12(X1, X2, X3) -> proper# X3)
     (top# mark X -> proper# X, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (top# mark X -> proper# X, proper# U11(X1, X2, X3) -> proper# X1)
     (top# mark X -> proper# X, proper# U11(X1, X2, X3) -> proper# X2)
     (top# mark X -> proper# X, proper# U11(X1, X2, X3) -> proper# X3)
     (top# mark X -> proper# X, proper# snd X -> snd# proper X)
     (top# mark X -> proper# X, proper# snd X -> proper# X)
     (top# mark X -> proper# X, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (top# mark X -> proper# X, proper# splitAt(X1, X2) -> proper# X1)
     (top# mark X -> proper# X, proper# splitAt(X1, X2) -> proper# X2)
     (top# mark X -> proper# X, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (top# mark X -> proper# X, proper# U22(X1, X2) -> proper# X1)
     (top# mark X -> proper# X, proper# U22(X1, X2) -> proper# X2)
     (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(X1, X2) -> U32#(proper X1, proper X2))
     (top# mark X -> proper# X, proper# U32(X1, X2) -> proper# X1)
     (top# mark X -> proper# X, proper# U32(X1, X2) -> proper# X2)
     (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, X3) -> U42#(proper X1, proper X2, proper X3))
     (top# mark X -> proper# X, proper# U42(X1, X2, X3) -> proper# X1)
     (top# mark X -> proper# X, proper# U42(X1, X2, X3) -> proper# X2)
     (top# mark X -> proper# X, proper# U42(X1, X2, X3) -> proper# X3)
     (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# head X -> head# proper X)
     (top# mark X -> proper# X, proper# head X -> proper# X)
     (top# mark X -> proper# X, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (top# mark X -> proper# X, proper# afterNth(X1, X2) -> proper# X1)
     (top# mark X -> proper# X, proper# afterNth(X1, X2) -> proper# X2)
     (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) -> U51#(proper X1, proper X2))
     (top# mark X -> proper# X, proper# U51(X1, X2) -> proper# X1)
     (top# mark X -> proper# X, proper# U51(X1, X2) -> proper# X2)
     (top# mark X -> proper# X, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (top# mark X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (top# mark X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (top# mark X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (top# mark X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (top# mark X -> proper# X, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (top# mark X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (top# mark X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (top# mark X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (top# mark X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (top# mark X -> proper# X, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (top# mark X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (top# mark X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (top# mark X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (top# mark X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (top# mark X -> proper# X, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (top# mark X -> proper# X, proper# U64(X1, X2) -> proper# X1)
     (top# mark X -> proper# X, proper# U64(X1, X2) -> proper# X2)
     (top# mark X -> proper# X, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (top# mark X -> proper# X, proper# pair(X1, X2) -> proper# X1)
     (top# mark X -> proper# X, proper# pair(X1, X2) -> proper# 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# U72(X1, X2) -> U72#(proper X1, proper X2))
     (top# mark X -> proper# X, proper# U72(X1, X2) -> proper# X1)
     (top# mark X -> proper# X, proper# U72(X1, X2) -> proper# X2)
     (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# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (top# mark X -> proper# X, proper# U82(X1, X2, X3) -> proper# X1)
     (top# mark X -> proper# X, proper# U82(X1, X2, X3) -> proper# X2)
     (top# mark X -> proper# X, proper# U82(X1, X2, X3) -> proper# X3)
     (top# mark X -> proper# X, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (top# mark X -> proper# X, proper# U81(X1, X2, X3) -> proper# X1)
     (top# mark X -> proper# X, proper# U81(X1, X2, X3) -> proper# X2)
     (top# mark X -> proper# X, proper# U81(X1, X2, X3) -> proper# X3)
     (top# mark X -> proper# X, proper# fst X -> fst# proper X)
     (top# mark X -> proper# X, proper# fst X -> proper# X)
     (top# mark X -> proper# X, proper# natsFrom X -> natsFrom# proper X)
     (top# mark X -> proper# X, proper# natsFrom 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# sel(X1, X2) -> sel#(proper X1, proper X2))
     (top# mark X -> proper# X, proper# sel(X1, X2) -> proper# X1)
     (top# mark X -> proper# X, proper# sel(X1, X2) -> proper# X2)
     (top# mark X -> proper# X, proper# tail X -> tail# proper X)
     (top# mark X -> proper# X, proper# tail 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)
     (proper# s X -> proper# X, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# s X -> proper# X, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# s X -> proper# X, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# s X -> proper# X, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# s X -> proper# X, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# s X -> proper# X, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# s X -> proper# X, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# s X -> proper# X, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# s X -> proper# X, proper# snd X -> snd# proper X)
     (proper# s X -> proper# X, proper# snd X -> proper# X)
     (proper# s X -> proper# X, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# splitAt(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# splitAt(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# U22(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# U22(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# U21(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# U21(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# U32(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# U32(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# U31(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# U31(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# s X -> proper# X, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# s X -> proper# X, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# s X -> proper# X, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# s X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# s X -> proper# X, proper# head X -> head# proper X)
     (proper# s X -> proper# X, proper# head X -> proper# X)
     (proper# s X -> proper# X, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# afterNth(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# afterNth(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# U52(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# U52(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# U51(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# U51(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# s X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# s X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# s X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# s X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# s X -> proper# X, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# s X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# s X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# s X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# s X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# s X -> proper# X, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# s X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# s X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# s X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# s X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# s X -> proper# X, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# U64(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# U64(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# pair(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# pair(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# cons(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# cons(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# U72(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# U72(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# U71(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# U71(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# s X -> proper# X, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# s X -> proper# X, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# s X -> proper# X, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# s X -> proper# X, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# s X -> proper# X, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# s X -> proper# X, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# s X -> proper# X, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# s X -> proper# X, proper# fst X -> fst# proper X)
     (proper# s X -> proper# X, proper# fst X -> proper# X)
     (proper# s X -> proper# X, proper# natsFrom X -> natsFrom# proper X)
     (proper# s X -> proper# X, proper# natsFrom X -> proper# X)
     (proper# s X -> proper# X, proper# s X -> s# proper X)
     (proper# s X -> proper# X, proper# s X -> proper# X)
     (proper# s X -> proper# X, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# sel(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# sel(X1, X2) -> proper# X2)
     (proper# s X -> proper# X, proper# tail X -> tail# proper X)
     (proper# s X -> proper# X, proper# tail X -> proper# X)
     (proper# s X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# s X -> proper# X, proper# take(X1, X2) -> proper# X1)
     (proper# s X -> proper# X, proper# take(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# fst X -> proper# X, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# fst X -> proper# X, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# fst X -> proper# X, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# fst X -> proper# X, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# fst X -> proper# X, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# fst X -> proper# X, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# fst X -> proper# X, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# fst X -> proper# X, proper# snd X -> snd# proper X)
     (proper# fst X -> proper# X, proper# snd X -> proper# X)
     (proper# fst X -> proper# X, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# splitAt(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# splitAt(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# U22(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# U22(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# U21(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# U21(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# U32(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# U32(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# U31(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# U31(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# fst X -> proper# X, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# fst X -> proper# X, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# fst X -> proper# X, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# fst X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# fst X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# fst X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# fst X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# fst X -> proper# X, proper# head X -> head# proper X)
     (proper# fst X -> proper# X, proper# head X -> proper# X)
     (proper# fst X -> proper# X, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# afterNth(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# afterNth(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# U52(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# U52(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# U51(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# U51(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# fst X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# fst X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# fst X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# fst X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# fst X -> proper# X, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# fst X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# fst X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# fst X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# fst X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# fst X -> proper# X, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# fst X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# fst X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# fst X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# fst X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# fst X -> proper# X, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# U64(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# U64(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# pair(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# pair(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# cons(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# cons(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# U72(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# U72(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# U71(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# U71(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# fst X -> proper# X, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# fst X -> proper# X, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# fst X -> proper# X, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# fst X -> proper# X, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# fst X -> proper# X, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# fst X -> proper# X, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# fst X -> proper# X, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# fst X -> proper# X, proper# fst X -> fst# proper X)
     (proper# fst X -> proper# X, proper# fst X -> proper# X)
     (proper# fst X -> proper# X, proper# natsFrom X -> natsFrom# proper X)
     (proper# fst X -> proper# X, proper# natsFrom X -> proper# X)
     (proper# fst X -> proper# X, proper# s X -> s# proper X)
     (proper# fst X -> proper# X, proper# s X -> proper# X)
     (proper# fst X -> proper# X, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# sel(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# sel(X1, X2) -> proper# X2)
     (proper# fst X -> proper# X, proper# tail X -> tail# proper X)
     (proper# fst X -> proper# X, proper# tail X -> proper# X)
     (proper# fst X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# fst X -> proper# X, proper# take(X1, X2) -> proper# X1)
     (proper# fst X -> proper# X, proper# take(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# snd X -> proper# X, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# snd X -> proper# X, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# snd X -> proper# X, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# snd X -> proper# X, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# snd X -> proper# X, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# snd X -> proper# X, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# snd X -> proper# X, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# snd X -> proper# X, proper# snd X -> snd# proper X)
     (proper# snd X -> proper# X, proper# snd X -> proper# X)
     (proper# snd X -> proper# X, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# splitAt(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# splitAt(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# U22(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# U22(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# U21(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# U21(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# U32(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# U32(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# U31(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# U31(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# snd X -> proper# X, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# snd X -> proper# X, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# snd X -> proper# X, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# snd X -> proper# X, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# snd X -> proper# X, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# snd X -> proper# X, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# snd X -> proper# X, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# snd X -> proper# X, proper# head X -> head# proper X)
     (proper# snd X -> proper# X, proper# head X -> proper# X)
     (proper# snd X -> proper# X, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# afterNth(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# afterNth(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# U52(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# U52(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# U51(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# U51(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# snd X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# snd X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# snd X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# snd X -> proper# X, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# snd X -> proper# X, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# snd X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# snd X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# snd X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# snd X -> proper# X, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# snd X -> proper# X, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# snd X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# snd X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# snd X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# snd X -> proper# X, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# snd X -> proper# X, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# U64(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# U64(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# pair(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# pair(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# cons(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# cons(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# U72(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# U72(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# U71(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# U71(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# snd X -> proper# X, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# snd X -> proper# X, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# snd X -> proper# X, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# snd X -> proper# X, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# snd X -> proper# X, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# snd X -> proper# X, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# snd X -> proper# X, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# snd X -> proper# X, proper# fst X -> fst# proper X)
     (proper# snd X -> proper# X, proper# fst X -> proper# X)
     (proper# snd X -> proper# X, proper# natsFrom X -> natsFrom# proper X)
     (proper# snd X -> proper# X, proper# natsFrom X -> proper# X)
     (proper# snd X -> proper# X, proper# s X -> s# proper X)
     (proper# snd X -> proper# X, proper# s X -> proper# X)
     (proper# snd X -> proper# X, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# sel(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# sel(X1, X2) -> proper# X2)
     (proper# snd X -> proper# X, proper# tail X -> tail# proper X)
     (proper# snd X -> proper# X, proper# tail X -> proper# X)
     (proper# snd X -> proper# X, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# snd X -> proper# X, proper# take(X1, X2) -> proper# X1)
     (proper# snd X -> proper# X, proper# take(X1, X2) -> proper# X2)
     (tail# mark X -> tail# X, tail# mark X -> tail# X)
     (tail# mark X -> tail# X, tail# ok X -> tail# X)
     (s# mark X -> s# X, s# mark X -> s# X)
     (s# mark X -> s# X, s# ok X -> s# X)
     (natsFrom# mark X -> natsFrom# X, natsFrom# mark X -> natsFrom# X)
     (natsFrom# mark X -> natsFrom# X, natsFrom# ok X -> natsFrom# X)
     (fst# mark X -> fst# X, fst# mark X -> fst# X)
     (fst# mark X -> fst# X, fst# ok X -> fst# X)
     (head# mark X -> head# X, head# mark X -> head# X)
     (head# mark X -> head# X, head# ok X -> head# X)
     (snd# mark X -> snd# X, snd# mark X -> snd# X)
     (snd# mark X -> snd# X, snd# ok X -> snd# X)
     (active# s X -> active# X, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# s X -> active# X, active# U12(X1, X2, X3) -> active# X1)
     (active# s X -> active# X, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# s X -> active# X, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# s X -> active# X, active# U11(X1, X2, X3) -> active# X1)
     (active# s X -> active# X, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# s X -> active# X, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# s X -> active# X, active# snd X -> active# X)
     (active# s X -> active# X, active# snd X -> snd# active X)
     (active# s X -> active# X, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# s X -> active# X, active# splitAt(X1, X2) -> active# X1)
     (active# s X -> active# X, active# splitAt(X1, X2) -> active# X2)
     (active# s X -> active# X, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# s X -> active# X, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# s X -> active# X, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# s X -> active# X, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# s X -> active# X, active# U22(X1, X2) -> active# X1)
     (active# s X -> active# X, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# s X -> active# X, active# U21(X1, X2) -> active# X1)
     (active# s X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# s X -> active# X, active# U21(tt(), X) -> U22#(tt(), X))
     (active# s X -> active# X, active# U32(X1, X2) -> active# X1)
     (active# s X -> active# X, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# s X -> active# X, active# U31(X1, X2) -> active# X1)
     (active# s X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# s X -> active# X, active# U31(tt(), N) -> U32#(tt(), N))
     (active# s X -> active# X, active# U42(X1, X2, X3) -> active# X1)
     (active# s X -> active# X, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# s X -> active# X, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# s X -> active# X, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# s X -> active# X, active# U41(X1, X2, X3) -> active# X1)
     (active# s X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# s X -> active# X, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# s X -> active# X, active# head X -> active# X)
     (active# s X -> active# X, active# head X -> head# active X)
     (active# s X -> active# X, active# head cons(N, XS) -> U31#(tt(), N))
     (active# s X -> active# X, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# s X -> active# X, active# afterNth(X1, X2) -> active# X1)
     (active# s X -> active# X, active# afterNth(X1, X2) -> active# X2)
     (active# s X -> active# X, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# s X -> active# X, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# s X -> active# X, active# U52(X1, X2) -> active# X1)
     (active# s X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# s X -> active# X, active# U51(X1, X2) -> active# X1)
     (active# s X -> active# X, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# s X -> active# X, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# s X -> active# X, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# s X -> active# X, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# s X -> active# X, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# s X -> active# X, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# s X -> active# X, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# s X -> active# X, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# s X -> active# X, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# s X -> active# X, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# s X -> active# X, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# s X -> active# X, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# s X -> active# X, active# U64(X1, X2) -> active# X1)
     (active# s X -> active# X, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# s X -> active# X, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# s X -> active# X, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# s X -> active# X, active# pair(X1, X2) -> active# X1)
     (active# s X -> active# X, active# pair(X1, X2) -> active# X2)
     (active# s X -> active# X, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# s X -> active# X, active# pair(X1, X2) -> pair#(active X1, X2))
     (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# s X -> active# X, active# U72(X1, X2) -> active# X1)
     (active# s X -> active# X, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# s X -> active# X, active# U71(X1, X2) -> active# X1)
     (active# s X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# s X -> active# X, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# s X -> active# X, active# U82(X1, X2, X3) -> active# X1)
     (active# s X -> active# X, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# s X -> active# X, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# s X -> active# X, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# s X -> active# X, active# U81(X1, X2, X3) -> active# X1)
     (active# s X -> active# X, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# s X -> active# X, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# s X -> active# X, active# fst X -> active# X)
     (active# s X -> active# X, active# fst X -> fst# active X)
     (active# s X -> active# X, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# s X -> active# X, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# s X -> active# X, active# natsFrom N -> natsFrom# s N)
     (active# s X -> active# X, active# natsFrom N -> s# N)
     (active# s X -> active# X, active# natsFrom X -> active# X)
     (active# s X -> active# X, active# natsFrom X -> natsFrom# active X)
     (active# s X -> active# X, active# s X -> active# X)
     (active# s X -> active# X, active# s X -> s# active X)
     (active# s X -> active# X, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# s X -> active# X, active# sel(X1, X2) -> active# X1)
     (active# s X -> active# X, active# sel(X1, X2) -> active# X2)
     (active# s X -> active# X, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# s X -> active# X, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# s X -> active# X, active# tail X -> active# X)
     (active# s X -> active# X, active# tail X -> tail# active X)
     (active# s X -> active# X, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# s X -> active# X, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# s X -> active# X, active# take(X1, X2) -> active# X1)
     (active# s X -> active# X, active# take(X1, X2) -> active# X2)
     (active# s X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
     (active# s X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
     (active# fst X -> active# X, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# fst X -> active# X, active# U12(X1, X2, X3) -> active# X1)
     (active# fst X -> active# X, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# fst X -> active# X, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# fst X -> active# X, active# U11(X1, X2, X3) -> active# X1)
     (active# fst X -> active# X, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# fst X -> active# X, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# fst X -> active# X, active# snd X -> active# X)
     (active# fst X -> active# X, active# snd X -> snd# active X)
     (active# fst X -> active# X, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# fst X -> active# X, active# splitAt(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# splitAt(X1, X2) -> active# X2)
     (active# fst X -> active# X, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# fst X -> active# X, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# fst X -> active# X, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# fst X -> active# X, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# fst X -> active# X, active# U22(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# fst X -> active# X, active# U21(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# fst X -> active# X, active# U21(tt(), X) -> U22#(tt(), X))
     (active# fst X -> active# X, active# U32(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# fst X -> active# X, active# U31(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# fst X -> active# X, active# U31(tt(), N) -> U32#(tt(), N))
     (active# fst X -> active# X, active# U42(X1, X2, X3) -> active# X1)
     (active# fst X -> active# X, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# fst X -> active# X, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# fst X -> active# X, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# fst X -> active# X, active# U41(X1, X2, X3) -> active# X1)
     (active# fst X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# fst X -> active# X, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# fst X -> active# X, active# head X -> active# X)
     (active# fst X -> active# X, active# head X -> head# active X)
     (active# fst X -> active# X, active# head cons(N, XS) -> U31#(tt(), N))
     (active# fst X -> active# X, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# fst X -> active# X, active# afterNth(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# afterNth(X1, X2) -> active# X2)
     (active# fst X -> active# X, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# fst X -> active# X, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# fst X -> active# X, active# U52(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# fst X -> active# X, active# U51(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# fst X -> active# X, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# fst X -> active# X, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# fst X -> active# X, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# fst X -> active# X, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# fst X -> active# X, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# fst X -> active# X, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# fst X -> active# X, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# fst X -> active# X, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# fst X -> active# X, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# fst X -> active# X, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# fst X -> active# X, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# fst X -> active# X, active# U64(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# fst X -> active# X, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# fst X -> active# X, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# fst X -> active# X, active# pair(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# pair(X1, X2) -> active# X2)
     (active# fst X -> active# X, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# fst X -> active# X, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# fst X -> active# X, active# cons(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# fst X -> active# X, active# U72(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# fst X -> active# X, active# U71(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# fst X -> active# X, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# fst X -> active# X, active# U82(X1, X2, X3) -> active# X1)
     (active# fst X -> active# X, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# fst X -> active# X, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# fst X -> active# X, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# fst X -> active# X, active# U81(X1, X2, X3) -> active# X1)
     (active# fst X -> active# X, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# fst X -> active# X, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# fst X -> active# X, active# fst X -> active# X)
     (active# fst X -> active# X, active# fst X -> fst# active X)
     (active# fst X -> active# X, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# fst X -> active# X, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# fst X -> active# X, active# natsFrom N -> natsFrom# s N)
     (active# fst X -> active# X, active# natsFrom N -> s# N)
     (active# fst X -> active# X, active# natsFrom X -> active# X)
     (active# fst X -> active# X, active# natsFrom X -> natsFrom# active X)
     (active# fst X -> active# X, active# s X -> active# X)
     (active# fst X -> active# X, active# s X -> s# active X)
     (active# fst X -> active# X, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# fst X -> active# X, active# sel(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# sel(X1, X2) -> active# X2)
     (active# fst X -> active# X, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# fst X -> active# X, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# fst X -> active# X, active# tail X -> active# X)
     (active# fst X -> active# X, active# tail X -> tail# active X)
     (active# fst X -> active# X, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# fst X -> active# X, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# fst X -> active# X, active# take(X1, X2) -> active# X1)
     (active# fst X -> active# X, active# take(X1, X2) -> active# X2)
     (active# fst X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
     (active# fst X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
     (active# snd X -> active# X, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# snd X -> active# X, active# U12(X1, X2, X3) -> active# X1)
     (active# snd X -> active# X, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# snd X -> active# X, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# snd X -> active# X, active# U11(X1, X2, X3) -> active# X1)
     (active# snd X -> active# X, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# snd X -> active# X, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# snd X -> active# X, active# snd X -> active# X)
     (active# snd X -> active# X, active# snd X -> snd# active X)
     (active# snd X -> active# X, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# snd X -> active# X, active# splitAt(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# splitAt(X1, X2) -> active# X2)
     (active# snd X -> active# X, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# snd X -> active# X, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# snd X -> active# X, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# snd X -> active# X, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# snd X -> active# X, active# U22(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# snd X -> active# X, active# U21(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# snd X -> active# X, active# U21(tt(), X) -> U22#(tt(), X))
     (active# snd X -> active# X, active# U32(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# snd X -> active# X, active# U31(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# snd X -> active# X, active# U31(tt(), N) -> U32#(tt(), N))
     (active# snd X -> active# X, active# U42(X1, X2, X3) -> active# X1)
     (active# snd X -> active# X, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# snd X -> active# X, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# snd X -> active# X, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# snd X -> active# X, active# U41(X1, X2, X3) -> active# X1)
     (active# snd X -> active# X, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# snd X -> active# X, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# snd X -> active# X, active# head X -> active# X)
     (active# snd X -> active# X, active# head X -> head# active X)
     (active# snd X -> active# X, active# head cons(N, XS) -> U31#(tt(), N))
     (active# snd X -> active# X, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# snd X -> active# X, active# afterNth(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# afterNth(X1, X2) -> active# X2)
     (active# snd X -> active# X, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# snd X -> active# X, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# snd X -> active# X, active# U52(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# snd X -> active# X, active# U51(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# snd X -> active# X, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# snd X -> active# X, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# snd X -> active# X, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# snd X -> active# X, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# snd X -> active# X, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# snd X -> active# X, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# snd X -> active# X, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# snd X -> active# X, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# snd X -> active# X, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# snd X -> active# X, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# snd X -> active# X, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# snd X -> active# X, active# U64(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# snd X -> active# X, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# snd X -> active# X, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# snd X -> active# X, active# pair(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# pair(X1, X2) -> active# X2)
     (active# snd X -> active# X, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# snd X -> active# X, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# snd X -> active# X, active# cons(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# snd X -> active# X, active# U72(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# snd X -> active# X, active# U71(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# snd X -> active# X, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# snd X -> active# X, active# U82(X1, X2, X3) -> active# X1)
     (active# snd X -> active# X, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# snd X -> active# X, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# snd X -> active# X, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# snd X -> active# X, active# U81(X1, X2, X3) -> active# X1)
     (active# snd X -> active# X, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# snd X -> active# X, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# snd X -> active# X, active# fst X -> active# X)
     (active# snd X -> active# X, active# fst X -> fst# active X)
     (active# snd X -> active# X, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# snd X -> active# X, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# snd X -> active# X, active# natsFrom N -> natsFrom# s N)
     (active# snd X -> active# X, active# natsFrom N -> s# N)
     (active# snd X -> active# X, active# natsFrom X -> active# X)
     (active# snd X -> active# X, active# natsFrom X -> natsFrom# active X)
     (active# snd X -> active# X, active# s X -> active# X)
     (active# snd X -> active# X, active# s X -> s# active X)
     (active# snd X -> active# X, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# snd X -> active# X, active# sel(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# sel(X1, X2) -> active# X2)
     (active# snd X -> active# X, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# snd X -> active# X, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# snd X -> active# X, active# tail X -> active# X)
     (active# snd X -> active# X, active# tail X -> tail# active X)
     (active# snd X -> active# X, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# snd X -> active# X, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# snd X -> active# X, active# take(X1, X2) -> active# X1)
     (active# snd X -> active# X, active# take(X1, X2) -> active# X2)
     (active# snd X -> active# X, active# take(X1, X2) -> take#(X1, active X2))
     (active# snd X -> active# X, active# take(X1, X2) -> take#(active X1, X2))
     (active# U42(tt(), N, XS) -> head# afterNth(N, XS), head# mark X -> head# X)
     (active# U42(tt(), N, XS) -> head# afterNth(N, XS), head# ok X -> head# X)
     (proper# take(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# take(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# take(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# take(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# take(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (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# U41(X1, X2, X3) -> proper# X1)
     (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# X3)
     (proper# take(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# take(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# take(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# take(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# take(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# take(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# take(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# take(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# take(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# take(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# take(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# take(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# take(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# take(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# take(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# take(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# take(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# take(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# take(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# take(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# take(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# take(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# take(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# take(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# take(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# take(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# snd X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# head X -> head# proper X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# head X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# fst X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# s X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# tail X -> proper# X)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U81(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U81(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U71(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U71(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U71(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# U71(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (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(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (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, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U71(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (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# head X -> head# proper X)
     (proper# U71(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# U71(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (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) -> U51#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U71(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U71(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U71(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U71(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U71(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U71(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (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# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (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# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U71(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U71(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U71(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U71(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# U71(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U71(X1, X2) -> proper# X2, proper# natsFrom 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# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U71(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U71(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U71(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U71(X1, X2) -> proper# X2, proper# tail 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# cons(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# cons(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# cons(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# cons(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# cons(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (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(X1, X2) -> U32#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (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, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# cons(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (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# head X -> head# proper X)
     (proper# cons(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# cons(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (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) -> U51#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# cons(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# cons(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# cons(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# cons(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# cons(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# cons(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (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# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (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# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# cons(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# cons(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# cons(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# cons(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# cons(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# cons(X1, X2) -> proper# X2, proper# natsFrom 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# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# cons(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# cons(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# cons(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# cons(X1, X2) -> proper# X2, proper# tail 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# U64(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U64(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# U64(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# U64(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# U64(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U64(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U64(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U64(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U64(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U64(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U64(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U64(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U64(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U64(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# U64(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U64(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U64(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# U64(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# U64(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U64(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U64(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# U64(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U64(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U64(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# snd X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# head X -> head# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# head X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# fst X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# s X -> s# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# s X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# tail X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U51(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# U51(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# U51(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# U51(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U51(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U51(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U51(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U51(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U51(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U51(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U51(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U51(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U51(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# U51(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U51(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U51(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# U51(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# U51(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U51(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U51(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# U51(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U51(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U51(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# afterNth(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# afterNth(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# afterNth(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# afterNth(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# afterNth(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# afterNth(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# snd X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# head X -> head# proper X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# head X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# fst X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# s X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# tail X -> proper# X)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U42(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U42(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U32(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# U32(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# U32(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# U32(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U32(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U32(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U32(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U32(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U32(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U32(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U32(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U32(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U32(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# U32(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U32(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U32(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# U32(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# U32(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U32(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U32(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# U32(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U32(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U32(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U22(X1, X2) -> proper# X2, proper# snd X -> proper# X)
     (proper# U22(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X2, proper# head X -> head# proper X)
     (proper# U22(X1, X2) -> proper# X2, proper# head X -> proper# X)
     (proper# U22(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U22(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U22(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U22(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U22(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U22(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U22(X1, X2) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U22(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U22(X1, X2) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U22(X1, X2) -> proper# X2, proper# fst X -> proper# X)
     (proper# U22(X1, X2) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U22(X1, X2) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U22(X1, X2) -> proper# X2, proper# s X -> s# proper X)
     (proper# U22(X1, X2) -> proper# X2, proper# s X -> proper# X)
     (proper# U22(X1, X2) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U22(X1, X2) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U22(X1, X2) -> proper# X2, proper# tail X -> proper# X)
     (proper# U22(X1, X2) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U22(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U22(X1, X2) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# snd X -> snd# proper X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# snd X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U22(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U21(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U32(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U31(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# head X -> head# proper X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# head X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U52(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U51(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U64(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# pair(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# cons(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U72(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U71(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# fst X -> fst# proper X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# fst X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# natsFrom X -> natsFrom# proper X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# natsFrom X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# s X -> s# proper X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# s X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# sel(X1, X2) -> proper# X2)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# tail X -> tail# proper X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# tail X -> proper# X)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U11(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X1)
     (proper# U11(X1, X2, X3) -> proper# X2, proper# take(X1, X2) -> proper# X2)
     (active# take(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# take(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# take(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X2, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# take(X1, X2) -> active# X2, active# snd X -> active# X)
     (active# take(X1, X2) -> active# X2, active# snd X -> snd# active X)
     (active# take(X1, X2) -> active# X2, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# take(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X2)
     (active# take(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# take(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# take(X1, X2) -> active# X2, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# take(X1, X2) -> active# X2, active# U22(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U21(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U21(tt(), X) -> U22#(tt(), X))
     (active# take(X1, X2) -> active# X2, active# U32(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U31(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U31(tt(), N) -> U32#(tt(), N))
     (active# take(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# take(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# take(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X2, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# take(X1, X2) -> active# X2, active# head X -> active# X)
     (active# take(X1, X2) -> active# X2, active# head X -> head# active X)
     (active# take(X1, X2) -> active# X2, active# head cons(N, XS) -> U31#(tt(), N))
     (active# take(X1, X2) -> active# X2, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# take(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X2)
     (active# take(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# take(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U52(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U51(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# take(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# take(X1, X2) -> active# X2, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# take(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# take(X1, X2) -> active# X2, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# take(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# take(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# take(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# take(X1, X2) -> active# X2, active# U64(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# take(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# take(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X2)
     (active# take(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# take(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(active X1, X2))
     (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))
     (active# take(X1, X2) -> active# X2, active# U72(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U71(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# take(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# take(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# take(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# take(X1, X2) -> active# X2, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# take(X1, X2) -> active# X2, active# fst X -> active# X)
     (active# take(X1, X2) -> active# X2, active# fst X -> fst# active X)
     (active# take(X1, X2) -> active# X2, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# take(X1, X2) -> active# X2, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# take(X1, X2) -> active# X2, active# natsFrom N -> natsFrom# s N)
     (active# take(X1, X2) -> active# X2, active# natsFrom N -> s# N)
     (active# take(X1, X2) -> active# X2, active# natsFrom X -> active# X)
     (active# take(X1, X2) -> active# X2, active# natsFrom X -> natsFrom# active X)
     (active# take(X1, X2) -> active# X2, active# s X -> active# X)
     (active# take(X1, X2) -> active# X2, active# s X -> s# active X)
     (active# take(X1, X2) -> active# X2, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# take(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X2)
     (active# take(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# take(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# take(X1, X2) -> active# X2, active# tail X -> active# X)
     (active# take(X1, X2) -> active# X2, active# tail X -> tail# active X)
     (active# take(X1, X2) -> active# X2, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# take(X1, X2) -> active# X2, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# take(X1, X2) -> active# X2, active# take(X1, X2) -> active# X1)
     (active# take(X1, X2) -> active# X2, active# take(X1, X2) -> active# 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) -> take#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# pair(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# pair(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X2, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X2, active# snd X -> active# X)
     (active# pair(X1, X2) -> active# X2, active# snd X -> snd# active X)
     (active# pair(X1, X2) -> active# X2, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# pair(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# pair(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# pair(X1, X2) -> active# X2, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# pair(X1, X2) -> active# X2, active# U22(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U21(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U21(tt(), X) -> U22#(tt(), X))
     (active# pair(X1, X2) -> active# X2, active# U32(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U31(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U31(tt(), N) -> U32#(tt(), N))
     (active# pair(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# pair(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# pair(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X2, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X2, active# head X -> active# X)
     (active# pair(X1, X2) -> active# X2, active# head X -> head# active X)
     (active# pair(X1, X2) -> active# X2, active# head cons(N, XS) -> U31#(tt(), N))
     (active# pair(X1, X2) -> active# X2, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# pair(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U52(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U51(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# pair(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# pair(X1, X2) -> active# X2, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# pair(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# pair(X1, X2) -> active# X2, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# pair(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# pair(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# pair(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# pair(X1, X2) -> active# X2, active# U64(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# pair(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# pair(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# pair(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# cons(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U72(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U71(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# pair(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# pair(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# pair(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X2, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X2, active# fst X -> active# X)
     (active# pair(X1, X2) -> active# X2, active# fst X -> fst# active X)
     (active# pair(X1, X2) -> active# X2, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# pair(X1, X2) -> active# X2, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# pair(X1, X2) -> active# X2, active# natsFrom N -> natsFrom# s N)
     (active# pair(X1, X2) -> active# X2, active# natsFrom N -> s# N)
     (active# pair(X1, X2) -> active# X2, active# natsFrom X -> active# X)
     (active# pair(X1, X2) -> active# X2, active# natsFrom X -> natsFrom# active X)
     (active# pair(X1, X2) -> active# X2, active# s X -> active# X)
     (active# pair(X1, X2) -> active# X2, active# s X -> s# active X)
     (active# pair(X1, X2) -> active# X2, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# pair(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# pair(X1, X2) -> active# X2, active# tail X -> active# X)
     (active# pair(X1, X2) -> active# X2, active# tail X -> tail# active X)
     (active# pair(X1, X2) -> active# X2, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# pair(X1, X2) -> active# X2, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X2, active# take(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X2, active# take(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X2, active# take(X1, X2) -> take#(X1, active X2))
     (active# pair(X1, X2) -> active# X2, active# take(X1, X2) -> take#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X2, active# U12(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X2, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# snd X -> active# X)
     (active# splitAt(X1, X2) -> active# X2, active# snd X -> snd# active X)
     (active# splitAt(X1, X2) -> active# X2, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# splitAt(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# splitAt(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X2, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# splitAt(X1, X2) -> active# X2, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# splitAt(X1, X2) -> active# X2, active# U22(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U21(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U21(tt(), X) -> U22#(tt(), X))
     (active# splitAt(X1, X2) -> active# X2, active# U32(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U31(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U31(tt(), N) -> U32#(tt(), N))
     (active# splitAt(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X2, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# head X -> active# X)
     (active# splitAt(X1, X2) -> active# X2, active# head X -> head# active X)
     (active# splitAt(X1, X2) -> active# X2, active# head cons(N, XS) -> U31#(tt(), N))
     (active# splitAt(X1, X2) -> active# X2, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# afterNth(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X2, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U52(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U51(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# splitAt(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# splitAt(X1, X2) -> active# X2, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# splitAt(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# splitAt(X1, X2) -> active# X2, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# splitAt(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# splitAt(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# splitAt(X1, X2) -> active# X2, active# U64(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# splitAt(X1, X2) -> active# X2, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# splitAt(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# pair(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X2, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# cons(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U72(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U71(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# splitAt(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X2, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# fst X -> active# X)
     (active# splitAt(X1, X2) -> active# X2, active# fst X -> fst# active X)
     (active# splitAt(X1, X2) -> active# X2, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# splitAt(X1, X2) -> active# X2, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# splitAt(X1, X2) -> active# X2, active# natsFrom N -> natsFrom# s N)
     (active# splitAt(X1, X2) -> active# X2, active# natsFrom N -> s# N)
     (active# splitAt(X1, X2) -> active# X2, active# natsFrom X -> active# X)
     (active# splitAt(X1, X2) -> active# X2, active# natsFrom X -> natsFrom# active X)
     (active# splitAt(X1, X2) -> active# X2, active# s X -> active# X)
     (active# splitAt(X1, X2) -> active# X2, active# s X -> s# active X)
     (active# splitAt(X1, X2) -> active# X2, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# sel(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X2, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X2, active# tail X -> active# X)
     (active# splitAt(X1, X2) -> active# X2, active# tail X -> tail# active X)
     (active# splitAt(X1, X2) -> active# X2, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# splitAt(X1, X2) -> active# X2, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X2, active# take(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X2, active# take(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X2, active# take(X1, X2) -> take#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X2, active# take(X1, X2) -> take#(active X1, X2))
     (active# U71(tt(), XS) -> U72#(tt(), XS), U72#(mark X1, X2) -> U72#(X1, X2))
     (active# U71(tt(), XS) -> U72#(tt(), XS), U72#(ok X1, ok X2) -> U72#(X1, X2))
     (proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4), U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4))
     (proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4), U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4))
     (proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4), U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4))
     (proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4), U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# snd X -> snd# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# snd X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U22(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U22(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U21(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U32(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U32(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U31(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# head X -> head# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# head X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U52(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U51(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U64(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U64(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# pair(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# pair(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# cons(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U72(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U72(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U71(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# fst X -> fst# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# fst X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# natsFrom X -> natsFrom# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# natsFrom X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# s X -> s# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# s X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# sel(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# sel(X1, X2) -> proper# X2)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# tail X -> tail# proper X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# tail X -> proper# X)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> proper# X1)
     (proper# U61(X1, X2, X3, X4) -> proper# X4, proper# take(X1, X2) -> proper# X2)
     (active# natsFrom N -> natsFrom# s N, natsFrom# mark X -> natsFrom# X)
     (active# natsFrom N -> natsFrom# s N, natsFrom# ok X -> natsFrom# 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# s X -> s# proper X, s# mark X -> s# X)
     (proper# s X -> s# proper X, s# ok X -> s# X)
     (proper# fst X -> fst# proper X, fst# mark X -> fst# X)
     (proper# fst X -> fst# proper X, fst# ok X -> fst# X)
     (proper# snd X -> snd# proper X, snd# mark X -> snd# X)
     (proper# snd X -> snd# proper X, snd# ok X -> snd# X)
     (active# s X -> s# active X, s# mark X -> s# X)
     (active# s X -> s# active X, s# ok X -> s# X)
     (active# fst X -> fst# active X, fst# mark X -> fst# X)
     (active# fst X -> fst# active X, fst# ok X -> fst# X)
     (active# snd X -> snd# active X, snd# mark X -> snd# X)
     (active# snd X -> snd# active X, snd# ok X -> snd# X)
     (active# U31(tt(), N) -> U32#(tt(), N), U32#(mark X1, X2) -> U32#(X1, X2))
     (active# U31(tt(), N) -> U32#(tt(), N), U32#(ok X1, ok X2) -> U32#(X1, X2))
     (active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS), U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4))
     (active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS), U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4))
     (U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4), U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4))
     (U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4), U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4))
     (U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4), U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4))
     (U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4), U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4))
     (U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4), U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4))
     (U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4), U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4))
     (active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4), U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4))
     (active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4), U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4))
     (active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4), U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4))
     (active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4), U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4))
     (proper# sel(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# sel(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# sel(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# sel(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# sel(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# sel(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# sel(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# sel(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# sel(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# sel(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# sel(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# sel(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# sel(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# sel(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# sel(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# sel(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# sel(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# sel(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# sel(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# sel(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# sel(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# sel(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# sel(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# sel(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# snd X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# head X -> head# proper X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# head X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# fst X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# s X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# tail X -> proper# X)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U82(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U82(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U72(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# U72(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# U72(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# U72(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U72(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U72(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U72(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U72(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U72(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U72(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U72(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U72(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U72(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# U72(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U72(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U72(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# U72(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# U72(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U72(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U72(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# U72(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U72(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U72(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# pair(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# pair(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# pair(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# pair(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# pair(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# pair(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# pair(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# pair(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# pair(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# pair(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# pair(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# pair(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# pair(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# pair(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# pair(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# pair(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# pair(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# pair(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# pair(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# pair(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# pair(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# pair(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# pair(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# snd X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# head X -> head# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# head X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# fst X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# s X -> s# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# s X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# tail X -> proper# X)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U63(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# snd X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# head X -> head# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# head X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# fst X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# s X -> s# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# s X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# tail X -> proper# X)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U62(X1, X2, X3, X4) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U52(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# U52(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (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# U41(X1, X2, X3) -> proper# X1)
     (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# X3)
     (proper# U52(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# U52(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# U52(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U52(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U52(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U52(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U52(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U52(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U52(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U52(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U52(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U52(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# U52(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U52(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U52(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# U52(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# U52(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U52(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U52(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# U52(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U52(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U52(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# snd X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (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(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (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, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (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# head X -> head# proper X)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# head X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (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) -> U51#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (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# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (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# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# fst X -> proper# X)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# natsFrom 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# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U41(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U41(X1, X2, X3) -> proper# X1, proper# tail 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# U31(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U31(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U31(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U31(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# U31(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (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(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (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, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U31(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (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# head X -> head# proper X)
     (proper# U31(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# U31(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (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) -> U51#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U31(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U31(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U31(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U31(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U31(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U31(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (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# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (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# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U31(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U31(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U31(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U31(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# U31(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U31(X1, X2) -> proper# X1, proper# natsFrom 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# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U31(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U31(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U31(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U31(X1, X2) -> proper# X1, proper# tail 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# U21(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U21(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# U21(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (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# U41(X1, X2, X3) -> proper# X1)
     (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# X3)
     (proper# U21(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# U21(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# U21(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U21(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U21(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U21(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U21(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U21(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U21(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U21(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U21(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U21(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# U21(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U21(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U21(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# U21(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# U21(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U21(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U21(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# U21(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U21(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U21(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# snd X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X1, proper# head X -> head# proper X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# head X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# splitAt(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# splitAt(X1, X2) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# fst X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# s X -> s# proper X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# s X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# splitAt(X1, X2) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# tail X -> proper# X)
     (proper# splitAt(X1, X2) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# splitAt(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# splitAt(X1, X2) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U12(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> U11#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U11(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# snd X -> snd# proper X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# snd X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> splitAt#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# splitAt(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> U22#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U22(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> U21#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U21(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> U32#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U32(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> U31#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U31(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U42(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> U41#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U41(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# head X -> head# proper X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# head X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> afterNth#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# afterNth(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> U52#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U52(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> U51#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U51(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> U62#(proper X1, proper X2, proper X3, proper X4))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U62(X1, X2, X3, X4) -> proper# X4)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> U61#(proper X1, proper X2, proper X3, proper X4))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U61(X1, X2, X3, X4) -> proper# X4)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> U63#(proper X1, proper X2, proper X3, proper X4))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U63(X1, X2, X3, X4) -> proper# X4)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> U64#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U64(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> pair#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# pair(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> cons#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# cons(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> U72#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U72(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> U71#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U71(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U82(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> U81#(proper X1, proper X2, proper X3))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# U81(X1, X2, X3) -> proper# X3)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# fst X -> fst# proper X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# fst X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# natsFrom X -> natsFrom# proper X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# natsFrom X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# s X -> s# proper X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# s X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> sel#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# sel(X1, X2) -> proper# X2)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# tail X -> tail# proper X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# tail X -> proper# X)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> take#(proper X1, proper X2))
     (proper# U12(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X1)
     (proper# U12(X1, X2, X3) -> proper# X1, proper# take(X1, X2) -> proper# X2)
     (active# sel(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# sel(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# sel(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# sel(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# sel(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# sel(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# sel(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# sel(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# sel(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# sel(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# sel(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# sel(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# sel(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X1, active# head X -> active# X)
     (active# sel(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# sel(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# sel(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# sel(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# sel(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# sel(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# sel(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# sel(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# sel(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# sel(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# sel(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# sel(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# sel(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# sel(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# sel(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# sel(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# sel(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# sel(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# sel(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# sel(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# sel(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# sel(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# sel(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# sel(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# sel(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# sel(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# sel(X1, X2) -> active# X1, active# s X -> active# X)
     (active# sel(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# sel(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# sel(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# sel(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# sel(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# sel(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# sel(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# sel(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# sel(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# sel(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# sel(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U82(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U82(X1, X2, X3) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# snd X -> active# X)
     (active# U82(X1, X2, X3) -> active# X1, active# snd X -> snd# active X)
     (active# U82(X1, X2, X3) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U82(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U82(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U82(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U82(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U82(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U82(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U82(X1, X2, X3) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# head X -> active# X)
     (active# U82(X1, X2, X3) -> active# X1, active# head X -> head# active X)
     (active# U82(X1, X2, X3) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U82(X1, X2, X3) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U82(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U82(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U82(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U82(X1, X2, X3) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U82(X1, X2, X3) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U82(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U82(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U82(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U82(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U82(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U82(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U82(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U82(X1, X2, X3) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# fst X -> active# X)
     (active# U82(X1, X2, X3) -> active# X1, active# fst X -> fst# active X)
     (active# U82(X1, X2, X3) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U82(X1, X2, X3) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U82(X1, X2, X3) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U82(X1, X2, X3) -> active# X1, active# natsFrom N -> s# N)
     (active# U82(X1, X2, X3) -> active# X1, active# natsFrom X -> active# X)
     (active# U82(X1, X2, X3) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U82(X1, X2, X3) -> active# X1, active# s X -> active# X)
     (active# U82(X1, X2, X3) -> active# X1, active# s X -> s# active X)
     (active# U82(X1, X2, X3) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U82(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U82(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U82(X1, X2, X3) -> active# X1, active# tail X -> active# X)
     (active# U82(X1, X2, X3) -> active# X1, active# tail X -> tail# active X)
     (active# U82(X1, X2, X3) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U82(X1, X2, X3) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U82(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U82(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U82(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U82(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U72(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U72(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U72(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U72(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U72(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# U72(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# U72(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U72(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U72(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U72(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U72(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U72(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U72(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U72(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U72(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U72(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U72(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U72(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U72(X1, X2) -> active# X1, active# head X -> active# X)
     (active# U72(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# U72(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U72(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U72(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U72(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U72(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U72(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U72(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U72(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U72(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U72(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U72(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U72(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U72(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U72(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U72(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U72(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U72(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U72(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U72(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U72(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U72(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U72(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U72(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# U72(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# U72(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U72(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U72(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U72(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# U72(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# U72(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U72(X1, X2) -> active# X1, active# s X -> active# X)
     (active# U72(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# U72(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U72(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U72(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U72(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U72(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# U72(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# U72(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U72(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U72(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U72(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U72(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U72(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# pair(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# pair(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# pair(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# pair(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# pair(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# pair(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# pair(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# pair(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# pair(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# pair(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# pair(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# pair(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X1, active# head X -> active# X)
     (active# pair(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# pair(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# pair(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# pair(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# pair(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# pair(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# pair(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# pair(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# pair(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# pair(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# pair(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# pair(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# pair(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# pair(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# pair(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# pair(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# pair(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# pair(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# pair(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# pair(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# pair(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# pair(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# pair(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# pair(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# pair(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# pair(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# pair(X1, X2) -> active# X1, active# s X -> active# X)
     (active# pair(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# pair(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# pair(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# pair(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# pair(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# pair(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# pair(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# pair(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# pair(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# pair(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# pair(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# snd X -> active# X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# snd X -> snd# active X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# head X -> active# X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# head X -> head# active X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# fst X -> active# X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# fst X -> fst# active X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# natsFrom N -> s# N)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# natsFrom X -> active# X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# s X -> active# X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# s X -> s# active X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# tail X -> active# X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# tail X -> tail# active X)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U63(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U63(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# snd X -> active# X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# snd X -> snd# active X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# head X -> active# X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# head X -> head# active X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# fst X -> active# X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# fst X -> fst# active X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# natsFrom N -> s# N)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# natsFrom X -> active# X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# s X -> active# X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# s X -> s# active X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# tail X -> active# X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# tail X -> tail# active X)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U62(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U62(X1, X2, X3, X4) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U52(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U52(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U52(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U52(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U52(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U52(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# U52(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# U52(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U52(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U52(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U52(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U52(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U52(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U52(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (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(), X) -> U22#(tt(), X))
     (active# U52(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (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(), N) -> U32#(tt(), N))
     (active# U52(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U52(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U52(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (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(), N, XS) -> U42#(tt(), N, XS))
     (active# U52(X1, X2) -> active# X1, active# head X -> active# X)
     (active# U52(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# U52(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U52(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U52(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U52(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U52(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (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# U51(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U52(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U52(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U52(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U52(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U52(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U52(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U52(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U52(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U52(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U52(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U52(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U52(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U52(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U52(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U52(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U52(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (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(), XS) -> U72#(tt(), XS))
     (active# U52(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U52(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U52(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U52(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U52(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U52(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# U52(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# U52(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U52(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U52(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U52(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# U52(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# U52(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# 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# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U52(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U52(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U52(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U52(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U52(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# U52(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# U52(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U52(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (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# U41(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U41(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U41(X1, X2, X3) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# snd X -> active# X)
     (active# U41(X1, X2, X3) -> active# X1, active# snd X -> snd# active X)
     (active# U41(X1, X2, X3) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U41(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U41(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U41(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U41(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U41(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U41(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (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(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# head X -> active# X)
     (active# U41(X1, X2, X3) -> active# X1, active# head X -> head# active X)
     (active# U41(X1, X2, X3) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U41(X1, X2, X3) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U41(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U41(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U41(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U41(X1, X2, X3) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U41(X1, X2, X3) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U41(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U41(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U41(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U41(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U41(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U41(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (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# U41(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U41(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U41(X1, X2, X3) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# fst X -> active# X)
     (active# U41(X1, X2, X3) -> active# X1, active# fst X -> fst# active X)
     (active# U41(X1, X2, X3) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U41(X1, X2, X3) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U41(X1, X2, X3) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U41(X1, X2, X3) -> active# X1, active# natsFrom N -> s# N)
     (active# U41(X1, X2, X3) -> active# X1, active# natsFrom X -> active# X)
     (active# U41(X1, X2, X3) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U41(X1, X2, X3) -> active# X1, active# s X -> active# X)
     (active# U41(X1, X2, X3) -> active# X1, active# s X -> s# active X)
     (active# U41(X1, X2, X3) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U41(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U41(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U41(X1, X2, X3) -> active# X1, active# tail X -> active# X)
     (active# U41(X1, X2, X3) -> active# X1, active# tail X -> tail# active X)
     (active# U41(X1, X2, X3) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U41(X1, X2, X3) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U41(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U41(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# 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) -> take#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U31(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U31(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U31(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U31(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U31(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# U31(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# U31(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U31(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U31(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U31(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U31(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U31(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U31(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U31(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U31(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U31(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U31(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U31(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U31(X1, X2) -> active# X1, active# head X -> active# X)
     (active# U31(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# U31(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U31(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U31(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U31(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U31(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U31(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U31(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U31(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U31(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U31(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U31(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U31(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U31(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U31(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U31(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U31(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U31(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (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# U31(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U31(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U31(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U31(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U31(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U31(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U31(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# U31(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# U31(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U31(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U31(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U31(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# U31(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# U31(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U31(X1, X2) -> active# X1, active# s X -> active# X)
     (active# U31(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# U31(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U31(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U31(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U31(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U31(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# U31(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# U31(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U31(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U31(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U31(X1, X2) -> active# X1, active# take(X1, X2) -> active# 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) -> take#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U21(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U21(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U21(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U21(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U21(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# U21(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# U21(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U21(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U21(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U21(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U21(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U21(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U21(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U21(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U21(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U21(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U21(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U21(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U21(X1, X2) -> active# X1, active# head X -> active# X)
     (active# U21(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# U21(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U21(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U21(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U21(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U21(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U21(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U21(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U21(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U21(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U21(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U21(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U21(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U21(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U21(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U21(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U21(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U21(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (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# U21(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U21(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U21(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U21(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U21(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U21(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U21(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# U21(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# U21(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U21(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U21(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U21(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# U21(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# U21(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U21(X1, X2) -> active# X1, active# s X -> active# X)
     (active# U21(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# U21(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U21(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U21(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U21(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U21(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# U21(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# U21(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U21(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U21(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U21(X1, X2) -> active# X1, active# take(X1, X2) -> active# 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) -> take#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# snd X -> active# X)
     (active# splitAt(X1, X2) -> active# X1, active# snd X -> snd# active X)
     (active# splitAt(X1, X2) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# splitAt(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# splitAt(X1, X2) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# splitAt(X1, X2) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# splitAt(X1, X2) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# splitAt(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# head X -> active# X)
     (active# splitAt(X1, X2) -> active# X1, active# head X -> head# active X)
     (active# splitAt(X1, X2) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# splitAt(X1, X2) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# splitAt(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# splitAt(X1, X2) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# splitAt(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# splitAt(X1, X2) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# splitAt(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# splitAt(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# splitAt(X1, X2) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# splitAt(X1, X2) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# splitAt(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# splitAt(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# splitAt(X1, X2) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# fst X -> active# X)
     (active# splitAt(X1, X2) -> active# X1, active# fst X -> fst# active X)
     (active# splitAt(X1, X2) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# splitAt(X1, X2) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# splitAt(X1, X2) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# splitAt(X1, X2) -> active# X1, active# natsFrom N -> s# N)
     (active# splitAt(X1, X2) -> active# X1, active# natsFrom X -> active# X)
     (active# splitAt(X1, X2) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# splitAt(X1, X2) -> active# X1, active# s X -> active# X)
     (active# splitAt(X1, X2) -> active# X1, active# s X -> s# active X)
     (active# splitAt(X1, X2) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# splitAt(X1, X2) -> active# X1, active# tail X -> active# X)
     (active# splitAt(X1, X2) -> active# X1, active# tail X -> tail# active X)
     (active# splitAt(X1, X2) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# splitAt(X1, X2) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# splitAt(X1, X2) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# splitAt(X1, X2) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# splitAt(X1, X2) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# splitAt(X1, X2) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> U12#(active X1, X2, X3))
     (active# U12(X1, X2, X3) -> active# X1, active# U12(X1, X2, X3) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> snd# splitAt(N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U12(tt(), N, XS) -> splitAt#(N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U11(X1, X2, X3) -> U11#(active X1, X2, X3))
     (active# U12(X1, X2, X3) -> active# X1, active# U11(tt(), N, XS) -> U12#(tt(), N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# snd X -> active# X)
     (active# U12(X1, X2, X3) -> active# X1, active# snd X -> snd# active X)
     (active# U12(X1, X2, X3) -> active# X1, active# snd pair(X, Y) -> U51#(tt(), Y))
     (active# U12(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> active# X2)
     (active# U12(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(X1, active X2))
     (active# U12(X1, X2, X3) -> active# X1, active# splitAt(X1, X2) -> splitAt#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# splitAt(s N, cons(X, XS)) -> U61#(tt(), N, X, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# splitAt(0(), XS) -> pair#(nil(), XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U22(X1, X2) -> U22#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U21(X1, X2) -> U21#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U21(tt(), X) -> U22#(tt(), X))
     (active# U12(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U32(X1, X2) -> U32#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U31(X1, X2) -> U31#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U31(tt(), N) -> U32#(tt(), N))
     (active# U12(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U42(X1, X2, X3) -> U42#(active X1, X2, X3))
     (active# U12(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> head# afterNth(N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U42(tt(), N, XS) -> afterNth#(N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U41(X1, X2, X3) -> U41#(active X1, X2, X3))
     (active# U12(X1, X2, X3) -> active# X1, active# U41(tt(), N, XS) -> U42#(tt(), N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# head X -> active# X)
     (active# U12(X1, X2, X3) -> active# X1, active# head X -> head# active X)
     (active# U12(X1, X2, X3) -> active# X1, active# head cons(N, XS) -> U31#(tt(), N))
     (active# U12(X1, X2, X3) -> active# X1, active# afterNth(N, XS) -> U11#(tt(), N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> active# X2)
     (active# U12(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(X1, active X2))
     (active# U12(X1, X2, X3) -> active# X1, active# afterNth(X1, X2) -> afterNth#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U52(X1, X2) -> U52#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U51(X1, X2) -> U51#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U51(tt(), Y) -> U52#(tt(), Y))
     (active# U12(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U62(X1, X2, X3, X4) -> U62#(active X1, X2, X3, X4))
     (active# U12(X1, X2, X3) -> active# X1, active# U62(tt(), N, X, XS) -> U63#(tt(), N, X, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U61(X1, X2, X3, X4) -> U61#(active X1, X2, X3, X4))
     (active# U12(X1, X2, X3) -> active# X1, active# U61(tt(), N, X, XS) -> U62#(tt(), N, X, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U63(X1, X2, X3, X4) -> U63#(active X1, X2, X3, X4))
     (active# U12(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> splitAt#(N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U63(tt(), N, X, XS) -> U64#(splitAt(N, XS), X))
     (active# U12(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U64(X1, X2) -> U64#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> pair#(cons(X, YS), ZS))
     (active# U12(X1, X2, X3) -> active# X1, active# U64(pair(YS, ZS), X) -> cons#(X, YS))
     (active# U12(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> active# X2)
     (active# U12(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(X1, active X2))
     (active# U12(X1, X2, X3) -> active# X1, active# pair(X1, X2) -> pair#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# cons(X1, X2) -> cons#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U72(X1, X2) -> U72#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U71(X1, X2) -> U71#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# U71(tt(), XS) -> U72#(tt(), XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U82(X1, X2, X3) -> U82#(active X1, X2, X3))
     (active# U12(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> splitAt#(N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U82(tt(), N, XS) -> fst# splitAt(N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# U81(X1, X2, X3) -> U81#(active X1, X2, X3))
     (active# U12(X1, X2, X3) -> active# X1, active# U81(tt(), N, XS) -> U82#(tt(), N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# fst X -> active# X)
     (active# U12(X1, X2, X3) -> active# X1, active# fst X -> fst# active X)
     (active# U12(X1, X2, X3) -> active# X1, active# fst pair(X, Y) -> U21#(tt(), X))
     (active# U12(X1, X2, X3) -> active# X1, active# natsFrom N -> cons#(N, natsFrom s N))
     (active# U12(X1, X2, X3) -> active# X1, active# natsFrom N -> natsFrom# s N)
     (active# U12(X1, X2, X3) -> active# X1, active# natsFrom N -> s# N)
     (active# U12(X1, X2, X3) -> active# X1, active# natsFrom X -> active# X)
     (active# U12(X1, X2, X3) -> active# X1, active# natsFrom X -> natsFrom# active X)
     (active# U12(X1, X2, X3) -> active# X1, active# s X -> active# X)
     (active# U12(X1, X2, X3) -> active# X1, active# s X -> s# active X)
     (active# U12(X1, X2, X3) -> active# X1, active# sel(N, XS) -> U41#(tt(), N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> active# X2)
     (active# U12(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(X1, active X2))
     (active# U12(X1, X2, X3) -> active# X1, active# sel(X1, X2) -> sel#(active X1, X2))
     (active# U12(X1, X2, X3) -> active# X1, active# tail X -> active# X)
     (active# U12(X1, X2, X3) -> active# X1, active# tail X -> tail# active X)
     (active# U12(X1, X2, X3) -> active# X1, active# tail cons(N, XS) -> U71#(tt(), XS))
     (active# U12(X1, X2, X3) -> active# X1, active# take(N, XS) -> U81#(tt(), N, XS))
     (active# U12(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X1)
     (active# U12(X1, X2, X3) -> active# X1, active# take(X1, X2) -> active# X2)
     (active# U12(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(X1, active X2))
     (active# U12(X1, X2, X3) -> active# X1, active# take(X1, X2) -> take#(active X1, X2))
     (proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3), U82#(mark X1, X2, X3) -> U82#(X1, X2, X3))
     (proper# U82(X1, X2, X3) -> U82#(proper X1, proper X2, proper X3), U82#(ok X1, ok X2, ok X3) -> U82#(X1, X2, X3))
     (proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3), U42#(mark X1, X2, X3) -> U42#(X1, X2, X3))
     (proper# U42(X1, X2, X3) -> U42#(proper X1, proper X2, proper X3), U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3))
     (proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3), U12#(mark X1, X2, X3) -> U12#(X1, X2, X3))
     (proper# U12(X1, X2, X3) -> U12#(proper X1, proper X2, proper X3), U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3))
    }
    STATUS:
     arrows: 0.852747
     SCCS (33):
      Scc:
       {top# mark X -> top# proper X,
          top# ok X -> top# active X}
      Scc:
       {    proper# U12(X1, X2, X3) -> proper# X1,
            proper# U12(X1, X2, X3) -> proper# X2,
            proper# U12(X1, X2, X3) -> proper# X3,
            proper# U11(X1, X2, X3) -> proper# X1,
            proper# U11(X1, X2, X3) -> proper# X2,
            proper# U11(X1, X2, X3) -> proper# X3,
                      proper# snd X -> proper# X,
            proper# splitAt(X1, X2) -> proper# X1,
            proper# splitAt(X1, X2) -> proper# X2,
                proper# U22(X1, X2) -> proper# X1,
                proper# U22(X1, X2) -> proper# X2,
                proper# U21(X1, X2) -> proper# X1,
                proper# U21(X1, X2) -> proper# X2,
                proper# U32(X1, X2) -> proper# X1,
                proper# U32(X1, X2) -> proper# X2,
                proper# U31(X1, X2) -> proper# X1,
                proper# U31(X1, X2) -> proper# X2,
            proper# U42(X1, X2, X3) -> proper# X1,
            proper# U42(X1, X2, X3) -> proper# X2,
            proper# U42(X1, X2, X3) -> proper# X3,
            proper# U41(X1, X2, X3) -> proper# X1,
            proper# U41(X1, X2, X3) -> proper# X2,
            proper# U41(X1, X2, X3) -> proper# X3,
                     proper# head X -> proper# X,
           proper# afterNth(X1, X2) -> proper# X1,
           proper# afterNth(X1, X2) -> proper# X2,
                proper# U52(X1, X2) -> proper# X1,
                proper# U52(X1, X2) -> proper# X2,
                proper# U51(X1, X2) -> proper# X1,
                proper# U51(X1, X2) -> proper# X2,
        proper# U62(X1, X2, X3, X4) -> proper# X1,
        proper# U62(X1, X2, X3, X4) -> proper# X2,
        proper# U62(X1, X2, X3, X4) -> proper# X3,
        proper# U62(X1, X2, X3, X4) -> proper# X4,
        proper# U61(X1, X2, X3, X4) -> proper# X1,
        proper# U61(X1, X2, X3, X4) -> proper# X2,
        proper# U61(X1, X2, X3, X4) -> proper# X3,
        proper# U61(X1, X2, X3, X4) -> proper# X4,
        proper# U63(X1, X2, X3, X4) -> proper# X1,
        proper# U63(X1, X2, X3, X4) -> proper# X2,
        proper# U63(X1, X2, X3, X4) -> proper# X3,
        proper# U63(X1, X2, X3, X4) -> proper# X4,
                proper# U64(X1, X2) -> proper# X1,
                proper# U64(X1, X2) -> proper# X2,
               proper# pair(X1, X2) -> proper# X1,
               proper# pair(X1, X2) -> proper# X2,
               proper# cons(X1, X2) -> proper# X1,
               proper# cons(X1, X2) -> proper# X2,
                proper# U72(X1, X2) -> proper# X1,
                proper# U72(X1, X2) -> proper# X2,
                proper# U71(X1, X2) -> proper# X1,
                proper# U71(X1, X2) -> proper# X2,
            proper# U82(X1, X2, X3) -> proper# X1,
            proper# U82(X1, X2, X3) -> proper# X2,
            proper# U82(X1, X2, X3) -> proper# X3,
            proper# U81(X1, X2, X3) -> proper# X1,
            proper# U81(X1, X2, X3) -> proper# X2,
            proper# U81(X1, X2, X3) -> proper# X3,
                      proper# fst X -> proper# X,
                 proper# natsFrom X -> proper# X,
                        proper# s X -> proper# X,
                proper# sel(X1, X2) -> proper# X1,
                proper# sel(X1, X2) -> proper# X2,
                     proper# tail X -> proper# X,
               proper# take(X1, X2) -> proper# X1,
               proper# take(X1, X2) -> proper# X2}
      Scc:
       {    active# U12(X1, X2, X3) -> active# X1,
            active# U11(X1, X2, X3) -> active# X1,
                      active# snd X -> active# X,
            active# splitAt(X1, X2) -> active# X1,
            active# splitAt(X1, X2) -> active# X2,
                active# U22(X1, X2) -> active# X1,
                active# U21(X1, X2) -> active# X1,
                active# U32(X1, X2) -> active# X1,
                active# U31(X1, X2) -> active# X1,
            active# U42(X1, X2, X3) -> active# X1,
            active# U41(X1, X2, X3) -> active# X1,
                     active# head X -> active# X,
           active# afterNth(X1, X2) -> active# X1,
           active# afterNth(X1, X2) -> active# X2,
                active# U52(X1, X2) -> active# X1,
                active# U51(X1, X2) -> active# X1,
        active# U62(X1, X2, X3, X4) -> active# X1,
        active# U61(X1, X2, X3, X4) -> active# X1,
        active# U63(X1, X2, X3, X4) -> active# X1,
                active# U64(X1, X2) -> active# X1,
               active# pair(X1, X2) -> active# X1,
               active# pair(X1, X2) -> active# X2,
               active# cons(X1, X2) -> active# X1,
                active# U72(X1, X2) -> active# X1,
                active# U71(X1, X2) -> active# X1,
            active# U82(X1, X2, X3) -> active# X1,
            active# U81(X1, X2, X3) -> active# X1,
                      active# fst X -> active# X,
                 active# natsFrom X -> active# X,
                        active# s X -> active# X,
                active# sel(X1, X2) -> active# X1,
                active# sel(X1, X2) -> active# X2,
                     active# tail X -> active# X,
               active# take(X1, X2) -> active# X1,
               active# take(X1, X2) -> active# X2}
      Scc:
       { take#(X1, mark X2) -> take#(X1, X2),
         take#(mark X1, X2) -> take#(X1, X2),
        take#(ok X1, ok X2) -> take#(X1, X2)}
      Scc:
       {tail# mark X -> tail# X,
          tail# ok X -> tail# X}
      Scc:
       { sel#(X1, mark X2) -> sel#(X1, X2),
         sel#(mark X1, X2) -> sel#(X1, X2),
        sel#(ok X1, ok X2) -> sel#(X1, X2)}
      Scc:
       {s# mark X -> s# X,
          s# ok X -> s# X}
      Scc:
       {natsFrom# mark X -> natsFrom# X,
          natsFrom# ok X -> natsFrom# X}
      Scc:
       {fst# mark X -> fst# X,
          fst# ok X -> fst# X}
      Scc:
       { U71#(mark X1, X2) -> U71#(X1, X2),
        U71#(ok X1, ok X2) -> U71#(X1, X2)}
      Scc:
       { U72#(mark X1, X2) -> U72#(X1, X2),
        U72#(ok X1, ok X2) -> U72#(X1, X2)}
      Scc:
       { cons#(mark X1, X2) -> cons#(X1, X2),
        cons#(ok X1, ok X2) -> cons#(X1, X2)}
      Scc:
       { U64#(mark X1, X2) -> U64#(X1, X2),
        U64#(ok X1, ok X2) -> U64#(X1, X2)}
      Scc:
       {       U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4),
        U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4)}
      Scc:
       {       U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4),
        U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4)}
      Scc:
       { U52#(mark X1, X2) -> U52#(X1, X2),
        U52#(ok X1, ok X2) -> U52#(X1, X2)}
      Scc:
       { afterNth#(X1, mark X2) -> afterNth#(X1, X2),
         afterNth#(mark X1, X2) -> afterNth#(X1, X2),
        afterNth#(ok X1, ok X2) -> afterNth#(X1, X2)}
      Scc:
       {head# mark X -> head# X,
          head# ok X -> head# X}
      Scc:
       { U31#(mark X1, X2) -> U31#(X1, X2),
        U31#(ok X1, ok X2) -> U31#(X1, X2)}
      Scc:
       { U32#(mark X1, X2) -> U32#(X1, X2),
        U32#(ok X1, ok X2) -> U32#(X1, X2)}
      Scc:
       { U21#(mark X1, X2) -> U21#(X1, X2),
        U21#(ok X1, ok X2) -> U21#(X1, X2)}
      Scc:
       { U22#(mark X1, X2) -> U22#(X1, X2),
        U22#(ok X1, ok X2) -> U22#(X1, X2)}
      Scc:
       { pair#(X1, mark X2) -> pair#(X1, X2),
         pair#(mark X1, X2) -> pair#(X1, X2),
        pair#(ok X1, ok X2) -> pair#(X1, X2)}
      Scc:
       {       U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4),
        U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4)}
      Scc:
       { U51#(mark X1, X2) -> U51#(X1, X2),
        U51#(ok X1, ok X2) -> U51#(X1, X2)}
      Scc:
       { splitAt#(X1, mark X2) -> splitAt#(X1, X2),
         splitAt#(mark X1, X2) -> splitAt#(X1, X2),
        splitAt#(ok X1, ok X2) -> splitAt#(X1, X2)}
      Scc:
       {snd# mark X -> snd# X,
          snd# ok X -> snd# X}
      Scc:
       {    U81#(mark X1, X2, X3) -> U81#(X1, X2, X3),
        U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3)}
      Scc:
       {    U82#(mark X1, X2, X3) -> U82#(X1, X2, X3),
        U82#(ok X1, ok X2, ok X3) -> U82#(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:
       {    U42#(mark X1, X2, X3) -> U42#(X1, X2, X3),
        U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3)}
      Scc:
       {    U11#(mark X1, X2, X3) -> U11#(X1, X2, X3),
        U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3)}
      Scc:
       {    U12#(mark X1, X2, X3) -> U12#(X1, X2, X3),
        U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3)}
      
      SCC (2):
       Strict:
        {top# mark X -> top# proper X,
           top# ok X -> top# active X}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      SCC (66):
       Strict:
        {    proper# U12(X1, X2, X3) -> proper# X1,
             proper# U12(X1, X2, X3) -> proper# X2,
             proper# U12(X1, X2, X3) -> proper# X3,
             proper# U11(X1, X2, X3) -> proper# X1,
             proper# U11(X1, X2, X3) -> proper# X2,
             proper# U11(X1, X2, X3) -> proper# X3,
                       proper# snd X -> proper# X,
             proper# splitAt(X1, X2) -> proper# X1,
             proper# splitAt(X1, X2) -> proper# X2,
                 proper# U22(X1, X2) -> proper# X1,
                 proper# U22(X1, X2) -> proper# X2,
                 proper# U21(X1, X2) -> proper# X1,
                 proper# U21(X1, X2) -> proper# X2,
                 proper# U32(X1, X2) -> proper# X1,
                 proper# U32(X1, X2) -> proper# X2,
                 proper# U31(X1, X2) -> proper# X1,
                 proper# U31(X1, X2) -> proper# X2,
             proper# U42(X1, X2, X3) -> proper# X1,
             proper# U42(X1, X2, X3) -> proper# X2,
             proper# U42(X1, X2, X3) -> proper# X3,
             proper# U41(X1, X2, X3) -> proper# X1,
             proper# U41(X1, X2, X3) -> proper# X2,
             proper# U41(X1, X2, X3) -> proper# X3,
                      proper# head X -> proper# X,
            proper# afterNth(X1, X2) -> proper# X1,
            proper# afterNth(X1, X2) -> proper# X2,
                 proper# U52(X1, X2) -> proper# X1,
                 proper# U52(X1, X2) -> proper# X2,
                 proper# U51(X1, X2) -> proper# X1,
                 proper# U51(X1, X2) -> proper# X2,
         proper# U62(X1, X2, X3, X4) -> proper# X1,
         proper# U62(X1, X2, X3, X4) -> proper# X2,
         proper# U62(X1, X2, X3, X4) -> proper# X3,
         proper# U62(X1, X2, X3, X4) -> proper# X4,
         proper# U61(X1, X2, X3, X4) -> proper# X1,
         proper# U61(X1, X2, X3, X4) -> proper# X2,
         proper# U61(X1, X2, X3, X4) -> proper# X3,
         proper# U61(X1, X2, X3, X4) -> proper# X4,
         proper# U63(X1, X2, X3, X4) -> proper# X1,
         proper# U63(X1, X2, X3, X4) -> proper# X2,
         proper# U63(X1, X2, X3, X4) -> proper# X3,
         proper# U63(X1, X2, X3, X4) -> proper# X4,
                 proper# U64(X1, X2) -> proper# X1,
                 proper# U64(X1, X2) -> proper# X2,
                proper# pair(X1, X2) -> proper# X1,
                proper# pair(X1, X2) -> proper# X2,
                proper# cons(X1, X2) -> proper# X1,
                proper# cons(X1, X2) -> proper# X2,
                 proper# U72(X1, X2) -> proper# X1,
                 proper# U72(X1, X2) -> proper# X2,
                 proper# U71(X1, X2) -> proper# X1,
                 proper# U71(X1, X2) -> proper# X2,
             proper# U82(X1, X2, X3) -> proper# X1,
             proper# U82(X1, X2, X3) -> proper# X2,
             proper# U82(X1, X2, X3) -> proper# X3,
             proper# U81(X1, X2, X3) -> proper# X1,
             proper# U81(X1, X2, X3) -> proper# X2,
             proper# U81(X1, X2, X3) -> proper# X3,
                       proper# fst X -> proper# X,
                  proper# natsFrom X -> proper# X,
                         proper# s X -> proper# X,
                 proper# sel(X1, X2) -> proper# X1,
                 proper# sel(X1, X2) -> proper# X2,
                      proper# tail X -> proper# X,
                proper# take(X1, X2) -> proper# X1,
                proper# take(X1, X2) -> proper# X2}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      SCC (35):
       Strict:
        {    active# U12(X1, X2, X3) -> active# X1,
             active# U11(X1, X2, X3) -> active# X1,
                       active# snd X -> active# X,
             active# splitAt(X1, X2) -> active# X1,
             active# splitAt(X1, X2) -> active# X2,
                 active# U22(X1, X2) -> active# X1,
                 active# U21(X1, X2) -> active# X1,
                 active# U32(X1, X2) -> active# X1,
                 active# U31(X1, X2) -> active# X1,
             active# U42(X1, X2, X3) -> active# X1,
             active# U41(X1, X2, X3) -> active# X1,
                      active# head X -> active# X,
            active# afterNth(X1, X2) -> active# X1,
            active# afterNth(X1, X2) -> active# X2,
                 active# U52(X1, X2) -> active# X1,
                 active# U51(X1, X2) -> active# X1,
         active# U62(X1, X2, X3, X4) -> active# X1,
         active# U61(X1, X2, X3, X4) -> active# X1,
         active# U63(X1, X2, X3, X4) -> active# X1,
                 active# U64(X1, X2) -> active# X1,
                active# pair(X1, X2) -> active# X1,
                active# pair(X1, X2) -> active# X2,
                active# cons(X1, X2) -> active# X1,
                 active# U72(X1, X2) -> active# X1,
                 active# U71(X1, X2) -> active# X1,
             active# U82(X1, X2, X3) -> active# X1,
             active# U81(X1, X2, X3) -> active# X1,
                       active# fst X -> active# X,
                  active# natsFrom X -> active# X,
                         active# s X -> active# X,
                 active# sel(X1, X2) -> active# X1,
                 active# sel(X1, X2) -> active# X2,
                      active# tail X -> active# X,
                active# take(X1, X2) -> active# X1,
                active# take(X1, X2) -> active# X2}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              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:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      
      SCC (2):
       Strict:
        {tail# mark X -> tail# X,
           tail# ok X -> tail# X}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      SCC (3):
       Strict:
        { sel#(X1, mark X2) -> sel#(X1, X2),
          sel#(mark X1, X2) -> sel#(X1, X2),
         sel#(ok X1, ok X2) -> sel#(X1, X2)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              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:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        {natsFrom# mark X -> natsFrom# X,
           natsFrom# ok X -> natsFrom# X}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      
      
      
      
      SCC (2):
       Strict:
        {fst# mark X -> fst# X,
           fst# ok X -> fst# X}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              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:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        { U72#(mark X1, X2) -> U72#(X1, X2),
         U72#(ok X1, ok X2) -> U72#(X1, X2)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              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:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      
      SCC (2):
       Strict:
        { U64#(mark X1, X2) -> U64#(X1, X2),
         U64#(ok X1, ok X2) -> U64#(X1, X2)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      
      
      
      SCC (2):
       Strict:
        {       U63#(mark X1, X2, X3, X4) -> U63#(X1, X2, X3, X4),
         U63#(ok X1, ok X2, ok X3, ok X4) -> U63#(X1, X2, X3, X4)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        {       U62#(mark X1, X2, X3, X4) -> U62#(X1, X2, X3, X4),
         U62#(ok X1, ok X2, ok X3, ok X4) -> U62#(X1, X2, X3, X4)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              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:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      
      
      
      
      
      
      SCC (3):
       Strict:
        { afterNth#(X1, mark X2) -> afterNth#(X1, X2),
          afterNth#(mark X1, X2) -> afterNth#(X1, X2),
         afterNth#(ok X1, ok X2) -> afterNth#(X1, X2)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        {head# mark X -> head# X,
           head# ok X -> head# X}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              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:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        { U32#(mark X1, X2) -> U32#(X1, X2),
         U32#(ok X1, ok X2) -> U32#(X1, X2)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              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:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        { U22#(mark X1, X2) -> U22#(X1, X2),
         U22#(ok X1, ok X2) -> U22#(X1, X2)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (3):
       Strict:
        { pair#(X1, mark X2) -> pair#(X1, X2),
          pair#(mark X1, X2) -> pair#(X1, X2),
         pair#(ok X1, ok X2) -> pair#(X1, X2)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        {       U61#(mark X1, X2, X3, X4) -> U61#(X1, X2, X3, X4),
         U61#(ok X1, ok X2, ok X3, ok X4) -> U61#(X1, X2, X3, X4)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      
      SCC (2):
       Strict:
        { U51#(mark X1, X2) -> U51#(X1, X2),
         U51#(ok X1, ok X2) -> U51#(X1, X2)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      
      
      SCC (3):
       Strict:
        { splitAt#(X1, mark X2) -> splitAt#(X1, X2),
          splitAt#(mark X1, X2) -> splitAt#(X1, X2),
         splitAt#(ok X1, ok X2) -> splitAt#(X1, X2)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        {snd# mark X -> snd# X,
           snd# ok X -> snd# X}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      
      SCC (2):
       Strict:
        {    U81#(mark X1, X2, X3) -> U81#(X1, X2, X3),
         U81#(ok X1, ok X2, ok X3) -> U81#(X1, X2, X3)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        {    U82#(mark X1, X2, X3) -> U82#(X1, X2, X3),
         U82#(ok X1, ok X2, ok X3) -> U82#(X1, X2, X3)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              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:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        {    U42#(mark X1, X2, X3) -> U42#(X1, X2, X3),
         U42#(ok X1, ok X2, ok X3) -> U42#(X1, X2, X3)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        {    U11#(mark X1, X2, X3) -> U11#(X1, X2, X3),
         U11#(ok X1, ok X2, ok X3) -> U11#(X1, X2, X3)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open
      
      SCC (2):
       Strict:
        {    U12#(mark X1, X2, X3) -> U12#(X1, X2, X3),
         U12#(ok X1, ok X2, ok X3) -> U12#(X1, X2, X3)}
       Weak:
       {            U12(mark X1, X2, X3) -> mark U12(X1, X2, X3),
                U12(ok X1, ok X2, ok X3) -> ok U12(X1, X2, X3),
                  active U12(X1, X2, X3) -> U12(active X1, X2, X3),
                 active U12(tt(), N, XS) -> mark snd splitAt(N, XS),
                  active U11(X1, X2, X3) -> U11(active X1, X2, X3),
                 active U11(tt(), N, XS) -> mark U12(tt(), N, XS),
                            active snd X -> snd active X,
                   active snd pair(X, Y) -> mark U51(tt(), Y),
                  active splitAt(X1, X2) -> splitAt(X1, active X2),
                  active splitAt(X1, X2) -> splitAt(active X1, X2),
        active splitAt(s N, cons(X, XS)) -> mark U61(tt(), N, X, XS),
                 active splitAt(0(), XS) -> mark pair(nil(), XS),
                      active U22(X1, X2) -> U22(active X1, X2),
                     active U22(tt(), X) -> mark X,
                      active U21(X1, X2) -> U21(active X1, X2),
                     active U21(tt(), X) -> mark U22(tt(), X),
                      active U32(X1, X2) -> U32(active X1, X2),
                     active U32(tt(), N) -> mark N,
                      active U31(X1, X2) -> U31(active X1, X2),
                     active U31(tt(), N) -> mark U32(tt(), N),
                  active U42(X1, X2, X3) -> U42(active X1, X2, X3),
                 active U42(tt(), N, XS) -> mark head afterNth(N, XS),
                  active U41(X1, X2, X3) -> U41(active X1, X2, X3),
                 active U41(tt(), N, XS) -> mark U42(tt(), N, XS),
                           active head X -> head active X,
                 active head cons(N, XS) -> mark U31(tt(), N),
                  active afterNth(N, XS) -> mark U11(tt(), N, XS),
                 active afterNth(X1, X2) -> afterNth(X1, active X2),
                 active afterNth(X1, X2) -> afterNth(active X1, X2),
                      active U52(X1, X2) -> U52(active X1, X2),
                     active U52(tt(), Y) -> mark Y,
                      active U51(X1, X2) -> U51(active X1, X2),
                     active U51(tt(), Y) -> mark U52(tt(), Y),
              active U62(X1, X2, X3, X4) -> U62(active X1, X2, X3, X4),
              active U62(tt(), N, X, XS) -> mark U63(tt(), N, X, XS),
              active U61(X1, X2, X3, X4) -> U61(active X1, X2, X3, X4),
              active U61(tt(), N, X, XS) -> mark U62(tt(), N, X, XS),
              active U63(X1, X2, X3, X4) -> U63(active X1, X2, X3, X4),
              active U63(tt(), N, X, XS) -> mark U64(splitAt(N, XS), X),
                      active U64(X1, X2) -> U64(active X1, X2),
             active U64(pair(YS, ZS), X) -> mark pair(cons(X, YS), ZS),
                     active pair(X1, X2) -> pair(X1, active X2),
                     active pair(X1, X2) -> pair(active X1, X2),
                     active cons(X1, X2) -> cons(active X1, X2),
                      active U72(X1, X2) -> U72(active X1, X2),
                    active U72(tt(), XS) -> mark XS,
                      active U71(X1, X2) -> U71(active X1, X2),
                    active U71(tt(), XS) -> mark U72(tt(), XS),
                  active U82(X1, X2, X3) -> U82(active X1, X2, X3),
                 active U82(tt(), N, XS) -> mark fst splitAt(N, XS),
                  active U81(X1, X2, X3) -> U81(active X1, X2, X3),
                 active U81(tt(), N, XS) -> mark U82(tt(), N, XS),
                            active fst X -> fst active X,
                   active fst pair(X, Y) -> mark U21(tt(), X),
                       active natsFrom N -> mark cons(N, natsFrom s N),
                       active natsFrom X -> natsFrom active X,
                              active s X -> s active X,
                       active sel(N, XS) -> mark U41(tt(), N, XS),
                      active sel(X1, X2) -> sel(X1, active X2),
                      active sel(X1, X2) -> sel(active X1, X2),
                           active tail X -> tail active X,
                 active tail cons(N, XS) -> mark U71(tt(), XS),
                      active take(N, XS) -> mark U81(tt(), N, XS),
                     active take(X1, X2) -> take(X1, active X2),
                     active take(X1, X2) -> take(active X1, X2),
                    U11(mark X1, X2, X3) -> mark U11(X1, X2, X3),
                U11(ok X1, ok X2, ok X3) -> ok U11(X1, X2, X3),
                              snd mark X -> mark snd X,
                                snd ok X -> ok snd X,
                    splitAt(X1, mark X2) -> mark splitAt(X1, X2),
                    splitAt(mark X1, X2) -> mark splitAt(X1, X2),
                   splitAt(ok X1, ok X2) -> ok splitAt(X1, X2),
                        U22(mark X1, X2) -> mark U22(X1, X2),
                       U22(ok X1, ok X2) -> ok U22(X1, X2),
                        U21(mark X1, X2) -> mark U21(X1, X2),
                       U21(ok X1, ok X2) -> ok U21(X1, X2),
                        U32(mark X1, X2) -> mark U32(X1, X2),
                       U32(ok X1, ok X2) -> ok U32(X1, X2),
                        U31(mark X1, X2) -> mark U31(X1, X2),
                       U31(ok X1, ok X2) -> ok U31(X1, X2),
                    U42(mark X1, X2, X3) -> mark U42(X1, X2, X3),
                U42(ok X1, ok X2, ok X3) -> ok U42(X1, X2, X3),
                    U41(mark X1, X2, X3) -> mark U41(X1, X2, X3),
                U41(ok X1, ok X2, ok X3) -> ok U41(X1, X2, X3),
                             head mark X -> mark head X,
                               head ok X -> ok head X,
                   afterNth(X1, mark X2) -> mark afterNth(X1, X2),
                   afterNth(mark X1, X2) -> mark afterNth(X1, X2),
                  afterNth(ok X1, ok X2) -> ok afterNth(X1, X2),
                        U52(mark X1, X2) -> mark U52(X1, X2),
                       U52(ok X1, ok X2) -> ok U52(X1, X2),
                        U51(mark X1, X2) -> mark U51(X1, X2),
                       U51(ok X1, ok X2) -> ok U51(X1, X2),
                U62(mark X1, X2, X3, X4) -> mark U62(X1, X2, X3, X4),
         U62(ok X1, ok X2, ok X3, ok X4) -> ok U62(X1, X2, X3, X4),
                U61(mark X1, X2, X3, X4) -> mark U61(X1, X2, X3, X4),
         U61(ok X1, ok X2, ok X3, ok X4) -> ok U61(X1, X2, X3, X4),
                U63(mark X1, X2, X3, X4) -> mark U63(X1, X2, X3, X4),
         U63(ok X1, ok X2, ok X3, ok X4) -> ok U63(X1, X2, X3, X4),
                        U64(mark X1, X2) -> mark U64(X1, X2),
                       U64(ok X1, ok X2) -> ok U64(X1, X2),
                       pair(X1, mark X2) -> mark pair(X1, X2),
                       pair(mark X1, X2) -> mark pair(X1, X2),
                      pair(ok X1, ok X2) -> ok pair(X1, X2),
                       cons(mark X1, X2) -> mark cons(X1, X2),
                      cons(ok X1, ok X2) -> ok cons(X1, X2),
                        U72(mark X1, X2) -> mark U72(X1, X2),
                       U72(ok X1, ok X2) -> ok U72(X1, X2),
                        U71(mark X1, X2) -> mark U71(X1, X2),
                       U71(ok X1, ok X2) -> ok U71(X1, X2),
                    U82(mark X1, X2, X3) -> mark U82(X1, X2, X3),
                U82(ok X1, ok X2, ok X3) -> ok U82(X1, X2, X3),
                    U81(mark X1, X2, X3) -> mark U81(X1, X2, X3),
                U81(ok X1, ok X2, ok X3) -> ok U81(X1, X2, X3),
                              fst mark X -> mark fst X,
                                fst ok X -> ok fst X,
                         natsFrom mark X -> mark natsFrom X,
                           natsFrom ok X -> ok natsFrom X,
                                s mark X -> mark s X,
                                  s ok X -> ok s X,
                        sel(X1, mark X2) -> mark sel(X1, X2),
                        sel(mark X1, X2) -> mark sel(X1, X2),
                       sel(ok X1, ok X2) -> ok sel(X1, X2),
                             tail mark X -> mark tail X,
                               tail ok X -> ok tail 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),
                  proper U12(X1, X2, X3) -> U12(proper X1, proper X2, proper X3),
                             proper tt() -> ok tt(),
                  proper U11(X1, X2, X3) -> U11(proper X1, proper X2, proper X3),
                            proper snd X -> snd proper X,
                  proper splitAt(X1, X2) -> splitAt(proper X1, proper X2),
                      proper U22(X1, X2) -> U22(proper X1, proper X2),
                      proper U21(X1, X2) -> U21(proper X1, proper X2),
                      proper U32(X1, X2) -> U32(proper X1, proper X2),
                      proper U31(X1, X2) -> U31(proper X1, proper X2),
                  proper U42(X1, X2, X3) -> U42(proper X1, proper X2, proper X3),
                  proper U41(X1, X2, X3) -> U41(proper X1, proper X2, proper X3),
                           proper head X -> head proper X,
                 proper afterNth(X1, X2) -> afterNth(proper X1, proper X2),
                      proper U52(X1, X2) -> U52(proper X1, proper X2),
                      proper U51(X1, X2) -> U51(proper X1, proper X2),
              proper U62(X1, X2, X3, X4) -> U62(proper X1, proper X2, proper X3, proper X4),
              proper U61(X1, X2, X3, X4) -> U61(proper X1, proper X2, proper X3, proper X4),
              proper U63(X1, X2, X3, X4) -> U63(proper X1, proper X2, proper X3, proper X4),
                      proper U64(X1, X2) -> U64(proper X1, proper X2),
                     proper pair(X1, X2) -> pair(proper X1, proper X2),
                     proper cons(X1, X2) -> cons(proper X1, proper X2),
                      proper U72(X1, X2) -> U72(proper X1, proper X2),
                      proper U71(X1, X2) -> U71(proper X1, proper X2),
                  proper U82(X1, X2, X3) -> U82(proper X1, proper X2, proper X3),
                  proper U81(X1, X2, X3) -> U81(proper X1, proper X2, proper X3),
                            proper fst X -> fst proper X,
                       proper natsFrom X -> natsFrom proper X,
                              proper s X -> s proper X,
                      proper sel(X1, X2) -> sel(proper X1, proper X2),
                            proper nil() -> ok nil(),
                              proper 0() -> ok 0(),
                           proper tail X -> tail proper X,
                     proper take(X1, X2) -> take(proper X1, proper X2),
                              top mark X -> top proper X,
                                top ok X -> top active X}
       Open