(VAR N XS X Y YS ZS) (RULES U11(tt) -> U12(tt) U12(tt) -> snd(splitAt(N,XS)) U21(tt) -> U22(tt) U22(tt) -> X U31(tt) -> U32(tt) U32(tt) -> N U41(tt) -> U42(tt) U42(tt) -> head(afterNth(N,XS)) U51(tt) -> U52(tt) U52(tt) -> Y U61(tt) -> U62(tt) U62(tt) -> U63(tt) U63(tt) -> U64(splitAt(N,XS)) U64(pair(YS,ZS)) -> pair(cons(X),ZS) U71(tt) -> U72(tt) U72(tt) -> XS U81(tt) -> U82(tt) U82(tt) -> fst(splitAt(N,XS)) afterNth(N,XS) -> U11(tt) fst(pair(X,Y)) -> U21(tt) head(cons(N)) -> U31(tt) natsFrom(N) -> cons(N) sel(N,XS) -> U41(tt) snd(pair(X,Y)) -> U51(tt) splitAt(0,XS) -> pair(nil,XS) splitAt(s(N),cons(X)) -> U61(tt) tail(cons(N)) -> U71(tt) take(N,XS) -> U81(tt) )