src/HOL/Hyperreal/StarDef.thy
changeset 18708 4b3dadb4fe33
parent 17443 f503dccdff27
child 19765 dfe940911617
equal deleted inserted replaced
18707:9d6154f76476 18708:4b3dadb4fe33
   159 constdefs
   159 constdefs
   160   star_of :: "'a \<Rightarrow> 'a star"
   160   star_of :: "'a \<Rightarrow> 'a star"
   161   "star_of x \<equiv> star_n (\<lambda>n. x)"
   161   "star_of x \<equiv> star_n (\<lambda>n. x)"
   162 
   162 
   163 text {* Transfer tactic should remove occurrences of @{term star_of} *}
   163 text {* Transfer tactic should remove occurrences of @{term star_of} *}
   164 setup {* [Transfer.add_const "StarDef.star_of"] *}
   164 setup {* Transfer.add_const "StarDef.star_of" *}
   165 declare star_of_def [transfer_intro]
   165 declare star_of_def [transfer_intro]
   166 
   166 
   167 lemma star_of_inject: "(star_of x = star_of y) = (x = y)"
   167 lemma star_of_inject: "(star_of x = star_of y) = (x = y)"
   168 by (transfer, rule refl)
   168 by (transfer, rule refl)
   169 
   169 
   182 lemma Ifun_star_n: "star_n F \<star> star_n X = star_n (\<lambda>n. F n (X n))"
   182 lemma Ifun_star_n: "star_n F \<star> star_n X = star_n (\<lambda>n. F n (X n))"
   183 by (simp add: Ifun_def star_n_def Abs_star_inverse starrel_in_star
   183 by (simp add: Ifun_def star_n_def Abs_star_inverse starrel_in_star
   184     UN_equiv_class2 [OF equiv_starrel equiv_starrel Ifun_congruent2])
   184     UN_equiv_class2 [OF equiv_starrel equiv_starrel Ifun_congruent2])
   185 
   185 
   186 text {* Transfer tactic should remove occurrences of @{term Ifun} *}
   186 text {* Transfer tactic should remove occurrences of @{term Ifun} *}
   187 setup {* [Transfer.add_const "StarDef.Ifun"] *}
   187 setup {* Transfer.add_const "StarDef.Ifun" *}
   188 
   188 
   189 lemma transfer_Ifun [transfer_intro]:
   189 lemma transfer_Ifun [transfer_intro]:
   190   "\<lbrakk>f \<equiv> star_n F; x \<equiv> star_n X\<rbrakk> \<Longrightarrow> f \<star> x \<equiv> star_n (\<lambda>n. F n (X n))"
   190   "\<lbrakk>f \<equiv> star_n F; x \<equiv> star_n X\<rbrakk> \<Longrightarrow> f \<star> x \<equiv> star_n (\<lambda>n. F n (X n))"
   191 by (simp only: Ifun_star_n)
   191 by (simp only: Ifun_star_n)
   192 
   192 
   232 
   232 
   233 lemma unstar_star_of [simp]: "unstar (star_of p) = p"
   233 lemma unstar_star_of [simp]: "unstar (star_of p) = p"
   234 by (simp add: unstar_def star_of_inject)
   234 by (simp add: unstar_def star_of_inject)
   235 
   235 
   236 text {* Transfer tactic should remove occurrences of @{term unstar} *}
   236 text {* Transfer tactic should remove occurrences of @{term unstar} *}
   237 setup {* [Transfer.add_const "StarDef.unstar"] *}
   237 setup {* Transfer.add_const "StarDef.unstar" *}
   238 
   238 
   239 lemma transfer_unstar [transfer_intro]:
   239 lemma transfer_unstar [transfer_intro]:
   240   "p \<equiv> star_n P \<Longrightarrow> unstar p \<equiv> {n. P n} \<in> \<U>"
   240   "p \<equiv> star_n P \<Longrightarrow> unstar p \<equiv> {n. P n} \<in> \<U>"
   241 by (simp only: unstar_star_n)
   241 by (simp only: unstar_star_n)
   242 
   242 
   275 lemma Iset_star_n:
   275 lemma Iset_star_n:
   276   "(star_n X \<in> Iset (star_n A)) = ({n. X n \<in> A n} \<in> \<U>)"
   276   "(star_n X \<in> Iset (star_n A)) = ({n. X n \<in> A n} \<in> \<U>)"
   277 by (simp add: Iset_def starP2_star_n)
   277 by (simp add: Iset_def starP2_star_n)
   278 
   278 
   279 text {* Transfer tactic should remove occurrences of @{term Iset} *}
   279 text {* Transfer tactic should remove occurrences of @{term Iset} *}
   280 setup {* [Transfer.add_const "StarDef.Iset"] *}
   280 setup {* Transfer.add_const "StarDef.Iset" *}
   281 
   281 
   282 lemma transfer_mem [transfer_intro]:
   282 lemma transfer_mem [transfer_intro]:
   283   "\<lbrakk>x \<equiv> star_n X; a \<equiv> Iset (star_n A)\<rbrakk>
   283   "\<lbrakk>x \<equiv> star_n X; a \<equiv> Iset (star_n A)\<rbrakk>
   284     \<Longrightarrow> x \<in> a \<equiv> {n. X n \<in> A n} \<in> \<U>"
   284     \<Longrightarrow> x \<in> a \<equiv> {n. X n \<in> A n} \<in> \<U>"
   285 by (simp only: Iset_star_n)
   285 by (simp only: Iset_star_n)