Alphabet

0:A
afterNth:[A × A] ⟶ A
and:[A × A] ⟶ A
axxafterNth:[A × A] ⟶ A
axxand:[A × A] ⟶ A
axxfst:[A] ⟶ A
axxhead:[A] ⟶ A
axxnatsFrom:[A] ⟶ A
axxsel:[A × A] ⟶ A
axxsnd:[A] ⟶ A
axxsplitAt:[A × A] ⟶ A
axxtail:[A] ⟶ A
axxtake:[A × A] ⟶ A
axxu11:[A × A × A × A] ⟶ A
axxu12:[A × A] ⟶ A
cons:[A × A] ⟶ A
fst:[A] ⟶ A
head:[A] ⟶ A
mark:[A] ⟶ A
natsFrom:[A] ⟶ A
nil:A
pair:[A × A] ⟶ A
s:[A] ⟶ A
sel:[A × A] ⟶ A
snd:[A] ⟶ A
splitAt:[A × A] ⟶ A
tail:[A] ⟶ A
take:[A × A] ⟶ A
tt:A
u11:[A × A × A × A] ⟶ A
u12:[A × A] ⟶ A

Variables

X:A
Y:A
U:A
V:A
W:A
P:A
X1:A
Y1:A
U1:A
V1:A
W1:A
P1:A
X2:A
Y2:A
U2:A
V2:A
W2:A
P2:A
X3:A
Y3:A
U3:A
V3:A
W3:A
P3:A
X4:A
Y4:A
U4:A
V4:A
W4:A
P4:A
X5:A
Y5:A
U5:A
V5:A
W5:A
P5:A
X6:A
Y6:A
U6:A
V6:A
W6:A
P6:A
X7:A
Y7:A
U7:A
V7:A
W7:A
P7:A
X8:A
Y8:A
U8:A
V8:A
W8:A
P8:A
X9:A
Y9:A
U9:A
V9:A
W9:A
P9:A
X10:A
Y10:A
U10:A
V10:A
W10:A
P10:A
X11:A
Y11:A
U11:A
V11:A
W11:A
P11:A
X12:A

Rules

axxu11(tt, X, Y, U)axxu12(axxsplitAt(mark(X), mark(U)), Y)
axxu12(pair(V, W), P)pair(cons(mark(P), V), mark(W))
axxafterNth(X1, Y1)axxsnd(axxsplitAt(mark(X1), mark(Y1)))
axxand(tt, U1)mark(U1)
axxfst(pair(V1, W1))mark(V1)
axxhead(cons(P1, X2))mark(P1)
axxnatsFrom(Y2)cons(mark(Y2), natsFrom(s(Y2)))
axxsel(U2, V2)axxhead(axxafterNth(mark(U2), mark(V2)))
axxsnd(pair(W2, P2))mark(P2)
axxsplitAt(0, X3)pair(nil, mark(X3))
axxsplitAt(s(Y3), cons(U3, V3))axxu11(tt, Y3, U3, V3)
axxtail(cons(W3, P3))mark(P3)
axxtake(X4, Y4)axxfst(axxsplitAt(mark(X4), mark(Y4)))
mark(u11(U4, V4, W4, P4))axxu11(mark(U4), V4, W4, P4)
mark(u12(X5, Y5))axxu12(mark(X5), Y5)
mark(splitAt(U5, V5))axxsplitAt(mark(U5), mark(V5))
mark(afterNth(W5, P5))axxafterNth(mark(W5), mark(P5))
mark(snd(X6))axxsnd(mark(X6))
mark(and(Y6, U6))axxand(mark(Y6), U6)
mark(fst(V6))axxfst(mark(V6))
mark(head(W6))axxhead(mark(W6))
mark(natsFrom(P6))axxnatsFrom(mark(P6))
mark(sel(X7, Y7))axxsel(mark(X7), mark(Y7))
mark(tail(U7))axxtail(mark(U7))
mark(take(V7, W7))axxtake(mark(V7), mark(W7))
mark(tt)tt
mark(pair(P7, X8))pair(mark(P7), mark(X8))
mark(cons(Y8, U8))cons(mark(Y8), U8)
mark(s(V8))s(mark(V8))
mark(0)0
mark(nil)nil
axxu11(W8, P8, X9, Y9)u11(W8, P8, X9, Y9)
axxu12(U9, V9)u12(U9, V9)
axxsplitAt(W9, P9)splitAt(W9, P9)
axxafterNth(X10, Y10)afterNth(X10, Y10)
axxsnd(U10)snd(U10)
axxand(V10, W10)and(V10, W10)
axxfst(P10)fst(P10)
axxhead(X11)head(X11)
axxnatsFrom(Y11)natsFrom(Y11)
axxsel(U11, V11)sel(U11, V11)
axxtail(W11)tail(W11)
axxtake(P11, X12)take(P11, X12)