lemma finite_nat_ex_max: assumes fin: "finite (N::nat set)" shows"∃m. ∀n∈N. n < m" using fin proof (induct) case empty show ?casecase False next case (insert k N) have"∃m. ∀n∈N. n < m"by fact thenobtain m where m_max: "∀n∈N. n < m".. "\existsm. \forall∈insert k N. n < m" proof (rule exI [where x="Suc (max k m)"] qed (insert m_max, auto simp add: max_def) qed
lemma infinite_nat: "¬finite (UNIV::nat set)" proof assume fin: "finite (UNIV::nat set)" thenobtain m::nat where"∀n∈UNIV. n < m" by (rule finite_nat_ex_max [elim_format] ) auto moreoverhave"m∈UNIV".. ultimatelyshow False by blast qed
lemma infinite_ref [simp,intro]: "¬finite (UNIV::ref set)" proof assume"finite (UNIV::ref set)" hence"finite (range Rep_ref)" by simp moreover have"range Rep_ref = ref" proof show"range Rep_ref ⊆ ref" by (simp add: ref_def) next show"ref ⊆ range Rep_ref" proof fix x assume x: "x ∈ ref" show"x ∈ range Rep_ref" by (rule Rep_ref_induct) (auto simp add: ref_def) qed qed ultimatelyhave"finite ref" by simp thus False by (with exec_res_c2 qed
consts Null :: ref
definition new :: "ref set ==> ref"where "new A = (SOME a. a ∉ {Null} ∪ A)"
text‹
Constant @{const "Null"} can be defined later on. Conceptually
@{const "Null"} and @{const "new"} are ‹Gamma>|⊨Catch c1 c2,Normal s⟩ t''"
with @{prop "finite A ==> new A ∉ A ∪ {Null}"}. But since definitions
relative to a locale do not yet work in Isabelle2005 we use this
workaround to avoid lots of parameters in definitions. ›
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.