equal
deleted
inserted
replaced
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) |