Up to index of Isabelle/HOL/HOL-Complex/CSP-Prover
theory CSP_law_commut = CSP_proc: (*-------------------------------------------*
| CSP-Prover |
| December 2004 |
| Yoshinao Isobe (AIST JAPAN) |
*-------------------------------------------*)
theory CSP_law_commut = CSP_proc:
(* The following simplification is sometimes unexpected. *)
(* *)
(* not_None_eq: (x ~= None) = (EX y. x = Some y) *)
declare not_None_eq [simp del]
(*****************************************************************
1. Commutativity
2.
3.
4.
*****************************************************************)
(*********************************************************
Ext choice
*********************************************************)
lemma domSF_Ext_choice_commut:
"[[P [+] Q]]SF ev = [[Q [+] P]]SF ev"
apply (simp add: proc_eqSF_decompo)
apply (rule conjI)
apply (rule eq_iffI)
apply (rule, simp add: Ext_choice_mem, fast)+
apply (rule eq_iffI)
apply (rule, simp add: Ext_choice_mem UnT_commut IntF_commut UnF_commut)+
done
(*------------------*
| csp law |
*------------------*)
lemma csp_Ext_choice_commut:
"LET:fp df IN P [+] Q =F LET:fp df IN Q [+] P"
apply (induct_tac fp)
by (simp_all add: eqF_def domSF_Ext_choice_commut)
(*********************************************************
Int choice
*********************************************************)
lemma domSF_Int_choice_commut:
"[[P |~| Q]]SF ev = [[Q |~| P]]SF ev"
apply (simp add: proc_eqSF_decompo)
apply (rule conjI)
apply (rule eq_iffI)
apply (rule, simp add: Int_choice_mem, fast)+
apply (rule eq_iffI)
apply (rule, simp add: Int_choice_mem, fast)+
done
(*------------------*
| csp law |
*------------------*)
lemma csp_Int_choice_commut:
"LET:fp df IN P |~| Q =F LET:fp df IN Q |~| P"
apply (induct_tac fp)
by (simp_all add: eqF_def domSF_Int_choice_commut)
(*********************************************************
Parallel
*********************************************************)
lemma domSF_Parallel_commut:
"[[P |[X]| Q]]SF ev = [[Q |[X]| P]]SF ev"
apply (simp add: proc_eqSF_decompo)
apply (rule conjI)
apply (rule eq_iffI)
apply (rule, simp add: Parallel_mem)
apply (elim conjE exE)
apply (rule_tac x="ta" in exI)
apply (rule_tac x="s" in exI)
apply (simp add: par_tr_sym)
apply (rule, simp add: Parallel_mem)
apply (elim conjE exE)
apply (rule_tac x="ta" in exI)
apply (rule_tac x="s" in exI)
apply (simp add: par_tr_sym)
apply (rule eq_iffI)
apply (rule, simp add: Parallel_mem)
apply (elim conjE exE)
apply (rule_tac x="Z" in exI)
apply (rule_tac x="Y" in exI, simp)
apply (rule conjI, fast)
apply (rule_tac x="t" in exI)
apply (rule_tac x="sa" in exI)
apply (simp add: par_tr_sym)
apply (rule, simp add: Parallel_mem)
apply (elim conjE exE)
apply (rule_tac x="Z" in exI)
apply (rule_tac x="Y" in exI, simp)
apply (rule conjI, fast)
apply (rule_tac x="t" in exI)
apply (rule_tac x="sa" in exI)
apply (simp add: par_tr_sym)
done
(*------------------*
| csp law |
*------------------*)
lemma csp_Parallel_commut:
"LET:fp df IN P |[X]| Q =F LET:fp df IN Q |[X]| P"
apply (induct_tac fp)
by (simp_all add: eqF_def domSF_Parallel_commut)
(*------------------*
| csp law |
*------------------*)
lemmas csp_commut = csp_Ext_choice_commut csp_Int_choice_commut csp_Parallel_commut
(****************** to add them again ******************)
declare not_None_eq [simp]
end
lemma domSF_Ext_choice_commut:
[[P [+] Q]]SF ev = [[Q [+] P]]SF ev
lemma csp_Ext_choice_commut:
LET:fp df IN P [+] Q =F LET:fp df IN Q [+] P
lemma domSF_Int_choice_commut:
[[P |~| Q]]SF ev = [[Q |~| P]]SF ev
lemma csp_Int_choice_commut:
LET:fp df IN P |~| Q =F LET:fp df IN Q |~| P
lemma domSF_Parallel_commut:
[[P |[X]| Q]]SF ev = [[Q |[X]| P]]SF ev
lemma csp_Parallel_commut:
LET:fp df IN P |[X]| Q =F LET:fp df IN Q |[X]| P
lemmas csp_commut:
LET:fp df IN P [+] Q =F LET:fp df IN Q [+] P
LET:fp df IN P |~| Q =F LET:fp df IN Q |~| P
LET:fp df IN P |[X]| Q =F LET:fp df IN Q |[X]| P