Abella logo (small)

ccs_bisim.thm

Kind name,action,proc type. Import "ccs_core". Define bisim_t : proc -> proc -> proc -> proc -> prop by bisim_t P1 P2 Q1 Q2 := bisim_up_to refl_t P1 P2 /\ bisim_up_to refl_t Q1 Q2. Define is_sound_fst : (proc -> proc -> proc -> proc -> prop) -> prop by is_sound_fst Tech := forall P Q, (exists R S, bisim_up_to refl_t P R /\ bisim_up_to Tech R S /\ bisim_up_to refl_t S Q) -> bisim_up_to refl_t P Q. Define is_sound_snd : (proc -> proc -> proc -> proc -> prop) -> prop by is_sound_snd Tech := forall P Q, bisim_up_to Tech P Q -> exists R S, bisim_up_to refl_t P R /\ bisim_up_to Tech R S /\ bisim_up_to refl_t S Q. Theorem bisim_t_reflexive : forall P, bisim_t P P P P. intros. unfold. backchain bisim_reflexive_. backchain bisim_reflexive_. Theorem bisim_sound_fst : is_sound_fst bisim_t. unfold. coinduction. intros. case H1. rename H2 to Left. rename H3 to Middle. rename H4 to Right. unfold. intros Pstep. Left : case Left. clear Left1. Left : apply Left to Pstep. clear Left. rename Left1 to PPstep. Middle : case Middle. clear Middle1. Middle : apply Middle to PPstep. clear Middle. rename Middle1 to QQstep. Right : case Right. clear Right1. Right : apply Right to QQstep. clear Right. rename Right1 to Qstep. witness Q5. split. search. witness P1. witness Q5. split. search. case Left2. case Right2. Bisim : case Middle2. Link : apply bisim_transitive_ to Left3 Bisim. Link : apply bisim_symmetric_ to Bisim1. Link : apply bisim_transitive_ to Link1 Right3. backchain 1 CH. intros Qstep. Right : case Right. Right : apply Right1 to Qstep. clear Right Right1. rename Right2 to Pstep. Middle : case Middle. Middle : apply Middle1 to Pstep. clear Middle Middle1. rename Middle2 to PPstep. Left : case Left. Left : apply Left1 to PPstep. clear Left Left1. rename Left2 to QQstep. witness P5. split. search. witness P5. witness Q1. split. search. case Left3. case Right3. Link : case Middle3. Link : apply bisim_transitive_ to Left4 Link. Link : apply bisim_symmetric_ to Link1. Link : apply bisim_transitive_ to Link3 Right4. backchain 1 CH. Theorem bisim_sound_snd : is_sound_snd bisim_t. unfold. intros. witness P. witness Q. split. backchain bisim_reflexive_. search. backchain bisim_reflexive_. Theorem bisim_sound : is_sound bisim_t. unfold. intros. apply bisim_sound_snd. case H2. apply H3 to H1. apply bisim_sound_fst. case H7. backchain H8.