# HG changeset patch # User huffman # Date 1199939763 -3600 # Node ID 2c6cabe7a47c2def2a61b1597443e2f94807a2d7 # Parent 98b93782c3b130bcdaee286c0aa8369ab43bdabf Compactness subsection with some new lemmas diff -r 98b93782c3b1 -r 2c6cabe7a47c src/HOLCF/Adm.thy --- a/src/HOLCF/Adm.thy Thu Jan 10 05:15:43 2008 +0100 +++ b/src/HOLCF/Adm.thy Thu Jan 10 05:36:03 2008 +0100 @@ -17,10 +17,6 @@ adm :: "('a::cpo \ bool) \ bool" where "adm P = (\Y. chain Y \ (\i. P (Y i)) \ P (\i. Y i))" -definition - compact :: "'a::cpo \ bool" where - "compact k = adm (\x. \ k \ x)" - lemma admI: "(\Y. \chain Y; \i. P (Y i)\ \ P (\i. Y i)) \ adm P" by (unfold adm_def, fast) @@ -31,12 +27,6 @@ lemma admD: "\adm P; chain Y; \i. P (Y i)\ \ P (\i. Y i)" by (unfold adm_def, fast) -lemma compactI: "adm (\x. \ k \ x) \ compact k" -by (unfold compact_def) - -lemma compactD: "compact k \ adm (\x. \ k \ x)" -by (unfold compact_def) - text {* improved admissibility introduction *} lemma admI2: @@ -58,9 +48,6 @@ lemmas adm_chfin = chfin [THEN adm_max_in_chain, standard] -lemma compact_chfin: "compact (x::'a::chfin)" -by (rule compactI, rule adm_chfin) - subsection {* Admissibility of special formulae and propagation *} lemma adm_not_free: "adm (\x. t)" @@ -171,10 +158,43 @@ apply (erule is_ub_thelub) done +subsection {* Compactness *} + +definition + compact :: "'a::cpo \ bool" where + "compact k = adm (\x. \ k \ x)" + +lemma compactI: "adm (\x. \ k \ x) \ compact k" +unfolding compact_def . + +lemma compactD: "compact k \ adm (\x. \ k \ x)" +unfolding compact_def . + +lemma compactI2: + "(\Y. \chain Y; x \ lub (range Y)\ \ \i. x \ Y i) \ compact x" +unfolding compact_def adm_def by fast + +lemma compactD2: + "\compact x; chain Y; x \ lub (range Y)\ \ \i. x \ Y i" +unfolding compact_def adm_def by fast + +lemma compact_chfin [simp]: "compact (x::'a::chfin)" +by (rule compactI [OF adm_chfin]) + +lemma compact_imp_max_in_chain: + "\chain Y; compact (\i. Y i)\ \ \i. max_in_chain i Y" +apply (drule (1) compactD2, simp) +apply (erule exE, rule_tac x=i in exI) +apply (rule max_in_chainI) +apply (rule antisym_less) +apply (erule (1) chain_mono3) +apply (erule (1) trans_less [OF is_ub_thelub]) +done + text {* admissibility and compactness *} lemma adm_compact_not_less: "\compact k; cont t\ \ adm (\x. \ k \ t x)" -by (unfold compact_def, erule adm_subst) +unfolding compact_def by (rule adm_subst) lemma adm_neq_compact: "\compact k; cont t\ \ adm (\x. t x \ k)" by (simp add: po_eq_conv adm_imp adm_not_less adm_compact_not_less)