(* Title: HoTT/Sum.thy Author: Josh Chen Dependent sum type *) theory Sum imports HoTT_Base begin section \Constants and syntax\ axiomatization Sum :: "[t, Typefam] \ t" and pair :: "[t, t] \ t" ("(1<_,/ _>)") and indSum :: "[[t, t] \ t, t] \ t" ("(1ind\<^sub>\)") syntax "_SUM" :: "[idt, t, t] \ t" ("(3\_:_./ _)" 20) "_SUM_ASCII" :: "[idt, t, t] \ t" ("(3SUM _:_./ _)" 20) translations "\x:A. B" \ "CONST Sum A (\x. B)" "SUM x:A. B" \ "CONST Sum A (\x. B)" text "Nondependent pair." abbreviation Pair :: "[t, t] \ t" (infixr "\" 50) where "A \ B \ \_:A. B" section \Type rules\ axiomatization where Sum_form: "\A: U i; B: A \ U i\ \ \x:A. B x: U i" and Sum_intro: "\B: A \ U i; a: A; b: B a\ \ : \x:A. B x" and Sum_elim: "\ p: \x:A. B x; \x y. \x: A; y: B x\ \ f x y: C ; C: \x:A. B x \ U i \ \ ind\<^sub>\ f p: C p" (* What does writing \x y. f(x, y) change? *) and Sum_comp: "\ a: A; b: B a; \x y. \x: A; y: B(x)\ \ f x y: C ; B: A \ U i; C: \x:A. B x \ U i \ \ ind\<^sub>\ f \ f a b" text "Admissible inference rules for sum formation:" axiomatization where Sum_wellform1: "(\x:A. B x: U i) \ A: U i" and Sum_wellform2: "(\x:A. B x: U i) \ B: A \ U i" text "Rule attribute declarations:" lemmas Sum_comp [comp] lemmas Sum_wellform [wellform] = Sum_wellform1 Sum_wellform2 lemmas Sum_routine [intro] = Sum_form Sum_intro Sum_elim end