Structure numTheory
signature numTheory =
sig
type thm = Thm.thm
(* Definitions *)
val IS_NUM_REP : thm
val SUC_DEF : thm
val SUC_REP_DEF : thm
val ZERO_DEF : thm
val ZERO_REP_DEF : thm
val num_ISO_DEF : thm
val num_TY_DEF : thm
(* Theorems *)
val INDUCTION : thm
val INV_SUC : thm
val NOT_SUC : thm
val num_grammars : type_grammar.grammar * term_grammar.grammar
(*
[marker] Parent theory of "num"
[IS_NUM_REP] Definition
|- ∀m.
IS_NUM_REP m ⇔ ∀P. P ZERO_REP ∧ (∀n. P n ⇒ P (SUC_REP n)) ⇒ P m
[SUC_DEF] Definition
|- ∀m. SUC m = ABS_num (SUC_REP (REP_num m))
[SUC_REP_DEF] Definition
|- ONE_ONE SUC_REP ∧ ¬ONTO SUC_REP
[ZERO_DEF] Definition
|- 0 = ABS_num ZERO_REP
[ZERO_REP_DEF] Definition
|- ∀y. ZERO_REP ≠ SUC_REP y
[num_ISO_DEF] Definition
|- (∀a. ABS_num (REP_num a) = a) ∧
∀r. IS_NUM_REP r ⇔ (REP_num (ABS_num r) = r)
[num_TY_DEF] Definition
|- ∃rep. TYPE_DEFINITION IS_NUM_REP rep
[INDUCTION] Theorem
|- ∀P. P 0 ∧ (∀n. P n ⇒ P (SUC n)) ⇒ ∀n. P n
[INV_SUC] Theorem
|- ∀m n. (SUC m = SUC n) ⇒ (m = n)
[NOT_SUC] Theorem
|- ∀n. SUC n ≠ 0
*)
end
HOL 4, Kananaskis-10