(******** Isabelle/HoTT: Dependent sum (dependent pair) Feb 2019 ********) theory Sum imports HoTT_Base begin axiomatization Sum :: "[t, t \ t] \ t" and pair :: "[t, t] \ t" ("(2<_,/ _>)") and indSum :: "[t \ t, [t, t] \ t, t] \ t" syntax "_Sum" :: "[idt, t, t] \ t" ("(2\'(_: _')./ _)" 20) "_Sum'" :: "[idt, t, t] \ t" ("(2\_: _./ _)" 20) translations "\(x: A). B" \ "(CONST Sum) A (\x. B)" "\x: A. B" \ "(CONST Sum) A (\x. B)" abbreviation Pair :: "[t, t] \ t" (infixr "\" 50) where "A \ B \ \_: A. B" axiomatization where \ \Type rules\ Sum_form: "\A: U i; \x. x: A \ B x: U i\ \ \x: A. B x: U i" and Sum_intro: "\\x. x: A \ B x: U i; a: A; b: B a\ \ : \x: A. B x" and Sum_elim: "\ p: \x: A. B x; C: \x: A. B x \ U i; \x y. \x: A; y: B x\ \ f x y: C \ \ indSum C f p: C p" and Sum_cmp: "\ a: A; b: B a; B: A \ U i; C: \x: A. B x \ U i; \x y. \x: A; y: B x\ \ f x y: C \ \ indSum C f \ f a b" and \ \Congruence rules\ Sum_form_eq: "\A: U i; B: A \ U i; C: A \ U i; \x. x: A \ B x \ C x\ \ \x: A. B x \ \x: A. C x" lemmas Sum_form [form] lemmas Sum_routine [intro] = Sum_form Sum_intro Sum_elim lemmas Sum_comp [comp] = Sum_cmp lemmas Sum_cong [cong] = Sum_form_eq end