src/HOL/Hyperreal/StarClasses.thy
changeset 22422 ee19cdb07528
parent 22384 33a46e6c7f04
child 22452 8a86fd2a1bf0
equal deleted inserted replaced
22421:51a18dd1ea86 22422:ee19cdb07528
   247 
   247 
   248 subsection {* Lattice ordering classes *}
   248 subsection {* Lattice ordering classes *}
   249 
   249 
   250 text {*
   250 text {*
   251   Some extra trouble is necessary because the class axioms 
   251   Some extra trouble is necessary because the class axioms 
   252   for @{term meet} and @{term join} use quantification over
   252   for @{term inf} and @{term sup} use quantification over
   253   function spaces.
   253   function spaces.
   254 *}
   254 *}
   255 
   255 
   256 lemma ex_star_fun:
   256 lemma ex_star_fun:
   257   "\<exists>f::('a \<Rightarrow> 'b) star. P (\<lambda>x. f \<star> x)
   257   "\<exists>f::('a \<Rightarrow> 'b) star. P (\<lambda>x. f \<star> x)
   277 apply (rule meet_exists)
   277 apply (rule meet_exists)
   278 done
   278 done
   279 
   279 
   280 instance star :: (lorder) lorder ..
   280 instance star :: (lorder) lorder ..
   281 
   281 
   282 lemma star_meet_def [transfer_unfold]: "meet = *f2* meet"
   282 lemma star_inf_def [transfer_unfold]: "inf = *f2* inf"
   283 apply (rule is_meet_unique [OF is_meet_meet])
   283 apply (rule is_meet_unique [OF is_meet_meet])
   284 apply (transfer is_meet_def, rule is_meet_meet)
   284 apply (transfer is_meet_def, rule is_meet_meet)
   285 done
   285 done
   286 
   286 
   287 lemma star_join_def [transfer_unfold]: "join = *f2* join"
   287 lemma star_sup_def [transfer_unfold]: "sup = *f2* sup"
   288 apply (rule is_join_unique [OF is_join_join])
   288 apply (rule is_join_unique [OF is_join_join])
   289 apply (transfer is_join_def, rule is_join_join)
   289 apply (transfer is_join_def, rule is_join_join)
   290 done
   290 done
   291 
   291 
   292 lemma Standard_meet [simp]:
   292 lemma Standard_inf [simp]:
   293   "\<lbrakk>x \<in> Standard; y \<in> Standard\<rbrakk> \<Longrightarrow> meet x y \<in> Standard"
   293   "\<lbrakk>x \<in> Standard; y \<in> Standard\<rbrakk> \<Longrightarrow> inf x y \<in> Standard"
   294 by (simp add: star_meet_def)
   294 by (simp add: star_inf_def)
   295 
   295 
   296 lemma Standard_join [simp]:
   296 lemma Standard_sup [simp]:
   297   "\<lbrakk>x \<in> Standard; y \<in> Standard\<rbrakk> \<Longrightarrow> join x y \<in> Standard"
   297   "\<lbrakk>x \<in> Standard; y \<in> Standard\<rbrakk> \<Longrightarrow> sup x y \<in> Standard"
   298 by (simp add: star_join_def)
   298 by (simp add: star_sup_def)
   299 
   299 
   300 lemma star_of_meet [simp]: "star_of (meet x y) = meet (star_of x) (star_of y)"
   300 lemma star_of_inf [simp]: "star_of (inf x y) = inf (star_of x) (star_of y)"
   301 by transfer (rule refl)
   301 by transfer (rule refl)
   302 
   302 
   303 lemma star_of_join [simp]: "star_of (join x y) = join (star_of x) (star_of y)"
   303 lemma star_of_sup [simp]: "star_of (sup x y) = sup (star_of x) (star_of y)"
   304 by transfer (rule refl)
   304 by transfer (rule refl)
   305 
   305 
   306 subsection {* Ordered group classes *}
   306 subsection {* Ordered group classes *}
   307 
   307 
   308 instance star :: (semigroup_add) semigroup_add
   308 instance star :: (semigroup_add) semigroup_add