(* Title: Coprod.thy Author: Joshua Chen Date: 2018 Coproduct type *) theory Coprod imports HoTT_Base begin axiomatization Coprod :: "[t, t] \ t" (infixr "+" 50) and inl :: "t \ t" and inr :: "t \ t" and indCoprod :: "[t \ t, t \ t, t] \ t" ("(1ind\<^sub>+)") where Coprod_form: "\A: U i; B: U i\ \ A + B: U i" and Coprod_intro_inl: "\a: A; B: U i\ \ inl a: A + B" and Coprod_intro_inr: "\b: B; A: U i\ \ inr b: A + B" and Coprod_elim: "\ u: A + B; C: A + B \ U i; \x. x: A \ c x: C (inl x); \y. y: B \ d y: C (inr y) \ \ ind\<^sub>+ c d u: C u" and Coprod_comp_inl: "\ a: A; C: A + B \ U i; \x. x: A \ c x: C (inl x); \y. y: B \ d y: C (inr y) \ \ ind\<^sub>+ c d (inl a) \ c a" and Coprod_comp_inr: "\ b: B; C: A + B \ U i; \x. x: A \ c x: C (inl x); \y. y: B \ d y: C (inr y) \ \ ind\<^sub>+ c d (inr b) \ d b" lemmas Coprod_form [form] lemmas Coprod_routine [intro] = Coprod_form Coprod_intro_inl Coprod_intro_inr Coprod_elim lemmas Coprod_comp [comp] = Coprod_comp_inl Coprod_comp_inr end