src/HOL/Library/Zorn.thy
changeset 26806 40b411ec05aa
parent 26298 53e382ccf71f
child 27064 267cab537760
--- a/src/HOL/Library/Zorn.thy	Wed May 07 10:56:58 2008 +0200
+++ b/src/HOL/Library/Zorn.thy	Wed May 07 10:57:19 2008 +0200
@@ -44,7 +44,6 @@
   where
     succI:        "x \<in> TFin S ==> succ S x \<in> TFin S"
   | Pow_UnionI:   "Y \<in> Pow(TFin S) ==> Union(Y) \<in> TFin S"
-  monos          Pow_mono
 
 
 subsection{*Mathematical Preamble*}
@@ -57,22 +56,20 @@
 text{*This is theorem @{text increasingD2} of ZF/Zorn.thy*}
 
 lemma Abrial_axiom1: "x \<subseteq> succ S x"
-  apply (unfold succ_def)
-  apply (rule split_if [THEN iffD2])
-  apply (auto simp add: super_def maxchain_def psubset_def)
+  apply (auto simp add: succ_def super_def maxchain_def)
   apply (rule contrapos_np, assumption)
-  apply (rule someI2, blast+)
+  apply (rule_tac Q="\<lambda>S. xa \<in> S" in someI2, blast+)
   done
 
 lemmas TFin_UnionI = TFin.Pow_UnionI [OF PowI]
 
 lemma TFin_induct:
-          "[| n \<in> TFin S;
-             !!x. [| x \<in> TFin S; P(x) |] ==> P(succ S x);
-             !!Y. [| Y \<subseteq> TFin S; Ball Y P |] ==> P(Union Y) |]
-          ==> P(n)"
-  apply (induct set: TFin)
-   apply blast+
+  assumes H: "n \<in> TFin S"
+  and I: "!!x. x \<in> TFin S ==> P x ==> P (succ S x)"
+    "!!Y. Y \<subseteq> TFin S ==> Ball Y P ==> P(Union Y)"
+  shows "P n" using H
+  apply (induct rule: TFin.induct [where P=P])
+   apply (blast intro: I)+
   done
 
 lemma succ_trans: "x \<subseteq> y ==> x \<subseteq> succ S y"
@@ -163,14 +160,14 @@
 lemma select_super:
      "c \<in> chain S - maxchain S ==> (\<some>c'. c': super S c): super S c"
   apply (erule mem_super_Ex [THEN exE])
-  apply (rule someI2, auto)
+  apply (rule someI2 [where Q="%X. X : super S c"], auto)
   done
 
 lemma select_not_equals:
      "c \<in> chain S - maxchain S ==> (\<some>c'. c': super S c) \<noteq> c"
   apply (rule notI)
   apply (drule select_super)
-  apply (simp add: super_def psubset_def)
+  apply (simp add: super_def less_le)
   done
 
 lemma succI3: "c \<in> chain S - maxchain S ==> succ S c = (\<some>c'. c': super S c)"
@@ -189,7 +186,7 @@
   apply (rule CollectI, safe)
    apply (drule bspec, assumption)
    apply (rule_tac [2] m1 = Xa and n1 = X in TFin_subset_linear [THEN disjE],
-     blast+)
+     best+)
   done
 
 theorem Hausdorff: "\<exists>c. (c :: 'a set set): maxchain S"
@@ -223,7 +220,7 @@
 apply (erule conjE)
 apply (subgoal_tac "({u} Un c) \<in> super S c")
  apply simp
-apply (unfold super_def psubset_def)
+apply (unfold super_def less_le)
 apply (blast intro: chain_extend dest: chain_Union_upper)
 done
 
@@ -253,7 +250,7 @@
 apply (rule ccontr)
 apply (frule_tac z = x in chain_extend)
   apply (assumption, blast)
-apply (unfold maxchain_def super_def psubset_def)
+apply (unfold maxchain_def super_def less_le)
 apply (blast elim!: equalityCE)
 done