Up to index of Isabelle/HOL/HOL-Complex/CSP/CSP_T/CSP_F/FNF_F
theory FNF_F_sf_ren (*-------------------------------------------*
| CSP-Prover on Isabelle2005 |
| February 2006 |
| April 2006 (modified) |
| March 2007 (modified) |
| |
| Yoshinao Isobe (AIST JAPAN) |
*-------------------------------------------*)
theory FNF_F_sf_ren
imports FNF_F_sf_induct
begin
(* The following simplification rules are deleted in this theory file *)
(* because they unexpectly rewrite UnionT and InterT. *)
(* disj_not1: (~ P | Q) = (P --> Q) *)
declare disj_not1 [simp del]
(* The following simplification rules are deleted in this theory file *)
(* P (if Q then x else y) = ((Q --> P x) & (~ Q --> P y)) *)
declare split_if [split del]
(*****************************************************************
1. full sequentialization for Renaming (P [[r]])
2.
3.
*****************************************************************)
(*============================================================*
| |
| Renaming P [[r]] |
| |
*============================================================*)
consts
Pfun_Renaming :: "('a * 'a) set => (('p,'a) proc => ('p,'a) proc)"
SP_step_Renaming ::
"('a * 'a) set => ('a set => ('a => ('p,'a) proc) =>
('p,'a) proc => ('a => ('p,'a) proc)
=> ('p,'a) proc)"
fsfF_Renaming :: "('p,'a) proc => ('a * 'a) set => ('p,'a) proc"
("(1_ /[[_]]seq)" [84,0] 84)
defs
Pfun_Renaming_def :
"Pfun_Renaming r == (%P1. P1 [[r]])"
SP_step_Renaming_def :
"SP_step_Renaming r == (%Y1 Pf1 Q1 SPf.
(? y:(r `` Y1) ->
(! :{x : Y1. (x, y) : r} .. SPf) [+] Q1))"
fsfF_Renaming_def :
"P1 [[r]]seq == (fsfF_induct1 (Pfun_Renaming r)
(SP_step_Renaming r) P1)"
(*************************************************************
function fsfF -> fsfF
*************************************************************)
lemma fsfF_Renaming_in:
"P1 : fsfF_proc ==> P1 [[r]]seq : fsfF_proc"
apply (simp add: fsfF_Renaming_def)
apply (rule fsfF_induct1_in)
apply (simp_all add: SP_step_Renaming_def)
apply (rule fsfF_proc.intros)
apply (rule ballI)
apply (simp add: Rep_int_choice_ss_def)
apply (rule fsfF_proc.intros)
apply (auto)
done
(*------------------------------------------------------------*
| syntactical transformation to fsfF |
*------------------------------------------------------------*)
lemma cspF_fsfF_Renaming_eqF:
"P1 [[r]] =F P1 [[r]]seq"
apply (simp add: fsfF_Renaming_def)
apply (rule cspF_rw_right)
apply (rule cspF_fsfF_induct1_eqF[THEN cspF_sym])
apply (simp_all add: Pfun_Renaming_def
SP_step_Renaming_def)
apply (rule cspF_rw_left)
apply (rule cspF_Ext_dist)
apply (rule cspF_decompo)
apply (rule cspF_step)
apply (simp add: cspF_SKIP_or_DIV_or_STOP_Renaming_Id)
(* congruence *)
apply (rule cspF_decompo)
apply (rule cspF_decompo)
apply (simp)
apply (rule cspF_decompo)
apply (auto)
done
(****************** to add them again ******************)
declare split_if [split]
declare disj_not1 [simp]
end
lemma fsfF_Renaming_in:
P1.0 ∈ fsfF_proc ==> P1.0 [[r]]seq ∈ fsfF_proc
lemma cspF_fsfF_Renaming_eqF:
P1.0 [[r]] =F P1.0 [[r]]seq