equal
deleted
inserted
replaced
600 lemma less_infinityE: |
600 lemma less_infinityE: |
601 "[| n < \<infinity>; !!k. n = enat k ==> P |] ==> P" |
601 "[| n < \<infinity>; !!k. n = enat k ==> P |] ==> P" |
602 by (induct n) auto |
602 by (induct n) auto |
603 |
603 |
604 lemma enat_less_induct: |
604 lemma enat_less_induct: |
605 assumes prem: "!!n. \<forall>m::enat. m < n --> P m ==> P n" shows "P n" |
605 assumes prem: "\<And>n. \<forall>m::enat. m < n \<longrightarrow> P m \<Longrightarrow> P n" shows "P n" |
606 proof - |
606 proof - |
607 have P_enat: "!!k. P (enat k)" |
607 have P_enat: "\<And>k. P (enat k)" |
608 apply (rule nat_less_induct) |
608 apply (rule nat_less_induct) |
609 apply (rule prem, clarify) |
609 apply (rule prem, clarify) |
610 apply (erule less_enatE, simp) |
610 apply (erule less_enatE, simp) |
611 done |
611 done |
612 show ?thesis |
612 show ?thesis |