theory Nat imports Base begin axiomatization Nat :: \o\ and zero :: \o\ ("0") and suc :: \o \ o\ and NatInd :: \(o \ o) \ o \ (o \ o \ o) \ o \ o\ where NatF: "Nat: U i" and Nat_zero: "0: Nat" and Nat_suc: "n: Nat \ suc n: Nat" and NatE: "\ n: Nat; n\<^sub>0: C 0; \n. n: Nat \ C n: U i; \n c. \n: Nat; c: C n\ \ f n c: C (suc n) \ \ NatInd (\n. C n) n\<^sub>0 (\n c. f n c) n: C n" and Nat_comp_zero: "\ n\<^sub>0: C 0; \n c. \n: Nat; c: C n\ \ f n c: C (suc n); \n. n: Nat \ C n: U i \ \ NatInd (\n. C n) n\<^sub>0 (\n c. f n c) 0 \ n\<^sub>0" and Nat_comp_suc: "\ n: Nat; n\<^sub>0: C 0; \n c. \n: Nat; c: C n\ \ f n c: C (suc n); \n. n: Nat \ C n: U i \ \ NatInd (\n. C n) n\<^sub>0 (\n c. f n c) (suc n) \ f n (NatInd (\n. C n) n\<^sub>0 (\n c. f n c) n)" lemmas [intros] = NatF Nat_zero Nat_suc and [elims] = NatE and [comps] = Nat_comp_zero Nat_comp_suc section \Basic arithmetic\ definition add (infixl "+" 50) where [comps]: "m + n \ NatInd (K Nat) n (K $ \n. suc n) m" end