191 proof(simp add: CS_def AI_WN_def) |
191 proof(simp add: CS_def AI_WN_def) |
192 assume 1: "pfp_WN (step' \<top>) c = Some c'" |
192 assume 1: "pfp_WN (step' \<top>) c = Some c'" |
193 from pfp_WN_pfp[OF allI[OF strip_step'] mono_step' 1] |
193 from pfp_WN_pfp[OF allI[OF strip_step'] mono_step' 1] |
194 have 2: "step' \<top> c' \<sqsubseteq> c'" . |
194 have 2: "step' \<top> c' \<sqsubseteq> c'" . |
195 have 3: "strip (\<gamma>\<^isub>c (step' \<top> c')) = c" by(simp add: strip_pfp_WN[OF _ 1]) |
195 have 3: "strip (\<gamma>\<^isub>c (step' \<top> c')) = c" by(simp add: strip_pfp_WN[OF _ 1]) |
196 have "lfp c (step UNIV) \<le> \<gamma>\<^isub>c (step' \<top> c')" |
196 have "lfp (step UNIV) c \<le> \<gamma>\<^isub>c (step' \<top> c')" |
197 proof(rule lfp_lowerbound[simplified,OF 3]) |
197 proof(rule lfp_lowerbound[simplified,OF 3]) |
198 show "step UNIV (\<gamma>\<^isub>c (step' \<top> c')) \<le> \<gamma>\<^isub>c (step' \<top> c')" |
198 show "step UNIV (\<gamma>\<^isub>c (step' \<top> c')) \<le> \<gamma>\<^isub>c (step' \<top> c')" |
199 proof(rule step_preserves_le[OF _ _ 3]) |
199 proof(rule step_preserves_le[OF _ _ 3]) |
200 show "UNIV \<subseteq> \<gamma>\<^isub>o \<top>" by simp |
200 show "UNIV \<subseteq> \<gamma>\<^isub>o \<top>" by simp |
201 show "\<gamma>\<^isub>c (step' \<top> c') \<le> \<gamma>\<^isub>c c'" by(rule mono_gamma_c[OF 2]) |
201 show "\<gamma>\<^isub>c (step' \<top> c') \<le> \<gamma>\<^isub>c c'" by(rule mono_gamma_c[OF 2]) |
202 qed |
202 qed |
203 qed |
203 qed |
204 from this 2 show "lfp c (step UNIV) \<le> \<gamma>\<^isub>c c'" |
204 from this 2 show "lfp (step UNIV) c \<le> \<gamma>\<^isub>c c'" |
205 by (blast intro: mono_gamma_c order_trans) |
205 by (blast intro: mono_gamma_c order_trans) |
206 qed |
206 qed |
207 |
207 |
208 end |
208 end |
209 |
209 |