src/HOL/Library/Zorn.thy
changeset 27476 964766deef47
parent 27064 267cab537760
child 28952 15a4b2cf8c34
equal deleted inserted replaced
27475:61b979a2c820 27476:964766deef47
   390   }
   390   }
   391   thus False using assms(2) `r:R`
   391   thus False using assms(2) `r:R`
   392     by(simp add:wf_iff_no_infinite_down_chain) blast
   392     by(simp add:wf_iff_no_infinite_down_chain) blast
   393 qed
   393 qed
   394 
   394 
       
   395 lemma initial_segment_of_Diff:
       
   396   "p initial_segment_of q \<Longrightarrow> p - s initial_segment_of q - s"
       
   397 unfolding init_seg_of_def by blast
       
   398 
   395 lemma Chain_inits_DiffI:
   399 lemma Chain_inits_DiffI:
   396   "R \<in> Chain init_seg_of \<Longrightarrow> {r - s |r. r \<in> R} \<in> Chain init_seg_of"
   400   "R \<in> Chain init_seg_of \<Longrightarrow> {r - s |r. r \<in> R} \<in> Chain init_seg_of"
   397 apply(auto simp:Chain_def init_seg_of_def)
   401 unfolding Chain_def by (blast intro: initial_segment_of_Diff)
   398 apply (metis subsetD)
       
   399 apply (metis subsetD)
       
   400 done
       
   401 
   402 
   402 theorem well_ordering: "\<exists>r::('a*'a)set. Well_order r \<and> Field r = UNIV"
   403 theorem well_ordering: "\<exists>r::('a*'a)set. Well_order r \<and> Field r = UNIV"
   403 proof-
   404 proof-
   404 -- {*The initial segment relation on well-orders: *}
   405 -- {*The initial segment relation on well-orders: *}
   405   let ?WO = "{r::('a*'a)set. Well_order r}"
   406   let ?WO = "{r::('a*'a)set. Well_order r}"