Up to index of Isabelle/HOL/HOL-Complex/CSP-Prover
theory Domain_SF_prod_cpo = Domain_SF_cpo + Domain_SF_prod + CPO_prod:(*-------------------------------------------* | CSP-Prover | | December 2004 | | Yoshinao Isobe (AIST JAPAN) | *-------------------------------------------*) theory Domain_SF_prod_cpo = Domain_SF_cpo + Domain_SF_prod + CPO_prod: (***************************************************************** 1. ('i,'a) dom_SF_prod is a CPO. 2. 3. 4. *****************************************************************) (**************************************************************) (* *) (* It has already proven that ('i,'a) dom_SF_prod is a CPO *) (* because dom_SF is a CPO and "=>" preserves CPO. *) (* *) (* instance dom_SF :: (type) cpo_bot in Domain_SF_cpo.thy *) (* instance fun :: (type,cpo_bot) cpo_bot in CPO_prod.thy *) (* *) (**************************************************************) (*----------------------------------------------------------* | | | Fixed point induction for refinement | | | *----------------------------------------------------------*) (************************************************************ admissibility lemma for refinement for cpo ************************************************************) lemma RevSF_prod_admissible: "admissible (RevSF_prod SEp)" apply (simp add: RevSF_prod_def) apply (simp add: admissible_def) by (auto simp add: LUB_least complete_cpo) (*** Bot ***) lemma RevSF_prod_Bot: "RevSF_prod SEp Bot" by (simp add: RevSF_prod_def bottom_bot) (************************************************************ Fixed Point Induction (CPO) for refinement ************************************************************) theorem cpo_fixpoint_induction_rev: "[| continuous f ; f SEp <= SEp |] ==> LFP f <= (SEp::('i,'a) domSF_prod)" apply (insert cpo_fixpoint_induction[of "(RevSF_prod SEp)" f]) apply (simp add: RevSF_prod_admissible RevSF_prod_Bot) apply (subgoal_tac "inductivefun (RevSF_prod SEp) f") apply (simp add: RevSF_prod_def) (* inductiveness *) apply (simp add: inductivefun_def RevSF_prod_def) apply (intro allI impI) apply (insert continuous_mono[of f]) apply (simp add: mono_def) apply (drule_tac x="x" in spec) apply (drule_tac x="SEp" in spec) by (simp) (*** EX version ***) theorem cpo_fixpoint_induction_rev_EX: "[| continuous f ; f SEp <= SEp ; SFp isLFP f |] ==> SFp <= (SEp::('i,'a) domSF_prod)" apply (insert cpo_fixpoint_induction_rev[of f SEp]) by (auto simp add: isLFP_LFP) end
lemma RevSF_prod_admissible:
admissible (RevSF_prod SEp)
lemma RevSF_prod_Bot:
RevSF_prod SEp Bot
theorem cpo_fixpoint_induction_rev:
[| continuous f; f SEp ≤ SEp |] ==> LFP f ≤ SEp
theorem cpo_fixpoint_induction_rev_EX:
[| continuous f; f SEp ≤ SEp; SFp isLFP f |] ==> SFp ≤ SEp