src/HOL/Library/Nat_Infinity.thy
changeset 41855 c3b6e69da386
parent 41853 258a489c24b2
child 42993 da014b00d7a4
equal deleted inserted replaced
41854:b2b5b965b59c 41855:c3b6e69da386
    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