equal
deleted
inserted
replaced
28 lemma not_Infty_eq[iff]: "(x ~= Infty) = (EX i. x = Fin i)" |
28 lemma not_Infty_eq[iff]: "(x ~= Infty) = (EX i. x = Fin i)" |
29 by (cases x) auto |
29 by (cases x) auto |
30 |
30 |
31 lemma not_Fin_eq [iff]: "(ALL y. x ~= Fin y) = (x = Infty)" |
31 lemma not_Fin_eq [iff]: "(ALL y. x ~= Fin y) = (x = Infty)" |
32 by (cases x) auto |
32 by (cases x) auto |
|
33 |
|
34 |
|
35 primrec the_Fin :: "inat \<Rightarrow> nat" |
|
36 where "the_Fin (Fin n) = n" |
33 |
37 |
34 |
38 |
35 subsection {* Constructors and numbers *} |
39 subsection {* Constructors and numbers *} |
36 |
40 |
37 instantiation inat :: "{zero, one, number}" |
41 instantiation inat :: "{zero, one, number}" |
281 lemmas idiff_Fin_0_right[simp] = idiff_0_right[unfolded zero_inat_def] |
285 lemmas idiff_Fin_0_right[simp] = idiff_0_right[unfolded zero_inat_def] |
282 |
286 |
283 lemma idiff_self[simp]: "n \<noteq> \<infinity> \<Longrightarrow> (n::inat) - n = 0" |
287 lemma idiff_self[simp]: "n \<noteq> \<infinity> \<Longrightarrow> (n::inat) - n = 0" |
284 by(auto simp: zero_inat_def) |
288 by(auto simp: zero_inat_def) |
285 |
289 |
|
290 lemma iSuc_minus_iSuc [simp]: "iSuc n - iSuc m = n - m" |
|
291 by(simp add: iSuc_def split: inat.split) |
|
292 |
|
293 lemma iSuc_minus_1 [simp]: "iSuc n - 1 = n" |
|
294 by(simp add: one_inat_def iSuc_Fin[symmetric] zero_inat_def[symmetric]) |
|
295 |
286 (*lemmas idiff_self_eq_0_Fin = idiff_self_eq_0[unfolded zero_inat_def]*) |
296 (*lemmas idiff_self_eq_0_Fin = idiff_self_eq_0[unfolded zero_inat_def]*) |
287 |
297 |
288 |
298 |
289 subsection {* Ordering *} |
299 subsection {* Ordering *} |
290 |
300 |
486 subsection {* Traditional theorem names *} |
496 subsection {* Traditional theorem names *} |
487 |
497 |
488 lemmas inat_defs = zero_inat_def one_inat_def number_of_inat_def iSuc_def |
498 lemmas inat_defs = zero_inat_def one_inat_def number_of_inat_def iSuc_def |
489 plus_inat_def less_eq_inat_def less_inat_def |
499 plus_inat_def less_eq_inat_def less_inat_def |
490 |
500 |
491 lemmas inat_splits = inat.splits |
501 end |
492 |
|
493 end |
|