Alphabet
cons
:
[c × d] ⟶ d
fcons
:
[b → c × a] ⟶ a
fmap
:
[a × b] ⟶ d
fnil
:
a
nil
:
d
Variables
X
:
b
Z
:
b → c
U
:
a
V
:
b
Rules
fmap
(
fnil
,
X
)
⇒
nil
fmap
(
fcons
(
Z
,
U
),
V
)
⇒
cons
(
Z
·
V
,
fmap
(
U
,
V
))