Up to index of Isabelle/HOL/HOL-Complex/CSP-Prover
theory Domain_SF_prod_cms = Domain_SF_prod + Domain_SF_cms + RS_prod: (*-------------------------------------------*
| CSP-Prover |
| December 2004 |
| Yoshinao Isobe (AIST JAPAN) |
*-------------------------------------------*)
theory Domain_SF_prod_cms = Domain_SF_prod + Domain_SF_cms + RS_prod:
(*****************************************************************
1.
2.
3.
4.
*****************************************************************)
(**************************************************************)
(* *)
(* It has already proven that ('i,'a) dom_SF_prod is a CMS *)
(* because dom_SF is a CMS and "=>" preserves CMS. *)
(* *)
(* instance dom_SF :: (type) cms_rs in Domain_SF.thy *)
(* instance => :: (type,cms_rs) cms_rs in RS_prod.thy *)
(* *)
(* This can be confirmed as the following lemmas. *)
(* *)
(**************************************************************)
lemma LimitSF_prod_Limit:
"cauchy (SFps::(('i,'a) domSF_prod) infinite_seq) ==> SFps convergeTo Limit SFps"
by (simp add: Limit_is)
(* see "Limit_is" in RS.thy *)
(************************************************************
continuity lemma for refinement
************************************************************)
lemma continuou_rs_RefSF_prod: "continuous_rs (RefSF_prod SEp)"
apply (simp add: RefSF_prod_def)
apply (simp add: order_prod_def)
apply (insert prod_continuous_rs[of "(%i. RefSF (SEp i))"])
apply (simp add: continuous_rs_RefSF)
by (simp add: RefSF_def)
(************************************************************
continuity lemma for (Reverse) refinement
************************************************************)
lemma continuou_rs_RevSF_prod: "continuous_rs (RevSF_prod SEp)"
apply (simp add: RevSF_prod_def)
apply (simp add: order_prod_def)
apply (insert prod_continuous_rs[of "(%i. RevSF (SEp i))"])
apply (simp add: continuous_rs_RevSF)
by (simp add: RevSF_def)
(************************************************************
Metric Fixed Point Induction for refinement
************************************************************)
theorem cms_fixpoint_induction_ref:
"[| constructive_rs f ; mono f ; SEp <= f SEp ; SFp = f SFp |]
==> (SEp::('i,'a) domSF_prod) <= SFp"
apply (insert cms_fixpoint_induction[of "RefSF_prod SEp" SEp f])
apply (simp add: continuou_rs_RefSF_prod)
apply (simp add: RefSF_prod_def)
apply (subgoal_tac "inductivefun (op <= SEp) f")
apply (insert UFP_is[of f], simp)
apply (simp add: isUFP_def)
(* inductiveness *)
apply (simp add: inductivefun_def)
apply (intro allI impI)
apply (simp add: mono_def)
apply (drule_tac x="SEp" in spec)
apply (drule_tac x="x" in spec)
apply (simp)
done
(************************************************************
Metric Fixed Point Induction for refinement (rev)
************************************************************)
theorem cms_fixpoint_induction_rev:
"[| constructive_rs f ; mono f ; f SEp <= SEp ; SFp = f SFp |]
==> (SFp::('i,'a) domSF_prod) <= SEp"
apply (insert cms_fixpoint_induction[of "RevSF_prod SEp" SEp f])
apply (simp add: continuou_rs_RevSF_prod)
apply (simp add: RevSF_prod_def)
apply (subgoal_tac "inductivefun (%SFp. SFp <= SEp) f")
apply (insert UFP_is[of f], simp)
apply (simp add: isUFP_def)
(* inductiveness *)
apply (simp add: inductivefun_def)
apply (intro allI impI)
apply (simp add: mono_def)
apply (drule_tac x="x" in spec)
apply (drule_tac x="SEp" in spec)
apply (simp)
done
end
lemma LimitSF_prod_Limit:
cauchy SFps ==> SFps convergeTo Limit SFps
lemma continuou_rs_RefSF_prod:
continuous_rs (RefSF_prod SEp)
lemma continuou_rs_RevSF_prod:
continuous_rs (RevSF_prod SEp)
theorem cms_fixpoint_induction_ref:
[| constructive_rs f; mono f; SEp ≤ f SEp; SFp = f SFp |] ==> SEp ≤ SFp
theorem cms_fixpoint_induction_rev:
[| constructive_rs f; mono f; f SEp ≤ SEp; SFp = f SFp |] ==> SFp ≤ SEp