Alphabet

bind:Ta → (a → Ta) → Ta
return:a → Ta

Variables

X:a
Z:a → Ta
U:Ta
V:Ta
I:a → Ta
J:a → Ta

Rules

bind · (return · X) · (λ%X:a.Z · %X)Z · X
bind · U · (λ%Y:a.return · %Y)U
bind · (bind · V · (λ%U:a.I · %U)) · (λ%Z:a.J · %Z)bind · V · (λ%W:a.bind · (I · %W) · (λ%V:a.J · %V))