Alphabet

inl:[a] ⟶ u
inr:[b] ⟶ u
casea:[u × a → a × b → a] ⟶ a
caseb:[u × a → b × b → b] ⟶ b
caseu:[u × a → u × b → u] ⟶ u

Variables

X:a
Y:b
Z:u
Fa:a → a
Ga:b → a
Ha:u → a
Fb:a → b
Gb:b → b
Hb:u → b
Fu:a → u
Gu:b → u
Hu:u → u

Rules

casea(inl(X), Fa, Ga)Fa · X
casea(inr(Y), Fa, Ga)Ga · Y
casea(Z, λx:a.Ha · inl(x), λy:b.Ha · inr(y))Ha · Z
caseb(inl(X), Fb, Gb)Fb · X
caseb(inr(Y), Fb, Gb)Gb · Y
caseb(Z, λx:a.Hb · inl(x), λy:b.Hb · inr(y))Hb · Z
caseu(inl(X), Fu, Gu)Fu · X
caseu(inr(Y), Fu, Gu)Gu · Y
caseu(Z, λx:a.Hu · inl(x), λy:b.Hu · inr(y))Hu · Z