Welcome to Abella 2.0.5-dev.
Abella < Kind name, proc type.

Abella < Type taup proc -> proc.

Abella < Type inp name -> (name -> proc) -> proc.

Abella < Type oup name -> name -> proc -> proc.

Abella < Type nu (name -> proc) -> proc.

Abella < Type repl proc -> proc.

Abella < Type plus, par proc -> proc -> proc.

Abella < Type null proc.

Abella < Kind label type.

Abella < Type tau label.

Abella < Type up, dn name -> name -> label.

Abella < Define one : proc -> label -> proc -> prop,	
oneb : proc -> (name -> label) -> (name -> proc) -> prop by 
one (taup P) tau P;
one (oup X Y P) (up X Y) P;
one (plus P Q) L R := one P L R;
one (plus P Q) L R := one Q L R;
one (par P Q) L (par R Q) := one P L R;
one (par P Q) L (par P R) := one Q L R;
one (repl P) L (par (repl P) R) := one P L R;
one (nu P) L (nu Q) := nabla x, one (P x) L (Q x);
one (par P Q) tau (par PP QQ) := (exists X Y R, oneb P (dn X) R /\ one Q (up X Y) QQ /\ PP = R Y) \/
  (exists X Y R, one P (up X Y) PP /\ oneb Q (dn X) R /\ QQ = R Y);
one (repl P) tau (par (repl P) (par PP QQ)) := exists X Y R, one P (up X Y) PP /\ oneb P (dn X) R /\ QQ = R Y;
one (par P Q) tau (nu (y\par (PP y) (QQ y))) := (exists X, oneb P (dn X) PP /\ oneb Q (up X) QQ) \/
  (exists X, oneb P (up X) PP /\ oneb Q (dn X) QQ);
one (repl P) tau (par (repl P) (nu (y\par (PP y) (QQ y)))) := exists X, oneb P (up X) PP /\ oneb P (dn X) QQ;
oneb (nu P) (up X) R := nabla y, one (P y) (up X y) (R y);
oneb (inp X P) (dn X) P;
oneb (plus P Q) L R := oneb P L R;
oneb (plus P Q) L R := oneb Q L R;
oneb (par P Q) L (x\par (R x) Q) := oneb P L R;
oneb (par P Q) L (x\par P (R x)) := oneb Q L R;
oneb (repl P) L (x\par (repl P) (R x)) := oneb P L R;
oneb (nu P) L (y\nu (x\R x y)) := nabla x, oneb (P x) L (R x).

Abella < CoDefine bisim_up_to : (proc -> proc -> proc -> proc -> prop) -> proc -> proc -> prop by 
bisim_up_to Tech P Q := (forall L P1, one P L P1 ->
     (exists Q1, one Q L Q1 /\
          (exists P2 Q2, Tech P1 P2 Q1 Q2 /\ bisim_up_to Tech P2 Q2))) /\
  (forall X P1, oneb P (dn X) P1 ->
       (exists Q1, oneb Q (dn X) Q1 /\
            (exists P2 Q2, forall N, Tech (P1 N) (P2 N) (Q1 N) (Q2 N) /\
                 bisim_up_to Tech (P2 N) (Q2 N)))) /\
  (forall X P1, oneb P (up X) P1 ->
       (exists Q1, oneb Q (up X) Q1 /\
            (exists P2 Q2, nabla x, Tech (P1 x) (P2 x) (Q1 x) (Q2 x) /\
                 bisim_up_to Tech (P2 x) (Q2 x)))) /\
  (forall L Q1, one Q L Q1 ->
       (exists P1, one P L P1 /\
            (exists P2 Q2, Tech P1 P2 Q1 Q2 /\ bisim_up_to Tech P2 Q2))) /\
  (forall X Q1, oneb Q (dn X) Q1 ->
       (exists P1, oneb P (dn X) P1 /\
            (exists P2 Q2, forall N, Tech (P1 N) (P2 N) (Q1 N) (Q2 N) /\
                 bisim_up_to Tech (P2 N) (Q2 N)))) /\
  (forall X Q1, oneb Q (up X) Q1 ->
       (exists P1, oneb P (up X) P1 /\
            (exists P2 Q2, nabla x, Tech (P1 x) (P2 x) (Q1 x) (Q2 x) /\
                 bisim_up_to Tech (P2 x) (Q2 x)))).

Abella < Define refl_t : proc -> proc -> proc -> proc -> prop by 
refl_t P P Q Q.

Abella < Define is_sound : (proc -> proc -> proc -> proc -> prop) -> prop by 
is_sound Tech := forall P Q, bisim_up_to Tech P 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 < Theorem bisim_reflexive : 
forall P, bisim_up_to refl_t P P.


============================
 forall P, bisim_up_to refl_t P P

bisim_reflexive < coinduction.

CH : forall P, bisim_up_to refl_t P P +
============================
 forall P, bisim_up_to refl_t P P #

bisim_reflexive < intros.

Variables: P
CH : forall P, bisim_up_to refl_t P P +
============================
 bisim_up_to refl_t P P #

bisim_reflexive < unfold.
Subgoal 1:

Variables: P
CH : forall P, bisim_up_to refl_t P P +
============================
 forall L P1, one P L P1 ->
   (exists Q1, one P 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 P (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 P (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 P 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 P (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 P (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_reflexive < intros.
Subgoal 1:

Variables: P L P1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L P1
============================
 exists Q1, one P 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 P (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 P (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 P 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 P (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 P (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_reflexive < witness P1.
Subgoal 1:

Variables: P L P1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L P1
============================
 one P L P1 /\
   (exists P2 Q2, refl_t P1 P2 P1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb P (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 P (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 P 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 P (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 P (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_reflexive < split.
Subgoal 1.1:

Variables: P L P1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L P1
============================
 one P L P1

Subgoal 1.2 is:
 exists P2 Q2, refl_t P1 P2 P1 Q2 /\ bisim_up_to refl_t P2 Q2 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb P (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 P (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 P 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 P (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 P (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_reflexive < search.
Subgoal 1.2:

Variables: P L P1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L P1
============================
 exists P2 Q2, refl_t P1 P2 P1 Q2 /\ bisim_up_to refl_t P2 Q2 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb P (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 P (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 P 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 P (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 P (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_reflexive < witness P1.
Subgoal 1.2:

Variables: P L P1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L P1
============================
 exists Q2, refl_t P1 P1 P1 Q2 /\ bisim_up_to refl_t P1 Q2 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb P (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 P (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 P 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 P (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 P (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_reflexive < witness P1.
Subgoal 1.2:

Variables: P L P1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L P1
============================
 refl_t P1 P1 P1 P1 /\ bisim_up_to refl_t P1 P1 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb P (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 P (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 P 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 P (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 P (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_reflexive < split.
Subgoal 1.2.1:

Variables: P L P1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L P1
============================
 refl_t P1 P1 P1 P1

Subgoal 1.2.2 is:
 bisim_up_to refl_t P1 P1 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb P (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 P (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 P 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 P (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 P (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_reflexive < search.
Subgoal 1.2.2:

Variables: P L P1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L P1
============================
 bisim_up_to refl_t P1 P1 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb P (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 P (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 P 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 P (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 P (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_reflexive < backchain CH.
Subgoal 2:

Variables: P
CH : forall P, bisim_up_to refl_t P P +
============================
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb P (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 P (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 P 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 P (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 P (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_reflexive < intros.
Subgoal 2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) P1
============================
 exists Q1, oneb P (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 P (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 P 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 P (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 P (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_reflexive < witness P1.
Subgoal 2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) P1
============================
 oneb P (dn X) P1 /\
   (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (P1 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 P (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 P 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 P (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 P (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_reflexive < split.
Subgoal 2.1:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) P1
============================
 oneb P (dn X) P1

Subgoal 2.2 is:
 exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (P1 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 P (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 P 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 P (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 P (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_reflexive < search.
Subgoal 2.2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) P1
============================
 exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (P1 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 P (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 P 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 P (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 P (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_reflexive < witness P1.
Subgoal 2.2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) P1
============================
 exists Q2, forall N, refl_t (P1 N) (P1 N) (P1 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 P (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 P 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 P (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 P (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_reflexive < witness P1.
Subgoal 2.2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) P1
============================
 forall N, refl_t (P1 N) (P1 N) (P1 N) (P1 N) /\
   bisim_up_to refl_t (P1 N) (P1 N) +

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb P (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 P 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 P (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 P (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_reflexive < intros.
Subgoal 2.2:

Variables: P X P1 N
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) P1
============================
 refl_t (P1 N) (P1 N) (P1 N) (P1 N) /\ bisim_up_to refl_t (P1 N) (P1 N) +

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb P (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 P 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 P (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 P (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_reflexive < split.
Subgoal 2.2.1:

Variables: P X P1 N
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) P1
============================
 refl_t (P1 N) (P1 N) (P1 N) (P1 N)

Subgoal 2.2.2 is:
 bisim_up_to refl_t (P1 N) (P1 N) +

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb P (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 P 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 P (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 P (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_reflexive < search.
Subgoal 2.2.2:

Variables: P X P1 N
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) P1
============================
 bisim_up_to refl_t (P1 N) (P1 N) +

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb P (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 P 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 P (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 P (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_reflexive < backchain CH.
Subgoal 3:

Variables: P
CH : forall P, bisim_up_to refl_t P P +
============================
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb P (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 P 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 P (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 P (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_reflexive < intros.
Subgoal 3:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) P1
============================
 exists Q1, oneb P (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 P 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 P (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 P (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_reflexive < witness P1.
Subgoal 3:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) P1
============================
 oneb P (up X) P1 /\
   (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (P1 x) (Q2 x) /\
        bisim_up_to refl_t (P2 x) (Q2 x) +)

Subgoal 4 is:
 forall L Q1, one P 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 P (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 P (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_reflexive < split.
Subgoal 3.1:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) P1
============================
 oneb P (up X) P1

Subgoal 3.2 is:
 exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (P1 x) (Q2 x) /\
   bisim_up_to refl_t (P2 x) (Q2 x) +

Subgoal 4 is:
 forall L Q1, one P 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 P (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 P (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_reflexive < search.
Subgoal 3.2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) P1
============================
 exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (P1 x) (Q2 x) /\
   bisim_up_to refl_t (P2 x) (Q2 x) +

Subgoal 4 is:
 forall L Q1, one P 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 P (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 P (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_reflexive < witness P1.
Subgoal 3.2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) P1
============================
 exists Q2, nabla x, refl_t (P1 x) (P1 x) (P1 x) (Q2 x) /\
   bisim_up_to refl_t (P1 x) (Q2 x) +

Subgoal 4 is:
 forall L Q1, one P 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 P (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 P (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_reflexive < witness P1.
Subgoal 3.2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) P1
============================
 nabla x, refl_t (P1 x) (P1 x) (P1 x) (P1 x) /\
   bisim_up_to refl_t (P1 x) (P1 x) +

Subgoal 4 is:
 forall L Q1, one P 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 P (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 P (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_reflexive < intros.
Subgoal 3.2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) P1
============================
 refl_t (P1 n1) (P1 n1) (P1 n1) (P1 n1) /\
   bisim_up_to refl_t (P1 n1) (P1 n1) +

Subgoal 4 is:
 forall L Q1, one P 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 P (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 P (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_reflexive < split.
Subgoal 3.2.1:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) P1
============================
 refl_t (P1 n1) (P1 n1) (P1 n1) (P1 n1)

Subgoal 3.2.2 is:
 bisim_up_to refl_t (P1 n1) (P1 n1) +

Subgoal 4 is:
 forall L Q1, one P 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 P (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 P (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_reflexive < search.
Subgoal 3.2.2:

Variables: P X P1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) P1
============================
 bisim_up_to refl_t (P1 n1) (P1 n1) +

Subgoal 4 is:
 forall L Q1, one P 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 P (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 P (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_reflexive < backchain CH.
Subgoal 4:

Variables: P
CH : forall P, bisim_up_to refl_t P P +
============================
 forall L Q1, one P 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 P (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 P (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_reflexive < intros.
Subgoal 4:

Variables: P L Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P 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 P (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 P (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_reflexive < witness Q1.
Subgoal 4:

Variables: P L Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L Q1
============================
 one P L Q1 /\
   (exists P2 Q2, refl_t Q1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 5 is:
 forall X Q1, oneb P (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 P (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_reflexive < split.
Subgoal 4.1:

Variables: P L Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L Q1
============================
 one P L Q1

Subgoal 4.2 is:
 exists P2 Q2, refl_t Q1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +

Subgoal 5 is:
 forall X Q1, oneb P (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 P (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_reflexive < search.
Subgoal 4.2:

Variables: P L Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L Q1
============================
 exists P2 Q2, refl_t Q1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +

Subgoal 5 is:
 forall X Q1, oneb P (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 P (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_reflexive < witness Q1.
Subgoal 4.2:

Variables: P L Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L Q1
============================
 exists Q2, refl_t Q1 Q1 Q1 Q2 /\ bisim_up_to refl_t Q1 Q2 +

Subgoal 5 is:
 forall X Q1, oneb P (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 P (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_reflexive < witness Q1.
Subgoal 4.2:

Variables: P L Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L Q1
============================
 refl_t Q1 Q1 Q1 Q1 /\ bisim_up_to refl_t Q1 Q1 +

Subgoal 5 is:
 forall X Q1, oneb P (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 P (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_reflexive < intros.
Subgoal 4.2:

Variables: P L Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L Q1
============================
 refl_t Q1 Q1 Q1 Q1 /\ bisim_up_to refl_t Q1 Q1 +

Subgoal 5 is:
 forall X Q1, oneb P (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 P (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_reflexive < split.
Subgoal 4.2.1:

Variables: P L Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L Q1
============================
 refl_t Q1 Q1 Q1 Q1

Subgoal 4.2.2 is:
 bisim_up_to refl_t Q1 Q1 +

Subgoal 5 is:
 forall X Q1, oneb P (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 P (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_reflexive < search.
Subgoal 4.2.2:

Variables: P L Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : one P L Q1
============================
 bisim_up_to refl_t Q1 Q1 +

Subgoal 5 is:
 forall X Q1, oneb P (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 P (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_reflexive < backchain CH.
Subgoal 5:

Variables: P
CH : forall P, bisim_up_to refl_t P P +
============================
 forall X Q1, oneb P (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 P (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_reflexive < intros.
Subgoal 5:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (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 P (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_reflexive < witness Q1.
Subgoal 5:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) Q1
============================
 oneb P (dn X) Q1 /\
   (exists P2 Q2, forall N, refl_t (Q1 N) (P2 N) (Q1 N) (Q2 N) /\
        bisim_up_to refl_t (P2 N) (Q2 N) +)

Subgoal 6 is:
 forall X Q1, oneb P (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_reflexive < split.
Subgoal 5.1:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) Q1
============================
 oneb P (dn X) Q1

Subgoal 5.2 is:
 exists P2 Q2, forall N, refl_t (Q1 N) (P2 N) (Q1 N) (Q2 N) /\
   bisim_up_to refl_t (P2 N) (Q2 N) +

Subgoal 6 is:
 forall X Q1, oneb P (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_reflexive < search.
Subgoal 5.2:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) Q1
============================
 exists P2 Q2, forall N, refl_t (Q1 N) (P2 N) (Q1 N) (Q2 N) /\
   bisim_up_to refl_t (P2 N) (Q2 N) +

Subgoal 6 is:
 forall X Q1, oneb P (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_reflexive < witness Q1.
Subgoal 5.2:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) Q1
============================
 exists Q2, forall N, refl_t (Q1 N) (Q1 N) (Q1 N) (Q2 N) /\
   bisim_up_to refl_t (Q1 N) (Q2 N) +

Subgoal 6 is:
 forall X Q1, oneb P (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_reflexive < witness Q1.
Subgoal 5.2:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) Q1
============================
 forall N, refl_t (Q1 N) (Q1 N) (Q1 N) (Q1 N) /\
   bisim_up_to refl_t (Q1 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (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_reflexive < intros.
Subgoal 5.2:

Variables: P X Q1 N
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) Q1
============================
 refl_t (Q1 N) (Q1 N) (Q1 N) (Q1 N) /\ bisim_up_to refl_t (Q1 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (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_reflexive < split.
Subgoal 5.2.1:

Variables: P X Q1 N
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) Q1
============================
 refl_t (Q1 N) (Q1 N) (Q1 N) (Q1 N)

Subgoal 5.2.2 is:
 bisim_up_to refl_t (Q1 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (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_reflexive < search.
Subgoal 5.2.2:

Variables: P X Q1 N
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (dn X) Q1
============================
 bisim_up_to refl_t (Q1 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (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_reflexive < backchain CH.
Subgoal 6:

Variables: P
CH : forall P, bisim_up_to refl_t P P +
============================
 forall X Q1, oneb P (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_reflexive < intros.
Subgoal 6:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (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_reflexive < witness Q1.
Subgoal 6:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) Q1
============================
 oneb P (up X) Q1 /\
   (exists P2 Q2, nabla x, refl_t (Q1 x) (P2 x) (Q1 x) (Q2 x) /\
        bisim_up_to refl_t (P2 x) (Q2 x) +)

bisim_reflexive < split.
Subgoal 6.1:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) Q1
============================
 oneb P (up X) Q1

Subgoal 6.2 is:
 exists P2 Q2, nabla x, refl_t (Q1 x) (P2 x) (Q1 x) (Q2 x) /\
   bisim_up_to refl_t (P2 x) (Q2 x) +

bisim_reflexive < search.
Subgoal 6.2:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) Q1
============================
 exists P2 Q2, nabla x, refl_t (Q1 x) (P2 x) (Q1 x) (Q2 x) /\
   bisim_up_to refl_t (P2 x) (Q2 x) +

bisim_reflexive < witness Q1.
Subgoal 6.2:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) Q1
============================
 exists Q2, nabla x, refl_t (Q1 x) (Q1 x) (Q1 x) (Q2 x) /\
   bisim_up_to refl_t (Q1 x) (Q2 x) +

bisim_reflexive < witness Q1.
Subgoal 6.2:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) Q1
============================
 nabla x, refl_t (Q1 x) (Q1 x) (Q1 x) (Q1 x) /\
   bisim_up_to refl_t (Q1 x) (Q1 x) +

bisim_reflexive < intros.
Subgoal 6.2:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) Q1
============================
 refl_t (Q1 n1) (Q1 n1) (Q1 n1) (Q1 n1) /\
   bisim_up_to refl_t (Q1 n1) (Q1 n1) +

bisim_reflexive < split.
Subgoal 6.2.1:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) Q1
============================
 refl_t (Q1 n1) (Q1 n1) (Q1 n1) (Q1 n1)

Subgoal 6.2.2 is:
 bisim_up_to refl_t (Q1 n1) (Q1 n1) +

bisim_reflexive < search.
Subgoal 6.2.2:

Variables: P X Q1
CH : forall P, bisim_up_to refl_t P P +
H1 : oneb P (up X) Q1
============================
 bisim_up_to refl_t (Q1 n1) (Q1 n1) +

bisim_reflexive < backchain CH.
Proof completed.
Abella < Theorem bisim_eq_1L : 
forall P1 P2 Q, bisim_up_to refl_t P1 Q -> P1 = P2 -> bisim_up_to refl_t P2 Q.


============================
 forall P1 P2 Q, bisim_up_to refl_t P1 Q -> P1 = P2 ->
   bisim_up_to refl_t P2 Q

bisim_eq_1L < intros.

Variables: P1 P2 Q
H1 : bisim_up_to refl_t P1 Q
H2 : P1 = P2
============================
 bisim_up_to refl_t P2 Q

bisim_eq_1L < case H2.

Variables: P2 Q
H1 : bisim_up_to refl_t P2 Q
============================
 bisim_up_to refl_t P2 Q

bisim_eq_1L < search.
Proof completed.
Abella < Theorem bisim_eq_1R : 
forall P1 P2 Q, bisim_up_to refl_t P2 Q -> P1 = P2 -> bisim_up_to refl_t P1 Q.


============================
 forall P1 P2 Q, bisim_up_to refl_t P2 Q -> P1 = P2 ->
   bisim_up_to refl_t P1 Q

bisim_eq_1R < intros.

Variables: P1 P2 Q
H1 : bisim_up_to refl_t P2 Q
H2 : P1 = P2
============================
 bisim_up_to refl_t P1 Q

bisim_eq_1R < case H2.

Variables: P2 Q
H1 : bisim_up_to refl_t P2 Q
============================
 bisim_up_to refl_t P2 Q

bisim_eq_1R < search.
Proof completed.
Abella < Theorem bisim_eq_2L : 
forall P Q1 Q2, bisim_up_to refl_t P Q1 -> Q1 = Q2 -> bisim_up_to refl_t P Q2.


============================
 forall P Q1 Q2, bisim_up_to refl_t P Q1 -> Q1 = Q2 ->
   bisim_up_to refl_t P Q2

bisim_eq_2L < intros.

Variables: P Q1 Q2
H1 : bisim_up_to refl_t P Q1
H2 : Q1 = Q2
============================
 bisim_up_to refl_t P Q2

bisim_eq_2L < case H2.

Variables: P Q2
H1 : bisim_up_to refl_t P Q2
============================
 bisim_up_to refl_t P Q2

bisim_eq_2L < search.
Proof completed.
Abella < Theorem bisim_eq_2R : 
forall P Q1 Q2, bisim_up_to refl_t P Q2 -> Q1 = Q2 -> bisim_up_to refl_t P Q1.


============================
 forall P Q1 Q2, bisim_up_to refl_t P Q2 -> Q1 = Q2 ->
   bisim_up_to refl_t P Q1

bisim_eq_2R < intros.

Variables: P Q1 Q2
H1 : bisim_up_to refl_t P Q2
H2 : Q1 = Q2
============================
 bisim_up_to refl_t P Q1

bisim_eq_2R < case H2.

Variables: P Q2
H1 : bisim_up_to refl_t P Q2
============================
 bisim_up_to refl_t P Q2

bisim_eq_2R < search.
Proof completed.
Abella < Theorem bisim_symmetric : 
forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P.


============================
 forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P

bisim_symmetric < coinduction.

CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
============================
 forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P #

bisim_symmetric < intros.

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H1 : bisim_up_to refl_t P Q
============================
 bisim_up_to refl_t Q P #

bisim_symmetric < Bis1 : case H1.

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
Bis4 : forall L Q2, one Q L Q2 ->
         (exists P2, one P L P2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 bisim_up_to refl_t Q P #

bisim_symmetric < unfold.
Subgoal 1:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
Bis4 : forall L Q2, one Q L Q2 ->
         (exists P2, one P L P2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 forall L P1, one Q L P1 ->
   (exists Q1, one P 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 Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < clear Bis1 Bis2 Bis3 Bis5 Bis6.
Subgoal 1:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis4 : forall L Q2, one Q L Q2 ->
         (exists P2, one P L P2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
============================
 forall L P1, one Q L P1 ->
   (exists Q1, one P 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 Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < intros.
Subgoal 1:

Variables: P Q L P1
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis4 : forall L Q2, one Q L Q2 ->
         (exists P2, one P L P2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one Q L P1
============================
 exists Q1, one P 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 Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply *Bis4 to *H2.
Subgoal 1:

Variables: P Q L P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H3 : one P L P2
H4 : refl_t P2 P3 P1 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 exists Q1, one P 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 Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness P2.
Subgoal 1:

Variables: P Q L P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H3 : one P L P2
H4 : refl_t P2 P3 P1 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 one P L P2 /\
   (exists P3 Q2, refl_t P1 P3 P2 Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2 is:
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 1.1:

Variables: P Q L P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H3 : one P L P2
H4 : refl_t P2 P3 P1 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 one P L P2

Subgoal 1.2 is:
 exists P3 Q2, refl_t P1 P3 P2 Q2 /\ bisim_up_to refl_t P3 Q2 +

Subgoal 2 is:
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 1.2:

Variables: P Q L P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H3 : one P L P2
H4 : refl_t P2 P3 P1 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 exists P3 Q2, refl_t P1 P3 P2 Q2 /\ bisim_up_to refl_t P3 Q2 +

Subgoal 2 is:
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness P1.
Subgoal 1.2:

Variables: P Q L P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H3 : one P L P2
H4 : refl_t P2 P3 P1 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 exists Q2, refl_t P1 P1 P2 Q2 /\ bisim_up_to refl_t P1 Q2 +

Subgoal 2 is:
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness P2.
Subgoal 1.2:

Variables: P Q L P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H3 : one P L P2
H4 : refl_t P2 P3 P1 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 refl_t P1 P1 P2 P2 /\ bisim_up_to refl_t P1 P2 +

Subgoal 2 is:
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < case H4.
Subgoal 1.2:

Variables: P Q L P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H3 : one P L P3
H5 : bisim_up_to refl_t P3 Q3
============================
 refl_t Q3 Q3 P3 P3 /\ bisim_up_to refl_t Q3 P3 +

Subgoal 2 is:
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 1.2.1:

Variables: P Q L P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H3 : one P L P3
H5 : bisim_up_to refl_t P3 Q3
============================
 refl_t Q3 Q3 P3 P3

Subgoal 1.2.2 is:
 bisim_up_to refl_t Q3 P3 +

Subgoal 2 is:
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 1.2.2:

Variables: P Q L P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
H3 : one P L P3
H5 : bisim_up_to refl_t P3 Q3
============================
 bisim_up_to refl_t Q3 P3 +

Subgoal 2 is:
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < backchain CH.
Subgoal 2:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
Bis4 : forall L Q2, one Q L Q2 ->
         (exists P2, one P L P2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < clear Bis1 Bis2 Bis3 Bis4 Bis6.
Subgoal 2:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
============================
 forall X P1, oneb Q (dn X) P1 ->
   (exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < intros.
Subgoal 2:

Variables: P Q X P1
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
============================
 exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply Bis5 to H2.
Subgoal 2:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H4 : forall N, refl_t (P2 N) (P3 N) (P1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 exists Q1, oneb P (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 Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness P2.
Subgoal 2:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H4 : forall N, refl_t (P2 N) (P3 N) (P1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 oneb P (dn X) P2 /\
   (exists P3 Q2, forall N, refl_t (P1 N) (P3 N) (P2 N) (Q2 N) /\
        bisim_up_to refl_t (P3 N) (Q2 N) +)

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 2.1:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H4 : forall N, refl_t (P2 N) (P3 N) (P1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 oneb P (dn X) P2

Subgoal 2.2 is:
 exists P3 Q2, forall N, refl_t (P1 N) (P3 N) (P2 N) (Q2 N) /\
   bisim_up_to refl_t (P3 N) (Q2 N) +

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 2.2:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H4 : forall N, refl_t (P2 N) (P3 N) (P1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 exists P3 Q2, forall N, refl_t (P1 N) (P3 N) (P2 N) (Q2 N) /\
   bisim_up_to refl_t (P3 N) (Q2 N) +

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness P1.
Subgoal 2.2:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H4 : forall N, refl_t (P2 N) (P3 N) (P1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 exists Q2, forall N, refl_t (P1 N) (P1 N) (P2 N) (Q2 N) /\
   bisim_up_to refl_t (P1 N) (Q2 N) +

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness P2.
Subgoal 2.2:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H4 : forall N, refl_t (P2 N) (P3 N) (P1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 forall N, refl_t (P1 N) (P1 N) (P2 N) (P2 N) /\
   bisim_up_to refl_t (P1 N) (P2 N) +

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < intros.
Subgoal 2.2:

Variables: P Q X P1 P2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H4 : forall N, refl_t (P2 N) (P3 N) (P1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 refl_t (P1 N) (P1 N) (P2 N) (P2 N) /\ bisim_up_to refl_t (P1 N) (P2 N) +

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply *H4 with N = N.
Subgoal 2.2:

Variables: P Q X P1 P2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H5 : refl_t (P2 N) (P3 N) (P1 N) (Q3 N)
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
============================
 refl_t (P1 N) (P1 N) (P2 N) (P2 N) /\ bisim_up_to refl_t (P1 N) (P2 N) +

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < case H5.
Subgoal 2.2:

Variables: P Q X P1 P2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
H7 : P1 N = Q3 N
H8 : P2 N = P3 N
============================
 refl_t (P1 N) (P1 N) (P2 N) (P2 N) /\ bisim_up_to refl_t (P1 N) (P2 N) +

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 2.2.1:

Variables: P Q X P1 P2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
H7 : P1 N = Q3 N
H8 : P2 N = P3 N
============================
 refl_t (P1 N) (P1 N) (P2 N) (P2 N)

Subgoal 2.2.2 is:
 bisim_up_to refl_t (P1 N) (P2 N) +

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 2.2.2:

Variables: P Q X P1 P2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
H7 : P1 N = Q3 N
H8 : P2 N = P3 N
============================
 bisim_up_to refl_t (P1 N) (P2 N) +

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < backchain CH.
Subgoal 2.2.2:

Variables: P Q X P1 P2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
H7 : P1 N = Q3 N
H8 : P2 N = P3 N
============================
 bisim_up_to refl_t (P2 N) (P1 N)

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply bisim_eq_1R to *H6 *H8.
Subgoal 2.2.2:

Variables: P Q X P1 P2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H7 : P1 N = Q3 N
H9 : bisim_up_to refl_t (P2 N) (Q3 N)
============================
 bisim_up_to refl_t (P2 N) (P1 N)

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply bisim_eq_2R to *H9 *H7.
Subgoal 2.2.2:

Variables: P Q X P1 P2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb Q (dn X) P1
H3 : oneb P (dn X) P2
H10 : bisim_up_to refl_t (P2 N) (P1 N)
============================
 bisim_up_to refl_t (P2 N) (P1 N)

Subgoal 3 is:
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 3:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
Bis4 : forall L Q2, one Q L Q2 ->
         (exists P2, one P L P2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < clear Bis1 Bis2 Bis3 Bis4 Bis5.
Subgoal 3:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 forall X P1, oneb Q (up X) P1 ->
   (exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < intros.
Subgoal 3:

Variables: P Q X P1
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) P1
============================
 exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply Bis6 to H2.
Subgoal 3:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) P1
H3 : oneb P (up X) P2
H4 : refl_t (P2 n1) (P3 n1) (P1 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 exists Q1, oneb P (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 P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness P2.
Subgoal 3:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) P1
H3 : oneb P (up X) P2
H4 : refl_t (P2 n1) (P3 n1) (P1 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 oneb P (up X) P2 /\
   (exists P3 Q2, nabla x, refl_t (P1 x) (P3 x) (P2 x) (Q2 x) /\
        bisim_up_to refl_t (P3 x) (Q2 x) +)

Subgoal 4 is:
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 3.1:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) P1
H3 : oneb P (up X) P2
H4 : refl_t (P2 n1) (P3 n1) (P1 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 oneb P (up X) P2

Subgoal 3.2 is:
 exists P3 Q2, nabla x, refl_t (P1 x) (P3 x) (P2 x) (Q2 x) /\
   bisim_up_to refl_t (P3 x) (Q2 x) +

Subgoal 4 is:
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 3.2:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) P1
H3 : oneb P (up X) P2
H4 : refl_t (P2 n1) (P3 n1) (P1 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 exists P3 Q2, nabla x, refl_t (P1 x) (P3 x) (P2 x) (Q2 x) /\
   bisim_up_to refl_t (P3 x) (Q2 x) +

Subgoal 4 is:
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness P1.
Subgoal 3.2:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) P1
H3 : oneb P (up X) P2
H4 : refl_t (P2 n1) (P3 n1) (P1 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 exists Q2, nabla x, refl_t (P1 x) (P1 x) (P2 x) (Q2 x) /\
   bisim_up_to refl_t (P1 x) (Q2 x) +

Subgoal 4 is:
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness P2.
Subgoal 3.2:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) P1
H3 : oneb P (up X) P2
H4 : refl_t (P2 n1) (P3 n1) (P1 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 nabla x, refl_t (P1 x) (P1 x) (P2 x) (P2 x) /\
   bisim_up_to refl_t (P1 x) (P2 x) +

Subgoal 4 is:
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < intros.
Subgoal 3.2:

Variables: P Q X P1 P2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) P1
H3 : oneb P (up X) P2
H4 : refl_t (P2 n1) (P3 n1) (P1 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 refl_t (P1 n1) (P1 n1) (P2 n1) (P2 n1) /\
   bisim_up_to refl_t (P1 n1) (P2 n1) +

Subgoal 4 is:
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < case H4.
Subgoal 3.2:

Variables: P Q X P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) (z1\Q3 z1)
H3 : oneb P (up X) (z1\P3 z1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 refl_t (Q3 n1) (Q3 n1) (P3 n1) (P3 n1) /\
   bisim_up_to refl_t (Q3 n1) (P3 n1) +

Subgoal 4 is:
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 3.2.1:

Variables: P Q X P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) (z1\Q3 z1)
H3 : oneb P (up X) (z1\P3 z1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 refl_t (Q3 n1) (Q3 n1) (P3 n1) (P3 n1)

Subgoal 3.2.2 is:
 bisim_up_to refl_t (Q3 n1) (P3 n1) +

Subgoal 4 is:
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 3.2.2:

Variables: P Q X P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb Q (up X) (z1\Q3 z1)
H3 : oneb P (up X) (z1\P3 z1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 bisim_up_to refl_t (Q3 n1) (P3 n1) +

Subgoal 4 is:
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < backchain CH.
Subgoal 4:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
Bis4 : forall L Q2, one Q L Q2 ->
         (exists P2, one P L P2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < clear Bis2 Bis3 Bis4 Bis5 Bis6.
Subgoal 4:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
============================
 forall L Q1, one P L Q1 ->
   (exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < intros.
Subgoal 4:

Variables: P Q L Q1
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L Q1
============================
 exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply Bis1 to H2.
Subgoal 4:

Variables: P Q L Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L Q1
H3 : one Q L Q2
H4 : refl_t Q1 P3 Q2 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 exists P1, one Q 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 P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness Q2.
Subgoal 4:

Variables: P Q L Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L Q1
H3 : one Q L Q2
H4 : refl_t Q1 P3 Q2 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 one Q L Q2 /\
   (exists P2 Q3, refl_t Q2 P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 5 is:
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 4.1:

Variables: P Q L Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L Q1
H3 : one Q L Q2
H4 : refl_t Q1 P3 Q2 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 one Q L Q2

Subgoal 4.2 is:
 exists P2 Q3, refl_t Q2 P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +

Subgoal 5 is:
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 4.2:

Variables: P Q L Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L Q1
H3 : one Q L Q2
H4 : refl_t Q1 P3 Q2 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 exists P2 Q3, refl_t Q2 P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +

Subgoal 5 is:
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness Q2.
Subgoal 4.2:

Variables: P Q L Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L Q1
H3 : one Q L Q2
H4 : refl_t Q1 P3 Q2 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 exists Q3, refl_t Q2 Q2 Q1 Q3 /\ bisim_up_to refl_t Q2 Q3 +

Subgoal 5 is:
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness Q1.
Subgoal 4.2:

Variables: P Q L Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L Q1
H3 : one Q L Q2
H4 : refl_t Q1 P3 Q2 Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 refl_t Q2 Q2 Q1 Q1 /\ bisim_up_to refl_t Q2 Q1 +

Subgoal 5 is:
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < case H4.
Subgoal 4.2:

Variables: P Q L P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L P3
H3 : one Q L Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 refl_t Q3 Q3 P3 P3 /\ bisim_up_to refl_t Q3 P3 +

Subgoal 5 is:
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 4.2.1:

Variables: P Q L P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L P3
H3 : one Q L Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 refl_t Q3 Q3 P3 P3

Subgoal 4.2.2 is:
 bisim_up_to refl_t Q3 P3 +

Subgoal 5 is:
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 4.2.2:

Variables: P Q L P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
H2 : one P L P3
H3 : one Q L Q3
H5 : bisim_up_to refl_t P3 Q3
============================
 bisim_up_to refl_t Q3 P3 +

Subgoal 5 is:
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < backchain CH.
Subgoal 5:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
Bis4 : forall L Q2, one Q L Q2 ->
         (exists P2, one P L P2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < clear Bis1 Bis3 Bis4 Bis5 Bis6.
Subgoal 5:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
============================
 forall X Q1, oneb P (dn X) Q1 ->
   (exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < intros.
Subgoal 5:

Variables: P Q X Q1
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
============================
 exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply Bis2 to H2.
Subgoal 5:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H4 : forall N, refl_t (Q1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 exists P1, oneb Q (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 P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness Q2.
Subgoal 5:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H4 : forall N, refl_t (Q1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 oneb Q (dn X) Q2 /\
   (exists P2 Q3, forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q3 N) /\
        bisim_up_to refl_t (P2 N) (Q3 N) +)

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 5.1:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H4 : forall N, refl_t (Q1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 oneb Q (dn X) Q2

Subgoal 5.2 is:
 exists P2 Q3, forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q3 N) /\
   bisim_up_to refl_t (P2 N) (Q3 N) +

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 5.2:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H4 : forall N, refl_t (Q1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 exists P2 Q3, forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q3 N) /\
   bisim_up_to refl_t (P2 N) (Q3 N) +

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness Q2.
Subgoal 5.2:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H4 : forall N, refl_t (Q1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 exists Q3, forall N, refl_t (Q2 N) (Q2 N) (Q1 N) (Q3 N) /\
   bisim_up_to refl_t (Q2 N) (Q3 N) +

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < witness Q1.
Subgoal 5.2:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H4 : forall N, refl_t (Q1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 forall N, refl_t (Q2 N) (Q2 N) (Q1 N) (Q1 N) /\
   bisim_up_to refl_t (Q2 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < intros.
Subgoal 5.2:

Variables: P Q X Q1 Q2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H4 : forall N, refl_t (Q1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 refl_t (Q2 N) (Q2 N) (Q1 N) (Q1 N) /\ bisim_up_to refl_t (Q2 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply *H4 with N = N.
Subgoal 5.2:

Variables: P Q X Q1 Q2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H5 : refl_t (Q1 N) (P3 N) (Q2 N) (Q3 N)
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
============================
 refl_t (Q2 N) (Q2 N) (Q1 N) (Q1 N) /\ bisim_up_to refl_t (Q2 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < case H5.
Subgoal 5.2:

Variables: P Q X Q1 Q2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
H7 : Q2 N = Q3 N
H8 : Q1 N = P3 N
============================
 refl_t (Q2 N) (Q2 N) (Q1 N) (Q1 N) /\ bisim_up_to refl_t (Q2 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < split.
Subgoal 5.2.1:

Variables: P Q X Q1 Q2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
H7 : Q2 N = Q3 N
H8 : Q1 N = P3 N
============================
 refl_t (Q2 N) (Q2 N) (Q1 N) (Q1 N)

Subgoal 5.2.2 is:
 bisim_up_to refl_t (Q2 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 5.2.2:

Variables: P Q X Q1 Q2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
H7 : Q2 N = Q3 N
H8 : Q1 N = P3 N
============================
 bisim_up_to refl_t (Q2 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < backchain CH.
Subgoal 5.2.2:

Variables: P Q X Q1 Q2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H6 : bisim_up_to refl_t (P3 N) (Q3 N)
H7 : Q2 N = Q3 N
H8 : Q1 N = P3 N
============================
 bisim_up_to refl_t (Q1 N) (Q2 N)

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply bisim_eq_1R to *H6 *H8.
Subgoal 5.2.2:

Variables: P Q X Q1 Q2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H7 : Q2 N = Q3 N
H9 : bisim_up_to refl_t (Q1 N) (Q3 N)
============================
 bisim_up_to refl_t (Q1 N) (Q2 N)

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < apply bisim_eq_2R to *H9 *H7.
Subgoal 5.2.2:

Variables: P Q X Q1 Q2 P3 Q3 N
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
H2 : oneb P (dn X) Q1
H3 : oneb Q (dn X) Q2
H10 : bisim_up_to refl_t (Q1 N) (Q2 N)
============================
 bisim_up_to refl_t (Q1 N) (Q2 N)

Subgoal 6 is:
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < search.
Subgoal 6:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis1 : forall L P2, one P L P2 ->
         (exists Q2, one Q L Q2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis2 : forall X P2, oneb P (dn X) P2 ->
         (exists Q2, oneb Q (dn X) Q2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
Bis4 : forall L Q2, one Q L Q2 ->
         (exists P2, one P L P2 /\
              (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Bis5 : forall X Q2, oneb Q (dn X) Q2 ->
         (exists P2, oneb P (dn X) P2 /\
              (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                   bisim_up_to refl_t (P3 N) (Q3 N)))
Bis6 : forall X Q2, oneb Q (up X) Q2 ->
         (exists P2, oneb P (up X) P2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < clear Bis1 Bis2 Bis4 Bis5 Bis6.
Subgoal 6:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 forall X Q1, oneb P (up X) Q1 ->
   (exists P1, oneb Q (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_symmetric < intros.
Subgoal 6:

Variables: P Q X Q1
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) Q1
============================
 exists P1, oneb Q (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_symmetric < apply Bis3 to H2.
Subgoal 6:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) Q1
H3 : oneb Q (up X) Q2
H4 : refl_t (Q1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 exists P1, oneb Q (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_symmetric < witness Q2.
Subgoal 6:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) Q1
H3 : oneb Q (up X) Q2
H4 : refl_t (Q1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 oneb Q (up X) Q2 /\
   (exists P2 Q3, nabla x, refl_t (Q2 x) (P2 x) (Q1 x) (Q3 x) /\
        bisim_up_to refl_t (P2 x) (Q3 x) +)

bisim_symmetric < split.
Subgoal 6.1:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) Q1
H3 : oneb Q (up X) Q2
H4 : refl_t (Q1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 oneb Q (up X) Q2

Subgoal 6.2 is:
 exists P2 Q3, nabla x, refl_t (Q2 x) (P2 x) (Q1 x) (Q3 x) /\
   bisim_up_to refl_t (P2 x) (Q3 x) +

bisim_symmetric < search.
Subgoal 6.2:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) Q1
H3 : oneb Q (up X) Q2
H4 : refl_t (Q1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 exists P2 Q3, nabla x, refl_t (Q2 x) (P2 x) (Q1 x) (Q3 x) /\
   bisim_up_to refl_t (P2 x) (Q3 x) +

bisim_symmetric < witness Q2.
Subgoal 6.2:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) Q1
H3 : oneb Q (up X) Q2
H4 : refl_t (Q1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 exists Q3, nabla x, refl_t (Q2 x) (Q2 x) (Q1 x) (Q3 x) /\
   bisim_up_to refl_t (Q2 x) (Q3 x) +

bisim_symmetric < witness Q1.
Subgoal 6.2:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) Q1
H3 : oneb Q (up X) Q2
H4 : refl_t (Q1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 nabla x, refl_t (Q2 x) (Q2 x) (Q1 x) (Q1 x) /\
   bisim_up_to refl_t (Q2 x) (Q1 x) +

bisim_symmetric < intros.
Subgoal 6.2:

Variables: P Q X Q1 Q2 P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) Q1
H3 : oneb Q (up X) Q2
H4 : refl_t (Q1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 refl_t (Q2 n1) (Q2 n1) (Q1 n1) (Q1 n1) /\
   bisim_up_to refl_t (Q2 n1) (Q1 n1) +

bisim_symmetric < case H4.
Subgoal 6.2:

Variables: P Q X P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) (z1\P3 z1)
H3 : oneb Q (up X) (z1\Q3 z1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 refl_t (Q3 n1) (Q3 n1) (P3 n1) (P3 n1) /\
   bisim_up_to refl_t (Q3 n1) (P3 n1) +

bisim_symmetric < split.
Subgoal 6.2.1:

Variables: P Q X P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) (z1\P3 z1)
H3 : oneb Q (up X) (z1\Q3 z1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 refl_t (Q3 n1) (Q3 n1) (P3 n1) (P3 n1)

Subgoal 6.2.2 is:
 bisim_up_to refl_t (Q3 n1) (P3 n1) +

bisim_symmetric < search.
Subgoal 6.2.2:

Variables: P Q X P3 Q3
CH : forall P Q, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q P +
Bis3 : forall X P2, oneb P (up X) P2 ->
         (exists Q2, oneb Q (up X) Q2 /\
              (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                   bisim_up_to refl_t (P3 x) (Q3 x)))
H2 : oneb P (up X) (z1\P3 z1)
H3 : oneb Q (up X) (z1\Q3 z1)
H5 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 bisim_up_to refl_t (Q3 n1) (P3 n1) +

bisim_symmetric < backchain CH.
Proof completed.
Abella < Theorem bisim_transitive : 
forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
  bisim_up_to refl_t P R.


============================
 forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
   bisim_up_to refl_t P R

bisim_transitive < coinduction.

CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
============================
 forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
   bisim_up_to refl_t P R #

bisim_transitive < intros.

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
H1 : bisim_up_to refl_t P Q
H2 : bisim_up_to refl_t Q R
============================
 bisim_up_to refl_t P R #

bisim_transitive < Left1 : case H1.

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
H2 : bisim_up_to refl_t Q R
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 bisim_up_to refl_t P R #

bisim_transitive < Right1 : case H2.

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 bisim_up_to refl_t P R #

bisim_transitive < unfold.
Subgoal 1:

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 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 +))

Subgoal 2 is:
 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < intros.
Subgoal 1:

Variables: P Q R L P1
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H3 : 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 +)

Subgoal 2 is:
 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply Left1 to *H3.
Subgoal 1:

Variables: P Q R L P1 Q2 P3 Q3
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H4 : one Q L Q2
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
============================
 exists Q1, one R 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 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply Right1 to *H4.
Subgoal 1:

Variables: P Q R L P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one R L Q1
H8 : refl_t Q2 P2 Q1 Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 exists Q1, one R 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 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness Q1.
Subgoal 1:

Variables: P Q R L P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one R L Q1
H8 : refl_t Q2 P2 Q1 Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 one R 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 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < split.
Subgoal 1.1:

Variables: P Q R L P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one R L Q1
H8 : refl_t Q2 P2 Q1 Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 one R L Q1

Subgoal 1.2 is:
 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 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < search.
Subgoal 1.2:

Variables: P Q R L P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one R L Q1
H8 : refl_t Q2 P2 Q1 Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 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 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness P1.
Subgoal 1.2:

Variables: P Q R L P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one R L Q1
H8 : refl_t Q2 P2 Q1 Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 exists Q2, refl_t P1 P1 Q1 Q2 /\ bisim_up_to refl_t P1 Q2 +

Subgoal 2 is:
 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness Q1.
Subgoal 1.2:

Variables: P Q R L P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one R L Q1
H8 : refl_t Q2 P2 Q1 Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 refl_t P1 P1 Q1 Q1 /\ bisim_up_to refl_t P1 Q1 +

Subgoal 2 is:
 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < split.
Subgoal 1.2.1:

Variables: P Q R L P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one R L Q1
H8 : refl_t Q2 P2 Q1 Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 refl_t P1 P1 Q1 Q1

Subgoal 1.2.2 is:
 bisim_up_to refl_t P1 Q1 +

Subgoal 2 is:
 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < search.
Subgoal 1.2.2:

Variables: P Q R L P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one R L Q1
H8 : refl_t Q2 P2 Q1 Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 bisim_up_to refl_t P1 Q1 +

Subgoal 2 is:
 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < case H5.
Subgoal 1.2.2:

Variables: P Q R L P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : bisim_up_to refl_t P3 Q3
H7 : one R L Q1
H8 : refl_t Q3 P2 Q1 Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 bisim_up_to refl_t P3 Q1 +

Subgoal 2 is:
 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < case H8.
Subgoal 1.2.2:

Variables: P Q R L P3 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : bisim_up_to refl_t P3 P2
H7 : one R L Q4
H9 : bisim_up_to refl_t P2 Q4
============================
 bisim_up_to refl_t P3 Q4 +

Subgoal 2 is:
 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < backchain CH.
Subgoal 2:

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 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) +))

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < intros.
Subgoal 2:

Variables: P Q R X P1
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H3 : 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) +)

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply Left2 to *H3.
Subgoal 2:

Variables: P Q R X P1 Q2 P3 Q3
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H4 : oneb Q (dn X) Q2
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
============================
 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) +)

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply Right2 to *H4.
Subgoal 2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
============================
 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) +)

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness Q1.
Subgoal 2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
============================
 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) +)

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < split.
Subgoal 2.1:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
============================
 oneb R (dn X) Q1

Subgoal 2.2 is:
 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 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < search.
Subgoal 2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
============================
 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 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness P1.
Subgoal 2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
============================
 exists Q2, forall N, refl_t (P1 N) (P1 N) (Q1 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 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness Q1.
Subgoal 2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
============================
 forall N, refl_t (P1 N) (P1 N) (Q1 N) (Q1 N) /\
   bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < intros.
Subgoal 2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
============================
 refl_t (P1 N) (P1 N) (Q1 N) (Q1 N) /\ bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < split.
Subgoal 2.2.1:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
============================
 refl_t (P1 N) (P1 N) (Q1 N) (Q1 N)

Subgoal 2.2.2 is:
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < search.
Subgoal 2.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P1 N) (P3 N) (Q2 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply *H5 with N = N.
Subgoal 2.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb R (dn X) Q1
H7 : forall N, refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N) /\
       bisim_up_to refl_t (P2 N) (Q4 N)
H8 : refl_t (P1 N) (P3 N) (Q2 N) (Q3 N)
H9 : bisim_up_to refl_t (P3 N) (Q3 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply *H7 with N = N.
Subgoal 2.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb R (dn X) Q1
H8 : refl_t (P1 N) (P3 N) (Q2 N) (Q3 N)
H9 : bisim_up_to refl_t (P3 N) (Q3 N)
H10 : refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N)
H11 : bisim_up_to refl_t (P2 N) (Q4 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < case H8.
Subgoal 2.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb R (dn X) Q1
H9 : bisim_up_to refl_t (P3 N) (Q3 N)
H10 : refl_t (Q2 N) (P2 N) (Q1 N) (Q4 N)
H11 : bisim_up_to refl_t (P2 N) (Q4 N)
H12 : Q2 N = Q3 N
H13 : P1 N = P3 N
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < case H10.
Subgoal 2.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb R (dn X) Q1
H9 : bisim_up_to refl_t (P3 N) (Q3 N)
H11 : bisim_up_to refl_t (P2 N) (Q4 N)
H12 : Q2 N = Q3 N
H13 : P1 N = P3 N
H14 : Q1 N = Q4 N
H15 : Q2 N = P2 N
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply bisim_eq_1R to *H9 *H13.
Subgoal 2.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb R (dn X) Q1
H11 : bisim_up_to refl_t (P2 N) (Q4 N)
H12 : Q2 N = Q3 N
H14 : Q1 N = Q4 N
H15 : Q2 N = P2 N
H16 : bisim_up_to refl_t (P1 N) (Q3 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply bisim_eq_2R to *H16 *H12.
Subgoal 2.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb R (dn X) Q1
H11 : bisim_up_to refl_t (P2 N) (Q4 N)
H14 : Q1 N = Q4 N
H15 : Q2 N = P2 N
H17 : bisim_up_to refl_t (P1 N) (Q2 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply *bisim_eq_2L to *H17 *H15.
Subgoal 2.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb R (dn X) Q1
H11 : bisim_up_to refl_t (P2 N) (Q4 N)
H14 : Q1 N = Q4 N
H18 : bisim_up_to refl_t (P1 N) (P2 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply bisim_eq_2R to *H11 *H14.
Subgoal 2.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb R (dn X) Q1
H18 : bisim_up_to refl_t (P1 N) (P2 N)
H19 : bisim_up_to refl_t (P2 N) (Q1 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 3 is:
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < backchain CH.
Subgoal 3:

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 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) +))

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < intros.
Subgoal 3:

Variables: P Q R X P1
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H3 : 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) +)

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply Left3 to *H3.
Subgoal 3:

Variables: P Q R X P1 Q2 P3 Q3
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H4 : oneb Q (up X) Q2
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 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) +)

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply Right3 to *H4.
Subgoal 3:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 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) +)

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness Q1.
Subgoal 3:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 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) +)

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < split.
Subgoal 3.1:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 oneb R (up X) Q1

Subgoal 3.2 is:
 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 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < search.
Subgoal 3.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 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 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness P1.
Subgoal 3.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 exists Q2, nabla x, refl_t (P1 x) (P1 x) (Q1 x) (Q2 x) /\
   bisim_up_to refl_t (P1 x) (Q2 x) +

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness Q1.
Subgoal 3.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 nabla x, refl_t (P1 x) (P1 x) (Q1 x) (Q1 x) /\
   bisim_up_to refl_t (P1 x) (Q1 x) +

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < intros.
Subgoal 3.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 refl_t (P1 n1) (P1 n1) (Q1 n1) (Q1 n1) /\
   bisim_up_to refl_t (P1 n1) (Q1 n1) +

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < split.
Subgoal 3.2.1:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 refl_t (P1 n1) (P1 n1) (Q1 n1) (Q1 n1)

Subgoal 3.2.2 is:
 bisim_up_to refl_t (P1 n1) (Q1 n1) +

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < search.
Subgoal 3.2.2:

Variables: P Q R X P1 Q2 P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P1 n1) (P3 n1) (Q2 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q2 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 bisim_up_to refl_t (P1 n1) (Q1 n1) +

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < case H5.
Subgoal 3.2.2:

Variables: P Q R X P3 Q3 Q1 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb R (up X) Q1
H8 : refl_t (Q3 n1) (P2 n1) (Q1 n1) (Q4 n1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 bisim_up_to refl_t (P3 n1) (Q1 n1) +

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < case H8.
Subgoal 3.2.2:

Variables: P Q R X P3 P2 Q4
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : bisim_up_to refl_t (P3 n1) (P2 n1)
H7 : oneb R (up X) (z1\Q4 z1)
H9 : bisim_up_to refl_t (P2 n1) (Q4 n1)
============================
 bisim_up_to refl_t (P3 n1) (Q4 n1) +

Subgoal 4 is:
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < backchain CH.
Subgoal 4:

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 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 +))

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < intros.
Subgoal 4:

Variables: P Q R L Q1
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H3 : 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 +)

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply Right4 to *H3.
Subgoal 4:

Variables: P Q R L Q1 P2 P3 Q3
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H4 : one Q L P2
H5 : refl_t P2 P3 Q1 Q3
H6 : 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 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < apply Left4 to *H4.
Subgoal 4:

Variables: P Q R L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P2 P3 Q1 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one P L P1
H8 : refl_t P1 P4 P2 Q2
H9 : bisim_up_to refl_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 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness P1.
Subgoal 4:

Variables: P Q R L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P2 P3 Q1 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one P L P1
H8 : refl_t P1 P4 P2 Q2
H9 : bisim_up_to refl_t P4 Q2
============================
 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 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < split.
Subgoal 4.1:

Variables: P Q R L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P2 P3 Q1 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one P L P1
H8 : refl_t P1 P4 P2 Q2
H9 : bisim_up_to refl_t P4 Q2
============================
 one P L P1

Subgoal 4.2 is:
 exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < search.
Subgoal 4.2:

Variables: P Q R L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P2 P3 Q1 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one P L P1
H8 : refl_t P1 P4 P2 Q2
H9 : bisim_up_to refl_t P4 Q2
============================
 exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness P1.
Subgoal 4.2:

Variables: P Q R L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P2 P3 Q1 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one P L P1
H8 : refl_t P1 P4 P2 Q2
H9 : bisim_up_to refl_t P4 Q2
============================
 exists Q2, refl_t P1 P1 Q1 Q2 /\ bisim_up_to refl_t P1 Q2 +

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < witness Q1.
Subgoal 4.2:

Variables: P Q R L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P2 P3 Q1 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one P L P1
H8 : refl_t P1 P4 P2 Q2
H9 : bisim_up_to refl_t P4 Q2
============================
 refl_t P1 P1 Q1 Q1 /\ bisim_up_to refl_t P1 Q1 +

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < split.
Subgoal 4.2.1:

Variables: P Q R L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P2 P3 Q1 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one P L P1
H8 : refl_t P1 P4 P2 Q2
H9 : bisim_up_to refl_t P4 Q2
============================
 refl_t P1 P1 Q1 Q1

Subgoal 4.2.2 is:
 bisim_up_to refl_t P1 Q1 +

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < search.
Subgoal 4.2.2:

Variables: P Q R L Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t P2 P3 Q1 Q3
H6 : bisim_up_to refl_t P3 Q3
H7 : one P L P1
H8 : refl_t P1 P4 P2 Q2
H9 : bisim_up_to refl_t P4 Q2
============================
 bisim_up_to refl_t P1 Q1 +

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < case H5.
Subgoal 4.2.2:

Variables: P Q R L P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : bisim_up_to refl_t P3 Q3
H7 : one P L P1
H8 : refl_t P1 P4 P3 Q2
H9 : bisim_up_to refl_t P4 Q2
============================
 bisim_up_to refl_t P1 Q3 +

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < case H8.
Subgoal 4.2.2:

Variables: P Q R L Q3 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : bisim_up_to refl_t Q2 Q3
H7 : one P L P4
H9 : bisim_up_to refl_t P4 Q2
============================
 bisim_up_to refl_t P4 Q3 +

Subgoal 5 is:
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < backchain CH.
Subgoal 5:

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 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) +))

Subgoal 6 is:
 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) +))

bisim_transitive < intros.
Subgoal 5:

Variables: P Q R X Q1
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H3 : 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) +)

Subgoal 6 is:
 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) +))

bisim_transitive < apply Right5 to *H3.
Subgoal 5:

Variables: P Q R X Q1 P2 P3 Q3
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H4 : oneb Q (dn X) P2
H5 : 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 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) +))

bisim_transitive < apply Left5 to *H4.
Subgoal 5:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_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 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) +))

bisim_transitive < witness P1.
Subgoal 5:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_t (P4 N) (Q2 N)
============================
 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 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) +))

bisim_transitive < split.
Subgoal 5.1:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_t (P4 N) (Q2 N)
============================
 oneb P (dn X) P1

Subgoal 5.2 is:
 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 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) +))

bisim_transitive < search.
Subgoal 5.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_t (P4 N) (Q2 N)
============================
 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 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) +))

bisim_transitive < witness P1.
Subgoal 5.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_t (P4 N) (Q2 N)
============================
 exists Q2, forall N, refl_t (P1 N) (P1 N) (Q1 N) (Q2 N) /\
   bisim_up_to refl_t (P1 N) (Q2 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < witness Q1.
Subgoal 5.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_t (P4 N) (Q2 N)
============================
 forall N, refl_t (P1 N) (P1 N) (Q1 N) (Q1 N) /\
   bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < intros.
Subgoal 5.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_t (P4 N) (Q2 N)
============================
 refl_t (P1 N) (P1 N) (Q1 N) (Q1 N) /\ bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < split.
Subgoal 5.2.1:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_t (P4 N) (Q2 N)
============================
 refl_t (P1 N) (P1 N) (Q1 N) (Q1 N)

Subgoal 5.2.2 is:
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < search.
Subgoal 5.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : forall N, refl_t (P2 N) (P3 N) (Q1 N) (Q3 N) /\
       bisim_up_to refl_t (P3 N) (Q3 N)
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_t (P4 N) (Q2 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < apply *H5 with N = N.
Subgoal 5.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb P (dn X) P1
H7 : forall N, refl_t (P1 N) (P4 N) (P2 N) (Q2 N) /\
       bisim_up_to refl_t (P4 N) (Q2 N)
H8 : refl_t (P2 N) (P3 N) (Q1 N) (Q3 N)
H9 : bisim_up_to refl_t (P3 N) (Q3 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < apply *H7 with N = N.
Subgoal 5.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb P (dn X) P1
H8 : refl_t (P2 N) (P3 N) (Q1 N) (Q3 N)
H9 : bisim_up_to refl_t (P3 N) (Q3 N)
H10 : refl_t (P1 N) (P4 N) (P2 N) (Q2 N)
H11 : bisim_up_to refl_t (P4 N) (Q2 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < case H8.
Subgoal 5.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb P (dn X) P1
H9 : bisim_up_to refl_t (P3 N) (Q3 N)
H10 : refl_t (P1 N) (P4 N) (P2 N) (Q2 N)
H11 : bisim_up_to refl_t (P4 N) (Q2 N)
H12 : Q1 N = Q3 N
H13 : P2 N = P3 N
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < case H10.
Subgoal 5.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb P (dn X) P1
H9 : bisim_up_to refl_t (P3 N) (Q3 N)
H11 : bisim_up_to refl_t (P4 N) (Q2 N)
H12 : Q1 N = Q3 N
H13 : P2 N = P3 N
H14 : P2 N = Q2 N
H15 : P1 N = P4 N
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < apply bisim_eq_1R to *H9 *H13.
Subgoal 5.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb P (dn X) P1
H11 : bisim_up_to refl_t (P4 N) (Q2 N)
H12 : Q1 N = Q3 N
H14 : P2 N = Q2 N
H15 : P1 N = P4 N
H16 : bisim_up_to refl_t (P2 N) (Q3 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < apply bisim_eq_2R to *H16 *H12.
Subgoal 5.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb P (dn X) P1
H11 : bisim_up_to refl_t (P4 N) (Q2 N)
H14 : P2 N = Q2 N
H15 : P1 N = P4 N
H17 : bisim_up_to refl_t (P2 N) (Q1 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < apply bisim_eq_1R to *H11 *H15.
Subgoal 5.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb P (dn X) P1
H14 : P2 N = Q2 N
H17 : bisim_up_to refl_t (P2 N) (Q1 N)
H18 : bisim_up_to refl_t (P1 N) (Q2 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < apply bisim_eq_2R to *H18 *H14.
Subgoal 5.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2 N
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : oneb P (dn X) P1
H17 : bisim_up_to refl_t (P2 N) (Q1 N)
H19 : bisim_up_to refl_t (P1 N) (P2 N)
============================
 bisim_up_to refl_t (P1 N) (Q1 N) +

Subgoal 6 is:
 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) +))

bisim_transitive < backchain CH.
Subgoal 6:

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
============================
 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) +))

bisim_transitive < intros.
Subgoal 6:

Variables: P Q R X Q1
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H3 : 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) +)

bisim_transitive < apply Right6 to *H3.
Subgoal 6:

Variables: P Q R X Q1 P2 P3 Q3
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H4 : oneb Q (up X) P2
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : 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_transitive < apply Left6 to *H4.
Subgoal 6:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
H9 : bisim_up_to refl_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_transitive < witness P1.
Subgoal 6:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 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_transitive < split.
Subgoal 6.1:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 oneb P (up X) P1

Subgoal 6.2 is:
 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_transitive < search.
Subgoal 6.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 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_transitive < witness P1.
Subgoal 6.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 exists Q2, nabla x, refl_t (P1 x) (P1 x) (Q1 x) (Q2 x) /\
   bisim_up_to refl_t (P1 x) (Q2 x) +

bisim_transitive < witness Q1.
Subgoal 6.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 nabla x, refl_t (P1 x) (P1 x) (Q1 x) (Q1 x) /\
   bisim_up_to refl_t (P1 x) (Q1 x) +

bisim_transitive < intros.
Subgoal 6.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 refl_t (P1 n1) (P1 n1) (Q1 n1) (Q1 n1) /\
   bisim_up_to refl_t (P1 n1) (Q1 n1) +

bisim_transitive < split.
Subgoal 6.2.1:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 refl_t (P1 n1) (P1 n1) (Q1 n1) (Q1 n1)

Subgoal 6.2.2 is:
 bisim_up_to refl_t (P1 n1) (Q1 n1) +

bisim_transitive < search.
Subgoal 6.2.2:

Variables: P Q R X Q1 P2 P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P2 n1) (Q2 n1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 bisim_up_to refl_t (P1 n1) (Q1 n1) +

bisim_transitive < case H5.
Subgoal 6.2.2:

Variables: P Q R X P3 Q3 P1 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
H7 : oneb P (up X) P1
H8 : refl_t (P1 n1) (P4 n1) (P3 n1) (Q2 n1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 bisim_up_to refl_t (P1 n1) (Q3 n1) +

bisim_transitive < case H8.
Subgoal 6.2.2:

Variables: P Q R X Q3 P4 Q2
CH : forall P Q R, bisim_up_to refl_t P Q -> bisim_up_to refl_t Q R ->
       bisim_up_to refl_t P R +
Left1 : forall L P2, one P L P2 ->
          (exists Q2, one Q L Q2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Left4 : forall L Q2, one Q L Q2 ->
          (exists P2, one P L P2 /\
               (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\ bisim_up_to refl_t P3 Q3))
Left5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\
               (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                    bisim_up_to refl_t (P3 N) (Q3 N)))
Left6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\
               (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                    bisim_up_to refl_t (P3 x) (Q3 x)))
Right1 : forall L P2, one Q L P2 ->
           (exists Q2, one R L Q2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right2 : forall X P2, oneb Q (dn X) P2 ->
           (exists Q2, oneb R (dn X) Q2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right3 : forall X P2, oneb Q (up X) P2 ->
           (exists Q2, oneb R (up X) Q2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
Right4 : forall L Q2, one R L Q2 ->
           (exists P2, one Q L P2 /\
                (exists P3 Q3, refl_t P2 P3 Q2 Q3 /\
                     bisim_up_to refl_t P3 Q3))
Right5 : forall X Q2, oneb R (dn X) Q2 ->
           (exists P2, oneb Q (dn X) P2 /\
                (exists P3 Q3, forall N, refl_t (P2 N) (P3 N) (Q2 N) (Q3 N) /\
                     bisim_up_to refl_t (P3 N) (Q3 N)))
Right6 : forall X Q2, oneb R (up X) Q2 ->
           (exists P2, oneb Q (up X) P2 /\
                (exists P3 Q3, nabla x, refl_t (P2 x) (P3 x) (Q2 x) (Q3 x) /\
                     bisim_up_to refl_t (P3 x) (Q3 x)))
H6 : bisim_up_to refl_t (Q2 n1) (Q3 n1)
H7 : oneb P (up X) (z1\P4 z1)
H9 : bisim_up_to refl_t (P4 n1) (Q2 n1)
============================
 bisim_up_to refl_t (P4 n1) (Q3 n1) +

bisim_transitive < backchain CH.
Proof completed.
Abella <