Welcome to Abella 2.0.3-dev
Abella < Kind name, label, proc type.
Abella < Import "pic_core".
Importing from pic_core
Warning: Definition can be used to defeat stratification
(higher-order argument "Tech" occurs to the left of ->)
Abella < 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.
Abella < 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.
Warning: Definition can be used to defeat stratification
(higher-order argument "Tech" occurs to the left of ->)
Abella < 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).
Warning: Definition can be used to defeat stratification
(higher-order argument "Tech" occurs to the left of ->)
Abella < Theorem bisim_t_reflexive :
forall P, bisim_t P P P P.
============================
forall P, bisim_t P P P P
bisim_t_reflexive < intros.
Variables: P
============================
bisim_t P P P P
bisim_t_reflexive < unfold.
Subgoal 1:
Variables: P
============================
bisim_up_to refl_t P P
Subgoal 2 is:
bisim_up_to refl_t P P
bisim_t_reflexive < backchain bisim_reflexive.
Subgoal 2:
Variables: P
============================
bisim_up_to refl_t P P
bisim_t_reflexive < backchain bisim_reflexive.
Proof completed.
Abella < Theorem bisim_sound_fst :
is_sound_fst bisim_t.
============================
is_sound_fst bisim_t
bisim_sound_fst < unfold.
============================
forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q
bisim_sound_fst < coinduction.
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
============================
forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q #
bisim_sound_fst < intros.
Variables: P Q
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
H1 : exists R S, bisim_up_to refl_t P R /\ bisim_up_to bisim_t R S /\
bisim_up_to refl_t S Q
============================
bisim_up_to refl_t P Q #
bisim_sound_fst < case H1.
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
H2 : bisim_up_to refl_t P R
H3 : bisim_up_to bisim_t R S
H4 : bisim_up_to refl_t S Q
============================
bisim_up_to refl_t P Q #
bisim_sound_fst < rename H2 to Left.
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
H3 : bisim_up_to bisim_t R S
H4 : bisim_up_to refl_t S Q
============================
bisim_up_to refl_t P Q #
bisim_sound_fst < rename H3 to Middle.
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
H4 : bisim_up_to refl_t S Q
============================
bisim_up_to refl_t P Q #
bisim_sound_fst < rename H4 to Right.
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
============================
bisim_up_to refl_t P Q #
bisim_sound_fst < unfold.
Subgoal 1:
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
============================
forall L P1, one P L P1 ->
(exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < intros Pstep.
Subgoal 1:
Variables: P Q R S L P1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : one P L P1
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Left1 : case Left.
Subgoal 1:
Variables: P Q R S L P1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : one P L P1
Left1 : forall L P1, one P L P1 ->
(exists Q2, one R L Q2 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q2, oneb R (dn X) Q2 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q2, oneb R (up X) Q2 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one R L Q2 ->
(exists P1, one P L P1 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb R (dn X) Q2 ->
(exists P1, oneb P (dn X) P1 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb R (up X) Q2 ->
(exists P1, oneb P (up X) P1 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Rstep : apply Left1 to Pstep.
Subgoal 1:
Variables: P Q R S L P1 Q2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : one P L P1
Left1 : forall L P1, one P L P1 ->
(exists Q2, one R L Q2 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q2, oneb R (dn X) Q2 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q2, oneb R (up X) Q2 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one R L Q2 ->
(exists P1, one P L P1 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb R (dn X) Q2 ->
(exists P1, oneb P (dn X) P1 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb R (up X) Q2 ->
(exists P1, oneb P (up X) P1 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Rstep : one R L Q2
Rstep1 : refl_t P1 P3 Q2 Q3
Rstep2 : bisim_up_to refl_t P3 Q3
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Left1 Left2 Left3 Left4 Left5 Left6.
Subgoal 1:
Variables: P Q R S L P1 Q2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : one P L P1
Rstep : one R L Q2
Rstep1 : refl_t P1 P3 Q2 Q3
Rstep2 : bisim_up_to refl_t P3 Q3
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < case Rstep1.
Subgoal 1:
Variables: P Q R S L P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P3 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Middle1 : case Middle.
Subgoal 1:
Variables: P Q R S L P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Middle1 : forall L P1, one R L P1 ->
(exists Q2, one S L Q2 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P1, oneb R (dn X) P1 ->
(exists Q2, oneb S (dn X) Q2 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P1, oneb R (up X) P1 ->
(exists Q2, oneb S (up X) Q2 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q2, one S L Q2 ->
(exists P1, one R L P1 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q2, oneb S (dn X) Q2 ->
(exists P1, oneb R (dn X) P1 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q2, oneb S (up X) Q2 ->
(exists P1, oneb R (up X) P1 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P3 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Sstep : apply Middle1 to Rstep.
Subgoal 1:
Variables: P Q R S L P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Middle1 : forall L P1, one R L P1 ->
(exists Q2, one S L Q2 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P1, oneb R (dn X) P1 ->
(exists Q2, oneb S (dn X) Q2 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P1, oneb R (up X) P1 ->
(exists Q2, oneb S (up X) Q2 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q2, one S L Q2 ->
(exists P1, one R L P1 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q2, oneb S (dn X) Q2 ->
(exists P1, oneb R (dn X) P1 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q2, oneb S (up X) Q2 ->
(exists P1, oneb R (up X) P1 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Sstep : one S L Q1
Sstep1 : bisim_t Q3 P2 Q1 Q4
Sstep2 : bisim_up_to bisim_t P2 Q4
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P3 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Middle1 Middle2 Middle3 Middle4 Middle5 Middle6.
Subgoal 1:
Variables: P Q R S L P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L Q1
Sstep1 : bisim_t Q3 P2 Q1 Q4
Sstep2 : bisim_up_to bisim_t P2 Q4
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P3 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Sstep : case Sstep1.
Subgoal 1:
Variables: P Q R S L P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L Q1
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t Q1 Q4
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P3 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Right1 : case Right.
Subgoal 1:
Variables: P Q R S L P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L Q1
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t Q1 Q4
Right1 : forall L P1, one S L P1 ->
(exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right2 : forall X P1, oneb S (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right3 : forall X P1, oneb S (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P1, one S L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb S (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb S (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P3 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Qstep : apply Right1 to Sstep.
Subgoal 1:
Variables: P Q R S L P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L Q1
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t Q1 Q4
Right1 : forall L P1, one S L P1 ->
(exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right2 : forall X P1, oneb S (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right3 : forall X P1, oneb S (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P1, one S L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb S (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb S (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Qstep : one Q L Q5
Qstep1 : refl_t Q1 P4 Q5 Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P3 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Right1 Right2 Right3 Right4 Right5 Right6.
Subgoal 1:
Variables: P Q R S L P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L Q1
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t Q1 Q4
Qstep : one Q L Q5
Qstep1 : refl_t Q1 P4 Q5 Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P3 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < case Qstep1.
Subgoal 1:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P3 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness Q6.
Subgoal 1:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
one Q L Q6 /\
(exists P2 Q2, refl_t P3 P2 Q6 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 1.1:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
one Q L Q6
Subgoal 1.2 is:
exists P2 Q2, refl_t P3 P2 Q6 Q2 /\ bisim_up_to refl_t P2 Q2 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 1.2:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
exists P2 Q2, refl_t P3 P2 Q6 Q2 /\ bisim_up_to refl_t P2 Q2 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness P3.
Subgoal 1.2:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
exists Q2, refl_t P3 P3 Q6 Q2 /\ bisim_up_to refl_t P3 Q2 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness Q6.
Subgoal 1.2:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
refl_t P3 P3 Q6 Q6 /\ bisim_up_to refl_t P3 Q6 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 1.2.1:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
refl_t P3 P3 Q6 Q6
Subgoal 1.2.2 is:
bisim_up_to refl_t P3 Q6 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 1.2.2:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
============================
bisim_up_to refl_t P3 Q6 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Rstep2 Sstep1.
Subgoal 1.2.2:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
Link1 : bisim_up_to refl_t P3 P2
============================
bisim_up_to refl_t P3 Q6 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_symmetric to Sstep3.
Subgoal 1.2.2:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
Link1 : bisim_up_to refl_t P3 P2
Link2 : bisim_up_to refl_t Q4 P4
============================
bisim_up_to refl_t P3 Q6 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Link2 Qstep2.
Subgoal 1.2.2:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Rstep2 : bisim_up_to refl_t P3 Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Sstep1 : bisim_up_to refl_t Q3 P2
Sstep3 : bisim_up_to refl_t P4 Q4
Qstep : one Q L Q6
Qstep2 : bisim_up_to refl_t P4 Q6
Link1 : bisim_up_to refl_t P3 P2
Link2 : bisim_up_to refl_t Q4 P4
Link3 : bisim_up_to refl_t Q4 Q6
============================
bisim_up_to refl_t P3 Q6 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Rstep2 Sstep1 Sstep3 Qstep2 Link2.
Subgoal 1.2.2:
Variables: P Q R S L P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : one P L P3
Rstep : one R L Q3
Sstep : one S L P4
Sstep2 : bisim_up_to bisim_t P2 Q4
Qstep : one Q L Q6
Link1 : bisim_up_to refl_t P3 P2
Link3 : bisim_up_to refl_t Q4 Q6
============================
bisim_up_to refl_t P3 Q6 +
Subgoal 2 is:
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < backchain CH.
Subgoal 2:
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
============================
forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < intros Pstep.
Subgoal 2:
Variables: P Q R S X P1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : oneb P (dn X) P1
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Left1 : case Left.
Subgoal 2:
Variables: P Q R S X P1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : oneb P (dn X) P1
Left1 : forall L P1, one P L P1 ->
(exists Q2, one R L Q2 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q2, oneb R (dn X) Q2 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q2, oneb R (up X) Q2 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one R L Q2 ->
(exists P1, one P L P1 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb R (dn X) Q2 ->
(exists P1, oneb P (dn X) P1 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb R (up X) Q2 ->
(exists P1, oneb P (up X) P1 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Rstep : apply Left2 to Pstep.
Subgoal 2:
Variables: P Q R S X P1 Q2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : oneb P (dn X) P1
Left1 : forall L P1, one P L P1 ->
(exists Q2, one R L Q2 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q2, oneb R (dn X) Q2 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q2, oneb R (up X) Q2 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one R L Q2 ->
(exists P1, one P L P1 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb R (dn X) Q2 ->
(exists P1, oneb P (dn X) P1 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb R (up X) Q2 ->
(exists P1, oneb P (up X) P1 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Left1 Left2 Left3 Left4 Left5 Left6.
Subgoal 2:
Variables: P Q R S X P1 Q2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Middle1 : case Middle.
Subgoal 2:
Variables: P Q R S X P1 Q2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Middle1 : forall L P1, one R L P1 ->
(exists Q2, one S L Q2 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P1, oneb R (dn X) P1 ->
(exists Q2, oneb S (dn X) Q2 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P1, oneb R (up X) P1 ->
(exists Q2, oneb S (up X) Q2 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q2, one S L Q2 ->
(exists P1, one R L P1 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q2, oneb S (dn X) Q2 ->
(exists P1, oneb R (dn X) P1 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q2, oneb S (up X) Q2 ->
(exists P1, oneb R (up X) P1 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Sstep : apply Middle2 to Rstep.
Subgoal 2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Middle1 : forall L P1, one R L P1 ->
(exists Q2, one S L Q2 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P1, oneb R (dn X) P1 ->
(exists Q2, oneb S (dn X) Q2 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P1, oneb R (up X) P1 ->
(exists Q2, oneb S (up X) Q2 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q2, one S L Q2 ->
(exists P1, one R L P1 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q2, oneb S (dn X) Q2 ->
(exists P1, oneb R (dn X) P1 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q2, oneb S (up X) Q2 ->
(exists P1, oneb R (up X) P1 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Middle1 Middle2 Middle3 Middle4 Middle5 Middle6.
Subgoal 2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Right1 : case Right.
Subgoal 2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Right1 : forall L P1, one S L P1 ->
(exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right2 : forall X P1, oneb S (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right3 : forall X P1, oneb S (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P1, one S L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb S (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb S (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Qstep : apply Right2 to Sstep.
Subgoal 2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Right1 : forall L P1, one S L P1 ->
(exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right2 : forall X P1, oneb S (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right3 : forall X P1, oneb S (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P1, one S L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb S (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb S (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Right1 Right2 Right3 Right4 Right5 Right6.
Subgoal 2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness Q5.
Subgoal 2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
oneb Q (dn X) Q5 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q5 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 2.1:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
oneb Q (dn X) Q5
Subgoal 2.2 is:
exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q5 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q5 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness P1.
Subgoal 2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
exists Q2, forall N, refl_t (P1 N) (P1 N) (Q5 N) (Q2 N) /\
bisim_up_to refl_t (P1 N) (Q2 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness Q5.
Subgoal 2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
forall N, refl_t (P1 N) (P1 N) (Q5 N) (Q5 N) /\
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < intros.
Subgoal 2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
refl_t (P1 N) (P1 N) (Q5 N) (Q5 N) /\ bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 2.2.1:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
refl_t (P1 N) (P1 N) (Q5 N) (Q5 N)
Subgoal 2.2.2 is:
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (dn X) P1
Rstep : oneb R (dn X) Q2
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : oneb S (dn X) Q1
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : oneb Q (dn X) Q5
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Pstep Qstep Rstep Sstep.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Rstep : apply Rstep1 with N = N.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep1 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
Rstep : refl_t (P1 N) (P3 N) (Q2 N) (Q3 N)
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Rstep1.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
Rstep : refl_t (P1 N) (P3 N) (Q2 N) (Q3 N)
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Sstep : apply Sstep1 with N = N.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep1 : forall N, bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
Rstep : refl_t (P1 N) (P3 N) (Q2 N) (Q3 N)
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N)
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Sstep1.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
Rstep : refl_t (P1 N) (P3 N) (Q2 N) (Q3 N)
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N)
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Qstep : apply Qstep1 with N = N.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep1 : forall N, refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N) /\
bisim_up_to refl_t (P4 N) (Q6 N)
Rstep : refl_t (P1 N) (P3 N) (Q2 N) (Q3 N)
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N)
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Qstep1.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep : refl_t (P1 N) (P3 N) (Q2 N) (Q3 N)
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N)
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Eq1 : case Rstep.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N)
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep : refl_t (Q1 N) (P4 N) (Q5 N) (Q6 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq1 : Q2 N = Q3 N
Eq2 : P1 N = P3 N
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Eq1 : case Qstep.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
Sstep : bisim_t (Q2 N) (P2 N) (Q1 N) (Q4 N)
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq1 : Q2 N = Q3 N
Eq2 : P1 N = P3 N
Eq3 : Q5 N = Q6 N
Eq4 : Q1 N = P4 N
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Bis : case Sstep.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq1 : Q2 N = Q3 N
Eq2 : P1 N = P3 N
Eq3 : Q5 N = Q6 N
Eq4 : Q1 N = P4 N
Bis : bisim_up_to refl_t (Q2 N) (P2 N)
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_eq_1R to Rstep2 Eq2.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to refl_t (P3 N) (Q3 N)
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq1 : Q2 N = Q3 N
Eq2 : P1 N = P3 N
Eq3 : Q5 N = Q6 N
Eq4 : Q1 N = P4 N
Bis : bisim_up_to refl_t (Q2 N) (P2 N)
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (Q3 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Rstep2 Eq2.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq1 : Q2 N = Q3 N
Eq3 : Q5 N = Q6 N
Eq4 : Q1 N = P4 N
Bis : bisim_up_to refl_t (Q2 N) (P2 N)
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (Q3 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_eq_2R to Link1 Eq1.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq1 : Q2 N = Q3 N
Eq3 : Q5 N = Q6 N
Eq4 : Q1 N = P4 N
Bis : bisim_up_to refl_t (Q2 N) (P2 N)
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (Q3 N)
Link2 : bisim_up_to refl_t (P1 N) (Q2 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link1 Eq1.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq3 : Q5 N = Q6 N
Eq4 : Q1 N = P4 N
Bis : bisim_up_to refl_t (Q2 N) (P2 N)
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
Link2 : bisim_up_to refl_t (P1 N) (Q2 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Link2 Bis.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq3 : Q5 N = Q6 N
Eq4 : Q1 N = P4 N
Bis : bisim_up_to refl_t (Q2 N) (P2 N)
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
Link2 : bisim_up_to refl_t (P1 N) (Q2 N)
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Bis Link2.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq3 : Q5 N = Q6 N
Eq4 : Q1 N = P4 N
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_eq_2R to Qstep2 Eq3.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Qstep2 : bisim_up_to refl_t (P4 N) (Q6 N)
Eq3 : Q5 N = Q6 N
Eq4 : Q1 N = P4 N
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
Link2 : bisim_up_to refl_t (P4 N) (Q5 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Qstep2 Eq3.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Eq4 : Q1 N = P4 N
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
Link2 : bisim_up_to refl_t (P4 N) (Q5 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_symmetric to Bis1.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Eq4 : Q1 N = P4 N
Bis1 : bisim_up_to refl_t (Q1 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
Link2 : bisim_up_to refl_t (P4 N) (Q5 N)
Link3 : bisim_up_to refl_t (Q4 N) (Q1 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Bis1.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Eq4 : Q1 N = P4 N
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
Link2 : bisim_up_to refl_t (P4 N) (Q5 N)
Link3 : bisim_up_to refl_t (Q4 N) (Q1 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_eq_2L to Link3 Eq4.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Eq4 : Q1 N = P4 N
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
Link2 : bisim_up_to refl_t (P4 N) (Q5 N)
Link3 : bisim_up_to refl_t (Q4 N) (Q1 N)
Link4 : bisim_up_to refl_t (Q4 N) (P4 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link3 Eq4.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
Link2 : bisim_up_to refl_t (P4 N) (Q5 N)
Link4 : bisim_up_to refl_t (Q4 N) (P4 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Link4 Link2.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
Link2 : bisim_up_to refl_t (P4 N) (Q5 N)
Link4 : bisim_up_to refl_t (Q4 N) (P4 N)
Link3 : bisim_up_to refl_t (Q4 N) (Q5 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link4 Link2.
Subgoal 2.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 N) (Q4 N)
Link1 : bisim_up_to refl_t (P1 N) (P2 N)
Link3 : bisim_up_to refl_t (Q4 N) (Q5 N)
============================
bisim_up_to refl_t (P1 N) (Q5 N) +
Subgoal 3 is:
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < backchain CH.
Subgoal 3:
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
============================
forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < intros Pstep.
Subgoal 3:
Variables: P Q R S X P1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : oneb P (up X) P1
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Left1 : case Left.
Subgoal 3:
Variables: P Q R S X P1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : oneb P (up X) P1
Left1 : forall L P1, one P L P1 ->
(exists Q2, one R L Q2 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q2, oneb R (dn X) Q2 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q2, oneb R (up X) Q2 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one R L Q2 ->
(exists P1, one P L P1 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb R (dn X) Q2 ->
(exists P1, oneb P (dn X) P1 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb R (up X) Q2 ->
(exists P1, oneb P (up X) P1 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Rstep : apply Left3 to Pstep.
Subgoal 3:
Variables: P Q R S X P1 Q2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : oneb P (up X) P1
Left1 : forall L P1, one P L P1 ->
(exists Q2, one R L Q2 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q2, oneb R (dn X) Q2 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q2, oneb R (up X) Q2 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one R L Q2 ->
(exists P1, one P L P1 /\
(exists P3 Q3, refl_t P1 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb R (dn X) Q2 ->
(exists P1, oneb P (dn X) P1 /\
(exists P3 Q3, forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb R (up X) Q2 ->
(exists P1, oneb P (up X) P1 /\
(exists P3 Q3, nabla x, refl_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Left1 Left2 Left3 Left4 Left5 Left6.
Subgoal 3:
Variables: P Q R S X P1 Q2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Middle1 : case Middle.
Subgoal 3:
Variables: P Q R S X P1 Q2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Middle1 : forall L P1, one R L P1 ->
(exists Q2, one S L Q2 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P1, oneb R (dn X) P1 ->
(exists Q2, oneb S (dn X) Q2 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P1, oneb R (up X) P1 ->
(exists Q2, oneb S (up X) Q2 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q2, one S L Q2 ->
(exists P1, one R L P1 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q2, oneb S (dn X) Q2 ->
(exists P1, oneb R (dn X) P1 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q2, oneb S (up X) Q2 ->
(exists P1, oneb R (up X) P1 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Sstep : apply Middle3 to Rstep.
Subgoal 3:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Middle1 : forall L P1, one R L P1 ->
(exists Q2, one S L Q2 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P1, oneb R (dn X) P1 ->
(exists Q2, oneb S (dn X) Q2 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P1, oneb R (up X) P1 ->
(exists Q2, oneb S (up X) Q2 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q2, one S L Q2 ->
(exists P1, one R L P1 /\
(exists P3 Q3, bisim_t P1 P3 Q2 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q2, oneb S (dn X) Q2 ->
(exists P1, oneb R (dn X) P1 /\
(exists P3 Q3, forall N, bisim_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q2, oneb S (up X) Q2 ->
(exists P1, oneb R (up X) P1 /\
(exists P3 Q3, nabla x, bisim_t (P1 x) (P3 x) (Q2 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Middle1 Middle2 Middle3 Middle4 Middle5 Middle6.
Subgoal 3:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Right : bisim_up_to refl_t S Q
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Right1 : case Right.
Subgoal 3:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Right1 : forall L P1, one S L P1 ->
(exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right2 : forall X P1, oneb S (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right3 : forall X P1, oneb S (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P1, one S L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb S (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb S (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Qstep : apply Right3 to Sstep.
Subgoal 3:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Right1 : forall L P1, one S L P1 ->
(exists Q1, one Q L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right2 : forall X P1, oneb S (dn X) P1 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right3 : forall X P1, oneb S (up X) P1 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P1, one S L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb S (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb S (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Right1 Right2 Right3 Right4 Right5 Right6.
Subgoal 3:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
exists Q1, oneb Q (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness Q5.
Subgoal 3:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
oneb Q (up X) Q5 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q5 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 3.1:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
oneb Q (up X) Q5
Subgoal 3.2 is:
exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q5 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 3.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q5 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness P1.
Subgoal 3.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
exists Q2, nabla x, refl_t (P1 x) (P1 x) (Q5 x) (Q2 x) /\
bisim_up_to refl_t (P1 x) (Q2 x) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness Q5.
Subgoal 3.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
nabla x, refl_t (P1 x) (P1 x) (Q5 x) (Q5 x) /\
bisim_up_to refl_t (P1 x) (Q5 x) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < intros.
Subgoal 3.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
refl_t (P1 n1) (P1 n1) (Q5 n1) (Q5 n1) /\
bisim_up_to refl_t (P1 n1) (Q5 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 3.2.1:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
refl_t (P1 n1) (P1 n1) (Q5 n1) (Q5 n1)
Subgoal 3.2.2 is:
bisim_up_to refl_t (P1 n1) (Q5 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 3.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep : oneb P (up X) P1
Rstep : oneb R (up X) Q2
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep : oneb S (up X) Q1
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep : oneb Q (up X) Q5
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
bisim_up_to refl_t (P1 n1) (Q5 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Pstep Qstep Rstep Sstep.
Subgoal 3.2.2:
Variables: P Q R S X P1 Q2 P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep1 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep1 : bisim_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
bisim_up_to refl_t (P1 n1) (Q5 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < case Rstep1.
Subgoal 3.2.2:
Variables: P Q R S X P3 Q3 Q1 P2 Q4 Q5 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep1 : bisim_t (Q3 n1) (P2 n1) (Q1 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep1 : refl_t (Q1 n1) (P4 n1) (Q5 n1) (Q6 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
bisim_up_to refl_t (P3 n1) (Q5 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < case Qstep1.
Subgoal 3.2.2:
Variables: P Q R S X P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep1 : bisim_t (Q3 n1) (P2 n1) (P4 n1) (Q4 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
============================
bisim_up_to refl_t (P3 n1) (Q6 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Sstep1 : case Sstep1.
Subgoal 3.2.2:
Variables: P Q R S X P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
Sstep1 : bisim_up_to refl_t (Q3 n1) (P2 n1)
Sstep3 : bisim_up_to refl_t (P4 n1) (Q4 n1)
============================
bisim_up_to refl_t (P3 n1) (Q6 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Rstep2 Sstep1.
Subgoal 3.2.2:
Variables: P Q R S X P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
Sstep1 : bisim_up_to refl_t (Q3 n1) (P2 n1)
Sstep3 : bisim_up_to refl_t (P4 n1) (Q4 n1)
Link1 : bisim_up_to refl_t (P3 n1) (P2 n1)
============================
bisim_up_to refl_t (P3 n1) (Q6 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Rstep2 Sstep1.
Subgoal 3.2.2:
Variables: P Q R S X P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
Sstep3 : bisim_up_to refl_t (P4 n1) (Q4 n1)
Link1 : bisim_up_to refl_t (P3 n1) (P2 n1)
============================
bisim_up_to refl_t (P3 n1) (Q6 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_symmetric to Sstep3.
Subgoal 3.2.2:
Variables: P Q R S X P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
Sstep3 : bisim_up_to refl_t (P4 n1) (Q4 n1)
Link1 : bisim_up_to refl_t (P3 n1) (P2 n1)
Link2 : bisim_up_to refl_t (Q4 n1) (P4 n1)
============================
bisim_up_to refl_t (P3 n1) (Q6 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Sstep3.
Subgoal 3.2.2:
Variables: P Q R S X P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
Link1 : bisim_up_to refl_t (P3 n1) (P2 n1)
Link2 : bisim_up_to refl_t (Q4 n1) (P4 n1)
============================
bisim_up_to refl_t (P3 n1) (Q6 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Link2 Qstep2.
Subgoal 3.2.2:
Variables: P Q R S X P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Qstep2 : bisim_up_to refl_t (P4 n1) (Q6 n1)
Link1 : bisim_up_to refl_t (P3 n1) (P2 n1)
Link2 : bisim_up_to refl_t (Q4 n1) (P4 n1)
Link3 : bisim_up_to refl_t (Q4 n1) (Q6 n1)
============================
bisim_up_to refl_t (P3 n1) (Q6 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link2 Qstep2.
Subgoal 3.2.2:
Variables: P Q R S X P3 Q3 P2 Q4 P4 Q6
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to bisim_t (P2 n1) (Q4 n1)
Link1 : bisim_up_to refl_t (P3 n1) (P2 n1)
Link3 : bisim_up_to refl_t (Q4 n1) (Q6 n1)
============================
bisim_up_to refl_t (P3 n1) (Q6 n1) +
Subgoal 4 is:
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < backchain CH.
Subgoal 4:
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
============================
forall L Q1, one Q L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < intros Qstep.
Subgoal 4:
Variables: P Q R S L Q1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Qstep : one Q L Q1
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Right1 : case Right.
Subgoal 4:
Variables: P Q R S L Q1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Qstep : one Q L Q1
Right1 : forall L P2, one S L P2 ->
(exists Q1, one Q L Q1 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb S (dn X) P2 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb S (up X) P2 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P2, one S L P2 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P2, oneb S (dn X) P2 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P2, oneb S (up X) P2 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Sstep : apply Right4 to Qstep.
Subgoal 4:
Variables: P Q R S L Q1 P2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Qstep : one Q L Q1
Right1 : forall L P2, one S L P2 ->
(exists Q1, one Q L Q1 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb S (dn X) P2 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb S (up X) P2 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P2, one S L P2 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P2, oneb S (dn X) P2 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P2, oneb S (up X) P2 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Right1 Right2 Right3 Right4 Right5 Right6.
Subgoal 4:
Variables: P Q R S L Q1 P2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Middle1 : case Middle.
Subgoal 4:
Variables: P Q R S L Q1 P2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Middle1 : forall L P2, one R L P2 ->
(exists Q1, one S L Q1 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P2, oneb R (dn X) P2 ->
(exists Q1, oneb S (dn X) Q1 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P2, oneb R (up X) P2 ->
(exists Q1, oneb S (up X) Q1 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q1, one S L Q1 ->
(exists P2, one R L P2 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q1, oneb S (dn X) Q1 ->
(exists P2, oneb R (dn X) P2 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q1, oneb S (up X) Q1 ->
(exists P2, oneb R (up X) P2 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Rstep : apply Middle4 to Sstep.
Subgoal 4:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Middle1 : forall L P2, one R L P2 ->
(exists Q1, one S L Q1 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P2, oneb R (dn X) P2 ->
(exists Q1, oneb S (dn X) Q1 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P2, oneb R (up X) P2 ->
(exists Q1, oneb S (up X) Q1 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q1, one S L Q1 ->
(exists P2, one R L P2 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q1, oneb S (dn X) Q1 ->
(exists P2, oneb R (dn X) P2 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q1, oneb S (up X) Q1 ->
(exists P2, oneb R (up X) P2 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Middle1 Middle2 Middle3 Middle4 Middle5 Middle6.
Subgoal 4:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Left1 : case Left.
Subgoal 4:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Left1 : forall L P1, one P L P1 ->
(exists Q1, one R L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb R (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb R (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Left4 : forall L Q1, one R L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left5 : forall X Q1, oneb R (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left6 : forall X Q1, oneb R (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Pstep : apply Left4 to Rstep.
Subgoal 4:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Left1 : forall L P1, one P L P1 ->
(exists Q1, one R L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb R (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb R (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Left4 : forall L Q1, one R L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left5 : forall X Q1, oneb R (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left6 : forall X Q1, oneb R (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Pstep : one P L P5
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Left1 Left2 Left3 Left4 Left5 Left6.
Subgoal 4:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep : one P L P5
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness P5.
Subgoal 4:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep : one P L P5
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
one P L P5 /\
(exists P2 Q2, refl_t P5 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 4.1:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep : one P L P5
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
one P L P5
Subgoal 4.2 is:
exists P2 Q2, refl_t P5 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 4.2:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep : one P L P5
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
exists P2 Q2, refl_t P5 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness P5.
Subgoal 4.2:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep : one P L P5
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
exists Q2, refl_t P5 P5 Q1 Q2 /\ bisim_up_to refl_t P5 Q2 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness Q1.
Subgoal 4.2:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep : one P L P5
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
refl_t P5 P5 Q1 Q1 /\ bisim_up_to refl_t P5 Q1 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 4.2.1:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep : one P L P5
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
refl_t P5 P5 Q1 Q1
Subgoal 4.2.2 is:
bisim_up_to refl_t P5 Q1 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 4.2.2:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : one Q L Q1
Sstep : one S L P2
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep : one R L P1
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep : one P L P5
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
bisim_up_to refl_t P5 Q1 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Pstep Qstep Rstep Sstep.
Subgoal 4.2.2:
Variables: P Q R S L Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep1 : refl_t P2 P3 Q1 Q3
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep1 : bisim_t P1 P4 P2 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
bisim_up_to refl_t P5 Q1 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < case Sstep1.
Subgoal 4.2.2:
Variables: P Q R S L P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep1 : bisim_t P1 P4 P3 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep1 : refl_t P5 P6 P1 Q4
Pstep2 : bisim_up_to refl_t P6 Q4
============================
bisim_up_to refl_t P5 Q3 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < case Pstep1.
Subgoal 4.2.2:
Variables: P Q R S L P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep1 : bisim_t Q4 P4 P3 Q2
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep2 : bisim_up_to refl_t P6 Q4
============================
bisim_up_to refl_t P6 Q3 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Rstep1 : case Rstep1.
Subgoal 4.2.2:
Variables: P Q R S L P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep2 : bisim_up_to refl_t P6 Q4
Rstep1 : bisim_up_to refl_t Q4 P4
Rstep3 : bisim_up_to refl_t P3 Q2
============================
bisim_up_to refl_t P6 Q3 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Pstep2 Rstep1.
Subgoal 4.2.2:
Variables: P Q R S L P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep2 : bisim_up_to bisim_t P4 Q2
Pstep2 : bisim_up_to refl_t P6 Q4
Rstep1 : bisim_up_to refl_t Q4 P4
Rstep3 : bisim_up_to refl_t P3 Q2
Link1 : bisim_up_to refl_t P6 P4
============================
bisim_up_to refl_t P6 Q3 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Pstep2 Rstep1.
Subgoal 4.2.2:
Variables: P Q R S L P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep2 : bisim_up_to bisim_t P4 Q2
Rstep3 : bisim_up_to refl_t P3 Q2
Link1 : bisim_up_to refl_t P6 P4
============================
bisim_up_to refl_t P6 Q3 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_symmetric to Rstep3.
Subgoal 4.2.2:
Variables: P Q R S L P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep2 : bisim_up_to bisim_t P4 Q2
Rstep3 : bisim_up_to refl_t P3 Q2
Link1 : bisim_up_to refl_t P6 P4
Link2 : bisim_up_to refl_t Q2 P3
============================
bisim_up_to refl_t P6 Q3 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Rstep3.
Subgoal 4.2.2:
Variables: P Q R S L P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep2 : bisim_up_to bisim_t P4 Q2
Link1 : bisim_up_to refl_t P6 P4
Link2 : bisim_up_to refl_t Q2 P3
============================
bisim_up_to refl_t P6 Q3 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Link2 Sstep2.
Subgoal 4.2.2:
Variables: P Q R S L P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t P3 Q3
Rstep2 : bisim_up_to bisim_t P4 Q2
Link1 : bisim_up_to refl_t P6 P4
Link2 : bisim_up_to refl_t Q2 P3
Link3 : bisim_up_to refl_t Q2 Q3
============================
bisim_up_to refl_t P6 Q3 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link2 Sstep2.
Subgoal 4.2.2:
Variables: P Q R S L P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to bisim_t P4 Q2
Link1 : bisim_up_to refl_t P6 P4
Link3 : bisim_up_to refl_t Q2 Q3
============================
bisim_up_to refl_t P6 Q3 +
Subgoal 5 is:
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < backchain CH.
Subgoal 5:
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
============================
forall X Q1, oneb Q (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +))
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < intros Qstep.
Subgoal 5:
Variables: P Q R S X Q1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Qstep : oneb Q (dn X) Q1
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Right1 : case Right.
Subgoal 5:
Variables: P Q R S X Q1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Qstep : oneb Q (dn X) Q1
Right1 : forall L P2, one S L P2 ->
(exists Q1, one Q L Q1 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb S (dn X) P2 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb S (up X) P2 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P2, one S L P2 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P2, oneb S (dn X) P2 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P2, oneb S (up X) P2 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Sstep : apply Right5 to Qstep.
Subgoal 5:
Variables: P Q R S X Q1 P2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Qstep : oneb Q (dn X) Q1
Right1 : forall L P2, one S L P2 ->
(exists Q1, one Q L Q1 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb S (dn X) P2 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb S (up X) P2 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P2, one S L P2 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P2, oneb S (dn X) P2 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P2, oneb S (up X) P2 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Right1 Right2 Right3 Right4 Right5 Right6.
Subgoal 5:
Variables: P Q R S X Q1 P2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Middle1 : case Middle.
Subgoal 5:
Variables: P Q R S X Q1 P2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Middle1 : forall L P2, one R L P2 ->
(exists Q1, one S L Q1 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P2, oneb R (dn X) P2 ->
(exists Q1, oneb S (dn X) Q1 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P2, oneb R (up X) P2 ->
(exists Q1, oneb S (up X) Q1 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q1, one S L Q1 ->
(exists P2, one R L P2 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q1, oneb S (dn X) Q1 ->
(exists P2, oneb R (dn X) P2 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q1, oneb S (up X) Q1 ->
(exists P2, oneb R (up X) P2 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Rstep : apply Middle5 to Sstep.
Subgoal 5:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Middle1 : forall L P2, one R L P2 ->
(exists Q1, one S L Q1 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P2, oneb R (dn X) P2 ->
(exists Q1, oneb S (dn X) Q1 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P2, oneb R (up X) P2 ->
(exists Q1, oneb S (up X) Q1 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q1, one S L Q1 ->
(exists P2, one R L P2 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q1, oneb S (dn X) Q1 ->
(exists P2, oneb R (dn X) P2 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q1, oneb S (up X) Q1 ->
(exists P2, oneb R (up X) P2 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Middle1 Middle2 Middle3 Middle4 Middle5 Middle6.
Subgoal 5:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Left1 : case Left.
Subgoal 5:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Left1 : forall L P1, one P L P1 ->
(exists Q1, one R L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb R (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb R (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Left4 : forall L Q1, one R L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left5 : forall X Q1, oneb R (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left6 : forall X Q1, oneb R (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Pstep : apply Left5 to Rstep.
Subgoal 5:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Left1 : forall L P1, one P L P1 ->
(exists Q1, one R L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb R (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb R (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Left4 : forall L Q1, one R L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left5 : forall X Q1, oneb R (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left6 : forall X Q1, oneb R (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Left1 Left2 Left3 Left4 Left5 Left6.
Subgoal 5:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness P5.
Subgoal 5:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
oneb P (dn X) P5 /\
(exists P2 Q2, forall N, refl_t (P5 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +)
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 5.1:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
oneb P (dn X) P5
Subgoal 5.2 is:
exists P2 Q2, forall N, refl_t (P5 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 5.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
exists P2 Q2, forall N, refl_t (P5 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness P5.
Subgoal 5.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
exists Q2, forall N, refl_t (P5 N) (P5 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P5 N) (Q2 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < witness Q1.
Subgoal 5.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
forall N, refl_t (P5 N) (P5 N) (Q1 N) (Q1 N) /\
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < intros.
Subgoal 5.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
refl_t (P5 N) (P5 N) (Q1 N) (Q1 N) /\ bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < split.
Subgoal 5.2.1:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
refl_t (P5 N) (P5 N) (Q1 N) (Q1 N)
Subgoal 5.2.2 is:
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < search.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (dn X) Q1
Sstep : oneb S (dn X) P2
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep : oneb R (dn X) P1
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep : oneb P (dn X) P5
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Pstep Qstep Rstep Sstep.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply Sstep1 with N = N.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
Link1 : refl_t (P2 N) (P3 N) (Q1 N) (Q3 N)
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Eq1 : case Link1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep1 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Sstep1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply Rstep1 with N = N.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link1 : bisim_t (P1 N) (P4 N) (P2 N) (Q2 N)
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Bis1 : case Link1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep1 : forall N, bisim_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
bisim_up_to bisim_t (P4 N) (Q2 N)
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Rstep1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply Pstep1 with N = N.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Link1 : refl_t (P5 N) (P6 N) (P1 N) (Q4 N)
Link4 : bisim_up_to refl_t (P6 N) (Q4 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Eq1 : case Link1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Pstep1 : forall N, refl_t (P5 N) (P6 N) (P1 N) (Q4 N) /\
bisim_up_to refl_t (P6 N) (Q4 N)
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Link4 : bisim_up_to refl_t (P6 N) (Q4 N)
Eq3 : P1 N = Q4 N
Eq4 : P5 N = P6 N
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Pstep1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Link4 : bisim_up_to refl_t (P6 N) (Q4 N)
Eq3 : P1 N = Q4 N
Eq4 : P5 N = P6 N
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_eq_1R to Link4 Eq4.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Link4 : bisim_up_to refl_t (P6 N) (Q4 N)
Eq3 : P1 N = Q4 N
Eq4 : P5 N = P6 N
Link1 : bisim_up_to refl_t (P5 N) (Q4 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link4 Eq4.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Eq3 : P1 N = Q4 N
Link1 : bisim_up_to refl_t (P5 N) (Q4 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_eq_2R to Link1 Eq3.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Eq3 : P1 N = Q4 N
Link1 : bisim_up_to refl_t (P5 N) (Q4 N)
Link4 : bisim_up_to refl_t (P5 N) (P1 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link1 Eq3.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Link4 : bisim_up_to refl_t (P5 N) (P1 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Link4 Bis1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis1 : bisim_up_to refl_t (P1 N) (P4 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Link4 : bisim_up_to refl_t (P5 N) (P1 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link4 Bis1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_symmetric to Bis2.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Bis2 : bisim_up_to refl_t (P2 N) (Q2 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
Link4 : bisim_up_to refl_t (Q2 N) (P2 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Bis2.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
Link4 : bisim_up_to refl_t (Q2 N) (P2 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_eq_2L to Link4 Eq2.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Eq2 : P2 N = P3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
Link4 : bisim_up_to refl_t (Q2 N) (P2 N)
Link5 : bisim_up_to refl_t (Q2 N) (P3 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link4 Eq2.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
Link5 : bisim_up_to refl_t (Q2 N) (P3 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_eq_2R to Link2 Eq1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link2 : bisim_up_to refl_t (P3 N) (Q3 N)
Eq1 : Q1 N = Q3 N
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
Link5 : bisim_up_to refl_t (Q2 N) (P3 N)
Link4 : bisim_up_to refl_t (P3 N) (Q1 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link2 Eq1.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
Link5 : bisim_up_to refl_t (Q2 N) (P3 N)
Link4 : bisim_up_to refl_t (P3 N) (Q1 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < Link1 : apply bisim_transitive to Link5 Link4.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
Link5 : bisim_up_to refl_t (Q2 N) (P3 N)
Link4 : bisim_up_to refl_t (P3 N) (Q1 N)
Link2 : bisim_up_to refl_t (Q2 N) (Q1 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < clear Link5 Link4.
Subgoal 5.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4 N
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Link3 : bisim_up_to bisim_t (P4 N) (Q2 N)
Link1 : bisim_up_to refl_t (P5 N) (P4 N)
Link2 : bisim_up_to refl_t (Q2 N) (Q1 N)
============================
bisim_up_to refl_t (P5 N) (Q1 N) +
Subgoal 6 is:
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < backchain CH.
Subgoal 6:
Variables: P Q R S
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
============================
forall X Q1, oneb Q (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +))
bisim_sound_fst < intros Qstep.
Subgoal 6:
Variables: P Q R S X Q1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Right : bisim_up_to refl_t S Q
Qstep : oneb Q (up X) Q1
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < Right1 : case Right.
Subgoal 6:
Variables: P Q R S X Q1
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Qstep : oneb Q (up X) Q1
Right1 : forall L P2, one S L P2 ->
(exists Q1, one Q L Q1 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb S (dn X) P2 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb S (up X) P2 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P2, one S L P2 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P2, oneb S (dn X) P2 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P2, oneb S (up X) P2 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < Sstep : apply Right6 to Qstep.
Subgoal 6:
Variables: P Q R S X Q1 P2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Qstep : oneb Q (up X) Q1
Right1 : forall L P2, one S L P2 ->
(exists Q1, one Q L Q1 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb S (dn X) P2 ->
(exists Q1, oneb Q (dn X) Q1 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb S (up X) P2 ->
(exists Q1, oneb Q (up X) Q1 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q1, one Q L Q1 ->
(exists P2, one S L P2 /\
(exists P3 Q3, refl_t P2 P3 Q1 Q3 /\ bisim_up_to refl_t P3 Q3))
Right5 : forall X Q1, oneb Q (dn X) Q1 ->
(exists P2, oneb S (dn X) P2 /\
(exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q1, oneb Q (up X) Q1 ->
(exists P2, oneb S (up X) P2 /\
(exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to refl_t (P3 x) (Q3 x)))
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < clear Right1 Right2 Right3 Right4 Right5 Right6.
Subgoal 6:
Variables: P Q R S X Q1 P2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Middle : bisim_up_to bisim_t R S
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < Middle1 : case Middle.
Subgoal 6:
Variables: P Q R S X Q1 P2 P3 Q3
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Middle1 : forall L P2, one R L P2 ->
(exists Q1, one S L Q1 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P2, oneb R (dn X) P2 ->
(exists Q1, oneb S (dn X) Q1 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P2, oneb R (up X) P2 ->
(exists Q1, oneb S (up X) Q1 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q1, one S L Q1 ->
(exists P2, one R L P2 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q1, oneb S (dn X) Q1 ->
(exists P2, oneb R (dn X) P2 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q1, oneb S (up X) Q1 ->
(exists P2, oneb R (up X) P2 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < Rstep : apply Middle6 to Sstep.
Subgoal 6:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Middle1 : forall L P2, one R L P2 ->
(exists Q1, one S L Q1 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle2 : forall X P2, oneb R (dn X) P2 ->
(exists Q1, oneb S (dn X) Q1 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle3 : forall X P2, oneb R (up X) P2 ->
(exists Q1, oneb S (up X) Q1 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Middle4 : forall L Q1, one S L Q1 ->
(exists P2, one R L P2 /\
(exists P3 Q3, bisim_t P2 P3 Q1 Q3 /\
bisim_up_to bisim_t P3 Q3))
Middle5 : forall X Q1, oneb S (dn X) Q1 ->
(exists P2, oneb R (dn X) P2 /\
(exists P3 Q3, forall N, bisim_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
bisim_up_to bisim_t (P3 N) (Q3 N)))
Middle6 : forall X Q1, oneb S (up X) Q1 ->
(exists P2, oneb R (up X) P2 /\
(exists P3 Q3, nabla x, bisim_t (P2 x) (P3 x) (Q1 x) (Q3 x) /\
bisim_up_to bisim_t (P3 x) (Q3 x)))
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < clear Middle1 Middle2 Middle3 Middle4 Middle5 Middle6.
Subgoal 6:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Left : bisim_up_to refl_t P R
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < Left1 : case Left.
Subgoal 6:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Left1 : forall L P1, one P L P1 ->
(exists Q1, one R L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb R (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb R (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Left4 : forall L Q1, one R L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left5 : forall X Q1, oneb R (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left6 : forall X Q1, oneb R (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < Pstep : apply Left6 to Rstep.
Subgoal 6:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Left1 : forall L P1, one P L P1 ->
(exists Q1, one R L Q1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left2 : forall X P1, oneb P (dn X) P1 ->
(exists Q1, oneb R (dn X) Q1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left3 : forall X P1, oneb P (up X) P1 ->
(exists Q1, oneb R (up X) Q1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Left4 : forall L Q1, one R L Q1 ->
(exists P1, one P L P1 /\
(exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2))
Left5 : forall X Q1, oneb R (dn X) Q1 ->
(exists P1, oneb P (dn X) P1 /\
(exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
bisim_up_to refl_t (P2 N) (Q2 N)))
Left6 : forall X Q1, oneb R (up X) Q1 ->
(exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x)))
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < clear Left1 Left2 Left3 Left4 Left5 Left6.
Subgoal 6:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
exists P1, oneb P (up X) P1 /\
(exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < witness P5.
Subgoal 6:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
oneb P (up X) P5 /\
(exists P2 Q2, nabla x, refl_t (P5 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +)
bisim_sound_fst < split.
Subgoal 6.1:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
oneb P (up X) P5
Subgoal 6.2 is:
exists P2 Q2, nabla x, refl_t (P5 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +
bisim_sound_fst < search.
Subgoal 6.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
exists P2 Q2, nabla x, refl_t (P5 x) (P2 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P2 x) (Q2 x) +
bisim_sound_fst < witness P5.
Subgoal 6.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
exists Q2, nabla x, refl_t (P5 x) (P5 x) (Q1 x) (Q2 x) /\
bisim_up_to refl_t (P5 x) (Q2 x) +
bisim_sound_fst < witness Q1.
Subgoal 6.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
nabla x, refl_t (P5 x) (P5 x) (Q1 x) (Q1 x) /\
bisim_up_to refl_t (P5 x) (Q1 x) +
bisim_sound_fst < intros.
Subgoal 6.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
refl_t (P5 n1) (P5 n1) (Q1 n1) (Q1 n1) /\
bisim_up_to refl_t (P5 n1) (Q1 n1) +
bisim_sound_fst < split.
Subgoal 6.2.1:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
refl_t (P5 n1) (P5 n1) (Q1 n1) (Q1 n1)
Subgoal 6.2.2 is:
bisim_up_to refl_t (P5 n1) (Q1 n1) +
bisim_sound_fst < search.
Subgoal 6.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Qstep : oneb Q (up X) Q1
Sstep : oneb S (up X) P2
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep : oneb R (up X) P1
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep : oneb P (up X) P5
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
bisim_up_to refl_t (P5 n1) (Q1 n1) +
bisim_sound_fst < clear Pstep Qstep Rstep Sstep.
Subgoal 6.2.2:
Variables: P Q R S X Q1 P2 P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep1 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep1 : bisim_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
bisim_up_to refl_t (P5 n1) (Q1 n1) +
bisim_sound_fst < case Sstep1.
Subgoal 6.2.2:
Variables: P Q R S X P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep1 : bisim_t (P1 n1) (P4 n1) (P3 n1) (Q2 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
============================
bisim_up_to refl_t (P5 n1) (Q3 n1) +
bisim_sound_fst < Link1 : case Rstep1.
Subgoal 6.2.2:
Variables: P Q R S X P3 Q3 P1 P4 Q2 P5 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep1 : refl_t (P5 n1) (P6 n1) (P1 n1) (Q4 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
Link1 : bisim_up_to refl_t (P1 n1) (P4 n1)
Link2 : bisim_up_to refl_t (P3 n1) (Q2 n1)
============================
bisim_up_to refl_t (P5 n1) (Q3 n1) +
bisim_sound_fst < case Pstep1.
Subgoal 6.2.2:
Variables: P Q R S X P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
Link1 : bisim_up_to refl_t (Q4 n1) (P4 n1)
Link2 : bisim_up_to refl_t (P3 n1) (Q2 n1)
============================
bisim_up_to refl_t (P6 n1) (Q3 n1) +
bisim_sound_fst < Link1 : apply bisim_transitive to Pstep2 Link1.
Subgoal 6.2.2:
Variables: P Q R S X P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Pstep2 : bisim_up_to refl_t (P6 n1) (Q4 n1)
Link1 : bisim_up_to refl_t (Q4 n1) (P4 n1)
Link2 : bisim_up_to refl_t (P3 n1) (Q2 n1)
Link3 : bisim_up_to refl_t (P6 n1) (P4 n1)
============================
bisim_up_to refl_t (P6 n1) (Q3 n1) +
bisim_sound_fst < clear Pstep2 Link1.
Subgoal 6.2.2:
Variables: P Q R S X P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Link2 : bisim_up_to refl_t (P3 n1) (Q2 n1)
Link3 : bisim_up_to refl_t (P6 n1) (P4 n1)
============================
bisim_up_to refl_t (P6 n1) (Q3 n1) +
bisim_sound_fst < Link1 : apply bisim_symmetric to Link2.
Subgoal 6.2.2:
Variables: P Q R S X P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Link2 : bisim_up_to refl_t (P3 n1) (Q2 n1)
Link3 : bisim_up_to refl_t (P6 n1) (P4 n1)
Link1 : bisim_up_to refl_t (Q2 n1) (P3 n1)
============================
bisim_up_to refl_t (P6 n1) (Q3 n1) +
bisim_sound_fst < clear Link2.
Subgoal 6.2.2:
Variables: P Q R S X P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Link3 : bisim_up_to refl_t (P6 n1) (P4 n1)
Link1 : bisim_up_to refl_t (Q2 n1) (P3 n1)
============================
bisim_up_to refl_t (P6 n1) (Q3 n1) +
bisim_sound_fst < Link1 : apply bisim_transitive to Link1 Sstep2.
Subgoal 6.2.2:
Variables: P Q R S X P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Sstep2 : bisim_up_to refl_t (P3 n1) (Q3 n1)
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Link3 : bisim_up_to refl_t (P6 n1) (P4 n1)
Link1 : bisim_up_to refl_t (Q2 n1) (P3 n1)
Link2 : bisim_up_to refl_t (Q2 n1) (Q3 n1)
============================
bisim_up_to refl_t (P6 n1) (Q3 n1) +
bisim_sound_fst < clear Link1 Sstep2.
Subgoal 6.2.2:
Variables: P Q R S X P3 Q3 P4 Q2 P6 Q4
CH : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q +
Rstep2 : bisim_up_to bisim_t (P4 n1) (Q2 n1)
Link3 : bisim_up_to refl_t (P6 n1) (P4 n1)
Link2 : bisim_up_to refl_t (Q2 n1) (Q3 n1)
============================
bisim_up_to refl_t (P6 n1) (Q3 n1) +
bisim_sound_fst < backchain CH.
Proof completed.
Abella < Theorem bisim_sound_snd :
is_sound_snd bisim_t.
============================
is_sound_snd bisim_t
bisim_sound_snd < unfold.
============================
forall P Q, bisim_up_to bisim_t P Q ->
(exists R S, bisim_up_to refl_t P R /\ bisim_up_to bisim_t R S /\
bisim_up_to refl_t S Q)
bisim_sound_snd < intros.
Variables: P Q
H1 : bisim_up_to bisim_t P Q
============================
exists R S, bisim_up_to refl_t P R /\ bisim_up_to bisim_t R S /\
bisim_up_to refl_t S Q
bisim_sound_snd < witness P.
Variables: P Q
H1 : bisim_up_to bisim_t P Q
============================
exists S, bisim_up_to refl_t P P /\ bisim_up_to bisim_t P S /\
bisim_up_to refl_t S Q
bisim_sound_snd < witness Q.
Variables: P Q
H1 : bisim_up_to bisim_t P Q
============================
bisim_up_to refl_t P P /\ bisim_up_to bisim_t P Q /\ bisim_up_to refl_t Q Q
bisim_sound_snd < split.
Subgoal 1:
Variables: P Q
H1 : bisim_up_to bisim_t P Q
============================
bisim_up_to refl_t P P
Subgoal 2 is:
bisim_up_to bisim_t P Q
Subgoal 3 is:
bisim_up_to refl_t Q Q
bisim_sound_snd < backchain bisim_reflexive.
Subgoal 2:
Variables: P Q
H1 : bisim_up_to bisim_t P Q
============================
bisim_up_to bisim_t P Q
Subgoal 3 is:
bisim_up_to refl_t Q Q
bisim_sound_snd < search.
Subgoal 3:
Variables: P Q
H1 : bisim_up_to bisim_t P Q
============================
bisim_up_to refl_t Q Q
bisim_sound_snd < backchain bisim_reflexive.
Proof completed.
Abella < Theorem bisim_sound :
is_sound bisim_t.
============================
is_sound bisim_t
bisim_sound < Fst : apply bisim_sound_fst.
Fst : is_sound_fst bisim_t
============================
is_sound bisim_t
bisim_sound < Fst : case Fst.
Fst : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q
============================
is_sound bisim_t
bisim_sound < Snd : apply bisim_sound_snd.
Fst : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q
Snd : is_sound_snd bisim_t
============================
is_sound bisim_t
bisim_sound < Snd : case Snd.
Fst : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q
Snd : forall P Q, bisim_up_to bisim_t P Q ->
(exists R S, bisim_up_to refl_t P R /\ bisim_up_to bisim_t R S /\
bisim_up_to refl_t S Q)
============================
is_sound bisim_t
bisim_sound < unfold.
Fst : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q
Snd : forall P Q, bisim_up_to bisim_t P Q ->
(exists R S, bisim_up_to refl_t P R /\ bisim_up_to bisim_t R S /\
bisim_up_to refl_t S Q)
============================
forall P Q, bisim_up_to bisim_t P Q -> bisim_up_to refl_t P Q
bisim_sound < intros PQ.
Variables: P Q
Fst : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q
Snd : forall P Q, bisim_up_to bisim_t P Q ->
(exists R S, bisim_up_to refl_t P R /\ bisim_up_to bisim_t R S /\
bisim_up_to refl_t S Q)
PQ : bisim_up_to bisim_t P Q
============================
bisim_up_to refl_t P Q
bisim_sound < apply Snd to PQ.
Variables: P Q R S
Fst : forall P Q, (exists R S, bisim_up_to refl_t P R /\
bisim_up_to bisim_t R S /\ bisim_up_to refl_t S Q) ->
bisim_up_to refl_t P Q
Snd : forall P Q, bisim_up_to bisim_t P Q ->
(exists R S, bisim_up_to refl_t P R /\ bisim_up_to bisim_t R S /\
bisim_up_to refl_t S Q)
PQ : bisim_up_to bisim_t P Q
H1 : bisim_up_to refl_t P R
H2 : bisim_up_to bisim_t R S
H3 : bisim_up_to refl_t S Q
============================
bisim_up_to refl_t P Q
bisim_sound < backchain Fst.
Proof completed.
Abella < Goodbye.