70 apply (subst PDPlus_commute) |
70 apply (subst PDPlus_commute) |
71 apply (simp add: 2) |
71 apply (simp add: 2) |
72 apply (simp add: lower_le_PDPlus_iff 3) |
72 apply (simp add: lower_le_PDPlus_iff 3) |
73 done |
73 done |
74 |
74 |
75 lemma approx_pd_lower_chain: |
75 lemma pd_take_lower_chain: |
76 "approx_pd n t \<le>\<flat> approx_pd (Suc n) t" |
76 "pd_take n t \<le>\<flat> pd_take (Suc n) t" |
77 apply (induct t rule: pd_basis_induct) |
77 apply (induct t rule: pd_basis_induct) |
78 apply (simp add: compact_basis.take_chain) |
78 apply (simp add: compact_basis.take_chain) |
79 apply (simp add: PDPlus_lower_mono) |
79 apply (simp add: PDPlus_lower_mono) |
80 done |
80 done |
81 |
81 |
82 lemma approx_pd_lower_le: "approx_pd i t \<le>\<flat> t" |
82 lemma pd_take_lower_le: "pd_take i t \<le>\<flat> t" |
83 apply (induct t rule: pd_basis_induct) |
83 apply (induct t rule: pd_basis_induct) |
84 apply (simp add: compact_basis.take_less) |
84 apply (simp add: compact_basis.take_less) |
85 apply (simp add: PDPlus_lower_mono) |
85 apply (simp add: PDPlus_lower_mono) |
86 done |
86 done |
87 |
87 |
88 lemma approx_pd_lower_mono: |
88 lemma pd_take_lower_mono: |
89 "t \<le>\<flat> u \<Longrightarrow> approx_pd n t \<le>\<flat> approx_pd n u" |
89 "t \<le>\<flat> u \<Longrightarrow> pd_take n t \<le>\<flat> pd_take n u" |
90 apply (erule lower_le_induct) |
90 apply (erule lower_le_induct) |
91 apply (simp add: compact_basis.take_mono) |
91 apply (simp add: compact_basis.take_mono) |
92 apply (simp add: lower_le_PDUnit_PDPlus_iff) |
92 apply (simp add: lower_le_PDUnit_PDPlus_iff) |
93 apply (simp add: lower_le_PDPlus_iff) |
93 apply (simp add: lower_le_PDPlus_iff) |
94 done |
94 done |
133 "Rep_lower_pd (lower_principal t) = {u. u \<le>\<flat> t}" |
133 "Rep_lower_pd (lower_principal t) = {u. u \<le>\<flat> t}" |
134 unfolding lower_principal_def |
134 unfolding lower_principal_def |
135 by (simp add: Abs_lower_pd_inverse lower_le.ideal_principal) |
135 by (simp add: Abs_lower_pd_inverse lower_le.ideal_principal) |
136 |
136 |
137 interpretation lower_pd: |
137 interpretation lower_pd: |
138 ideal_completion [lower_le approx_pd lower_principal Rep_lower_pd] |
138 ideal_completion [lower_le pd_take lower_principal Rep_lower_pd] |
139 apply unfold_locales |
139 apply unfold_locales |
140 apply (rule approx_pd_lower_le) |
140 apply (rule pd_take_lower_le) |
141 apply (rule approx_pd_idem) |
141 apply (rule pd_take_idem) |
142 apply (erule approx_pd_lower_mono) |
142 apply (erule pd_take_lower_mono) |
143 apply (rule approx_pd_lower_chain) |
143 apply (rule pd_take_lower_chain) |
144 apply (rule finite_range_approx_pd) |
144 apply (rule finite_range_pd_take) |
145 apply (rule approx_pd_covers) |
145 apply (rule pd_take_covers) |
146 apply (rule ideal_Rep_lower_pd) |
146 apply (rule ideal_Rep_lower_pd) |
147 apply (erule Rep_lower_pd_lub) |
147 apply (erule Rep_lower_pd_lub) |
148 apply (rule Rep_lower_principal) |
148 apply (rule Rep_lower_principal) |
149 apply (simp only: sq_le_lower_pd_def) |
149 apply (simp only: sq_le_lower_pd_def) |
150 done |
150 done |
179 end |
179 end |
180 |
180 |
181 instance lower_pd :: (bifinite) bifinite .. |
181 instance lower_pd :: (bifinite) bifinite .. |
182 |
182 |
183 lemma approx_lower_principal [simp]: |
183 lemma approx_lower_principal [simp]: |
184 "approx n\<cdot>(lower_principal t) = lower_principal (approx_pd n t)" |
184 "approx n\<cdot>(lower_principal t) = lower_principal (pd_take n t)" |
185 unfolding approx_lower_pd_def |
185 unfolding approx_lower_pd_def |
186 by (rule lower_pd.completion_approx_principal) |
186 by (rule lower_pd.completion_approx_principal) |
187 |
187 |
188 lemma approx_eq_lower_principal: |
188 lemma approx_eq_lower_principal: |
189 "\<exists>t\<in>Rep_lower_pd xs. approx n\<cdot>xs = lower_principal (approx_pd n t)" |
189 "\<exists>t\<in>Rep_lower_pd xs. approx n\<cdot>xs = lower_principal (pd_take n t)" |
190 unfolding approx_lower_pd_def |
190 unfolding approx_lower_pd_def |
191 by (rule lower_pd.completion_approx_eq_principal) |
191 by (rule lower_pd.completion_approx_eq_principal) |
192 |
192 |
193 |
193 |
194 subsection {* Monadic unit and plus *} |
194 subsection {* Monadic unit and plus *} |