equal
deleted
inserted
replaced
23 @{term "\<forall>y\<in>Mset(a). \<forall>z\<in>Mset(a). P(<y,z>) <-> Q(a,<y,z>)"}, removing most |
23 @{term "\<forall>y\<in>Mset(a). \<forall>z\<in>Mset(a). P(<y,z>) <-> Q(a,<y,z>)"}, removing most |
24 uses of @{term Pair_in_Mset}. But there isn't much point in doing so, since |
24 uses of @{term Pair_in_Mset}. But there isn't much point in doing so, since |
25 ultimately the @{text ex_reflection} proof is packaged up using the |
25 ultimately the @{text ex_reflection} proof is packaged up using the |
26 predicate @{text Reflects}. |
26 predicate @{text Reflects}. |
27 *} |
27 *} |
28 locale reflection = |
28 locale (open) reflection = |
29 fixes Mset and M and Reflects |
29 fixes Mset and M and Reflects |
30 assumes Mset_mono_le : "mono_le_subset(Mset)" |
30 assumes Mset_mono_le : "mono_le_subset(Mset)" |
31 and Mset_cont : "cont_Ord(Mset)" |
31 and Mset_cont : "cont_Ord(Mset)" |
32 and Pair_in_Mset : "[| x \<in> Mset(a); y \<in> Mset(a); Limit(a) |] |
32 and Pair_in_Mset : "[| x \<in> Mset(a); y \<in> Mset(a); Limit(a) |] |
33 ==> <x,y> \<in> Mset(a)" |
33 ==> <x,y> \<in> Mset(a)" |
122 done |
122 done |
123 |
123 |
124 |
124 |
125 text{*Locale for the induction hypothesis*} |
125 text{*Locale for the induction hypothesis*} |
126 |
126 |
127 locale ex_reflection = reflection + |
127 locale (open) ex_reflection = reflection + |
128 fixes P --"the original formula" |
128 fixes P --"the original formula" |
129 fixes Q --"the reflected formula" |
129 fixes Q --"the reflected formula" |
130 fixes Cl --"the class of reflecting ordinals" |
130 fixes Cl --"the class of reflecting ordinals" |
131 assumes Cl_reflects: "[| Cl(a); Ord(a) |] ==> \<forall>x\<in>Mset(a). P(x) <-> Q(a,x)" |
131 assumes Cl_reflects: "[| Cl(a); Ord(a) |] ==> \<forall>x\<in>Mset(a). P(x) <-> Q(a,x)" |
132 |
132 |
190 \<lambda>x. \<exists>z. M(z) \<and> P0(<x,z>), |
190 \<lambda>x. \<exists>z. M(z) \<and> P0(<x,z>), |
191 \<lambda>a x. \<exists>z\<in>Mset(a). Q0(a,<x,z>))" |
191 \<lambda>a x. \<exists>z\<in>Mset(a). Q0(a,<x,z>))" |
192 apply (simp add: Reflects_def) |
192 apply (simp add: Reflects_def) |
193 apply (intro conjI Closed_Unbounded_Int) |
193 apply (intro conjI Closed_Unbounded_Int) |
194 apply blast |
194 apply blast |
195 apply (rule reflection.Closed_Unbounded_ClEx [of Cl P0 Q0], blast, clarify) |
195 apply (rule Closed_Unbounded_ClEx [of Cl P0 Q0], blast, clarify) |
196 apply (rule_tac Cl=Cl in ClEx_iff, assumption+, blast) |
196 apply (rule_tac Cl=Cl in ClEx_iff, assumption+, blast) |
197 done |
197 done |
198 |
198 |
199 lemma (in reflection) All_reflection_0: |
199 lemma (in reflection) All_reflection_0: |
200 "Reflects(Cl,P0,Q0) |
200 "Reflects(Cl,P0,Q0) |