(* Title: HoTT/Nat.thy Author: Josh Chen Date: Aug 2018 Natural numbers. *) theory Nat imports HoTT_Base begin section \Constants and type rules\ axiomatization Nat :: Term ("\") and zero :: Term ("0") and succ :: "Term \ Term" and indNat :: "[[Term, Term] \ Term, Term, Term] \ Term" ("(1ind\<^sub>\)") where Nat_form: "\: U(O)" and Nat_intro1: "0: \" and Nat_intro2: "\n. n: \ \ succ(n): \" and Nat_elim: "\i C f a n. \ C: \ \ U(i); \n c. \n: \; c: C(n)\ \ f(n)(c): C(succ n); a: C(0); n: \ \ \ ind\<^sub>\(f)(a)(n): C(n)" and Nat_comp1: "\i C f a. \ C: \ \ U(i); \n c. \n: \; c: C(n)\ \ f(n)(c): C(succ n); a: C(0) \ \ ind\<^sub>\(f)(a)(0) \ a" and Nat_comp2: "\ i C f a n. \ C: \ \ U(i); \n c. \n: \; c: C(n)\ \ f(n)(c): C(succ n); a: C(0); n: \ \ \ ind\<^sub>\(f)(a)(succ n) \ f(n)(ind\<^sub>\ f a n)" text "Rule declarations:" lemmas Nat_intro = Nat_intro1 Nat_intro2 lemmas Nat_rules [intro] = Nat_form Nat_intro Nat_elim Nat_comp1 Nat_comp2 lemmas Nat_comps [comp] = Nat_comp1 Nat_comp2 end