Alphabet

!minus:[a × a] ⟶ a
!plus:[a × a] ⟶ a
!times:[a × a] ⟶ a
0:a
1:a
2:a
D:[a] ⟶ a
cons:[c × d] ⟶ d
constant:a
div:[a × a] ⟶ a
false:b
filter:[c → b × d] ⟶ d
filter2:[b × c → b × c × d] ⟶ d
ln:[a] ⟶ a
map:[c → c × d] ⟶ d
minus:[a] ⟶ a
nil:d
pow:[a × a] ⟶ a
t:a
true:b

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
F2:c → c
Z2:c → c
U2:c
V2:d
I2:c → b
J2:c → b
X3:c
Y3:d
G3:c → b
V3:c
W3:d
J3:c → b
X4:c
Y4:d

Rules

D(t)1
D(constant)0
D(!plus(X, Y))!plus(D(X), D(Y))
D(!times(U, V))!plus(!times(V, D(U)), !times(U, D(V)))
D(!minus(W, P))!minus(D(W), D(P))
D(minus(X1))minus(D(X1))
D(div(Y1, U1))!minus(div(D(Y1), U1), div(!times(Y1, D(U1)), pow(U1, 2)))
D(ln(V1))div(D(V1), V1)
D(pow(W1, P1))!plus(!times(!times(P1, pow(W1, !minus(P1, 1))), D(W1)), !times(!times(pow(W1, P1), ln(W1)), D(P1)))
map(F2, nil)nil
map(Z2, cons(U2, V2))cons(Z2 · U2, map(Z2, V2))
filter(I2, nil)nil
filter(J2, cons(X3, Y3))filter2(J2 · X3, J2, X3, Y3)
filter2(true, G3, V3, W3)cons(V3, filter(G3, W3))
filter2(false, J3, X4, Y4)filter(J3, Y4)