Welcome to Abella 2.0.3-dev
Abella < Kind name, label, proc type.
Abella < Import "pic_core".
Importing from pic_core
Warning: Definition can be used to defeat stratification
  (higher-order argument "Tech" occurs to the left of ->)
Abella < Define inv : proc -> proc -> prop by 
inv P Q := bisim_up_to refl_t P Q;
inv (par P1 Q1) (par P2 Q2) := inv P1 P2 /\ inv Q1 Q2;
inv (nu P) (nu Q) := nabla x, inv (P x) (Q x).
Abella < Define bisim_inv : proc -> proc -> prop by 
bisim_inv P Q := (forall L P1, one P L P1 -> (exists Q1, one Q L Q1 /\ inv P1 Q1)) /\
  (forall X P1, oneb P (dn X) P1 ->
     (exists Q1, oneb Q (dn X) Q1 /\ (forall N, inv (P1 N) (Q1 N)))) /\
  (forall X P1, oneb P (up X) P1 ->
     (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))) /\
  (forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)) /\
  (forall X Q1, oneb Q (dn X) Q1 ->
     (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))) /\
  (forall X Q1, oneb Q (up X) Q1 ->
     (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))).
Abella < Theorem inv_bisim_inv : 
forall P Q, inv P Q -> bisim_inv P Q.

============================
 forall P Q, inv P Q -> bisim_inv P Q

inv_bisim_inv < induction on 1.

IH : forall P Q, inv P Q * -> bisim_inv P Q
============================
 forall P Q, inv P Q @ -> bisim_inv P Q

inv_bisim_inv < intros.

Variables: P Q
IH : forall P Q, inv P Q * -> bisim_inv P Q
H1 : inv P Q @
============================
 bisim_inv P Q

inv_bisim_inv < case H1.
Subgoal 1:

Variables: P Q
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : bisim_up_to refl_t P Q
============================
 bisim_inv P Q

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < Bis1 : case H2.
Subgoal 1:

Variables: P Q
IH : forall P Q, inv P Q * -> bisim_inv P Q
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_inv P Q

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < unfold.
Subgoal 1.1:

Variables: P Q
IH : forall P Q, inv P Q * -> bisim_inv P Q
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 P L P1 -> (exists Q1, one Q L Q1 /\ inv P1 Q1)

Subgoal 1.2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.1:

Variables: P Q L P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : one P L P1
============================
 exists Q1, one Q L Q1 /\ inv P1 Q1

Subgoal 1.2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply Bis1 to H3.
Subgoal 1.1:

Variables: P Q L P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : one P L P1
H4 : one Q L Q2
H5 : refl_t P1 P3 Q2 Q3
H6 : bisim_up_to refl_t P3 Q3
============================
 exists Q1, one Q L Q1 /\ inv P1 Q1

Subgoal 1.2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H5.
Subgoal 1.1:

Variables: P Q L P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : one P L P3
H4 : one Q L Q3
H6 : bisim_up_to refl_t P3 Q3
============================
 exists Q1, one Q L Q1 /\ inv P3 Q1

Subgoal 1.2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 1.2:

Variables: P Q
IH : forall P Q, inv P Q * -> bisim_inv P Q
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 P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.2:

Variables: P Q X P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
============================
 exists Q1, oneb Q (dn X) Q1 /\ (forall N, inv (P1 N) (Q1 N))

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply Bis2 to H3.
Subgoal 1.2:

Variables: P Q X P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
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 Q (dn X) Q1 /\ (forall N, inv (P1 N) (Q1 N))

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness Q2.
Subgoal 1.2:

Variables: P Q X P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
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)
============================
 oneb Q (dn X) Q2 /\ (forall N, inv (P1 N) (Q2 N))

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 1.2.1:

Variables: P Q X P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
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)
============================
 oneb Q (dn X) Q2

Subgoal 1.2.2 is:
 forall N, inv (P1 N) (Q2 N)

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 1.2.2:

Variables: P Q X P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
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)
============================
 forall N, inv (P1 N) (Q2 N)

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.2.2:

Variables: P Q X P1 Q2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
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)
============================
 inv (P1 N) (Q2 N)

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H5 with N = N.
Subgoal 1.2.2:

Variables: P Q X P1 Q2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
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)
H6 : refl_t (P1 N) (P3 N) (Q2 N) (Q3 N)
H7 : bisim_up_to refl_t (P3 N) (Q3 N)
============================
 inv (P1 N) (Q2 N)

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H6.
Subgoal 1.2.2:

Variables: P Q X P1 Q2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
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)
H7 : bisim_up_to refl_t (P3 N) (Q3 N)
H8 : Q2 N = Q3 N
H9 : P1 N = P3 N
============================
 inv (P1 N) (Q2 N)

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply bisim_eq_2R to H7 H8.
Subgoal 1.2.2:

Variables: P Q X P1 Q2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
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)
H7 : bisim_up_to refl_t (P3 N) (Q3 N)
H8 : Q2 N = Q3 N
H9 : P1 N = P3 N
H10 : bisim_up_to refl_t (P3 N) (Q2 N)
============================
 inv (P1 N) (Q2 N)

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply bisim_eq_1R to H10 H9.
Subgoal 1.2.2:

Variables: P Q X P1 Q2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (dn X) P1
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)
H7 : bisim_up_to refl_t (P3 N) (Q3 N)
H8 : Q2 N = Q3 N
H9 : P1 N = P3 N
H10 : bisim_up_to refl_t (P3 N) (Q2 N)
H11 : bisim_up_to refl_t (P1 N) (Q2 N)
============================
 inv (P1 N) (Q2 N)

Subgoal 1.3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 1.3:

Variables: P Q
IH : forall P Q, inv P Q * -> bisim_inv P Q
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 P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.3:

Variables: P Q X P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (up X) P1
============================
 exists Q1, oneb Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply Bis3 to H3.
Subgoal 1.3:

Variables: P Q X P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (up X) P1
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 Q (up X) Q1 /\ (nabla x, inv (P1 x) (Q1 x))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness Q2.
Subgoal 1.3:

Variables: P Q X P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (up X) P1
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)
============================
 oneb Q (up X) Q2 /\ (nabla x, inv (P1 x) (Q2 x))

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 1.3.1:

Variables: P Q X P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (up X) P1
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)
============================
 oneb Q (up X) Q2

Subgoal 1.3.2 is:
 nabla x, inv (P1 x) (Q2 x)

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 1.3.2:

Variables: P Q X P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (up X) P1
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)
============================
 nabla x, inv (P1 x) (Q2 x)

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.3.2:

Variables: P Q X P1 Q2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (up X) P1
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)
============================
 inv (P1 n1) (Q2 n1)

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H5.
Subgoal 1.3.2:

Variables: P Q X P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb P (up X) (z1\P3 z1)
H4 : oneb Q (up X) (z1\Q3 z1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 inv (P3 n1) (Q3 n1)

Subgoal 1.4 is:
 forall L Q1, one Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 1.4:

Variables: P Q
IH : forall P Q, inv P Q * -> bisim_inv P Q
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 Q L Q1 -> (exists P1, one P L P1 /\ inv P1 Q1)

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.4:

Variables: P Q L Q1
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : one Q L Q1
============================
 exists P1, one P L P1 /\ inv P1 Q1

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply Bis4 to H3.
Subgoal 1.4:

Variables: P Q L Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : one Q L Q1
H4 : one P L P2
H5 : refl_t P2 P3 Q1 Q3
H6 : bisim_up_to refl_t P3 Q3
============================
 exists P1, one P L P1 /\ inv P1 Q1

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H5.
Subgoal 1.4:

Variables: P Q L P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : one Q L Q3
H4 : one P L P3
H6 : bisim_up_to refl_t P3 Q3
============================
 exists P1, one P L P1 /\ inv P1 Q3

Subgoal 1.5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 1.5:

Variables: P Q
IH : forall P Q, inv P Q * -> bisim_inv P Q
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 Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N)))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.5:

Variables: P Q X Q1
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
============================
 exists P1, oneb P (dn X) P1 /\ (forall N, inv (P1 N) (Q1 N))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply Bis5 to H3.
Subgoal 1.5:

Variables: P Q X Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
H4 : oneb P (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 /\ (forall N, inv (P1 N) (Q1 N))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness P2.
Subgoal 1.5:

Variables: P Q X Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
H4 : oneb P (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)
============================
 oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q1 N))

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 1.5.1:

Variables: P Q X Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
H4 : oneb P (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)
============================
 oneb P (dn X) P2

Subgoal 1.5.2 is:
 forall N, inv (P2 N) (Q1 N)

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 1.5.2:

Variables: P Q X Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
H4 : oneb P (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)
============================
 forall N, inv (P2 N) (Q1 N)

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.5.2:

Variables: P Q X Q1 P2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
H4 : oneb P (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)
============================
 inv (P2 N) (Q1 N)

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H5 with N = N.
Subgoal 1.5.2:

Variables: P Q X Q1 P2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
H4 : oneb P (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)
H6 : refl_t (P2 N) (P3 N) (Q1 N) (Q3 N)
H7 : bisim_up_to refl_t (P3 N) (Q3 N)
============================
 inv (P2 N) (Q1 N)

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H6.
Subgoal 1.5.2:

Variables: P Q X Q1 P2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
H4 : oneb P (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)
H7 : bisim_up_to refl_t (P3 N) (Q3 N)
H8 : Q1 N = Q3 N
H9 : P2 N = P3 N
============================
 inv (P2 N) (Q1 N)

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply bisim_eq_2R to H7 H8.
Subgoal 1.5.2:

Variables: P Q X Q1 P2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
H4 : oneb P (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)
H7 : bisim_up_to refl_t (P3 N) (Q3 N)
H8 : Q1 N = Q3 N
H9 : P2 N = P3 N
H10 : bisim_up_to refl_t (P3 N) (Q1 N)
============================
 inv (P2 N) (Q1 N)

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply bisim_eq_1R to H10 H9.
Subgoal 1.5.2:

Variables: P Q X Q1 P2 P3 Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (dn X) Q1
H4 : oneb P (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)
H7 : bisim_up_to refl_t (P3 N) (Q3 N)
H8 : Q1 N = Q3 N
H9 : P2 N = P3 N
H10 : bisim_up_to refl_t (P3 N) (Q1 N)
H11 : bisim_up_to refl_t (P2 N) (Q1 N)
============================
 inv (P2 N) (Q1 N)

Subgoal 1.6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 1.6:

Variables: P Q
IH : forall P Q, inv P Q * -> bisim_inv P Q
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 Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x)))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.6:

Variables: P Q X Q1
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (up X) Q1
============================
 exists P1, oneb P (up X) P1 /\ (nabla x, inv (P1 x) (Q1 x))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply Bis6 to H3.
Subgoal 1.6:

Variables: P Q X Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (up X) Q1
H4 : oneb P (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 /\ (nabla x, inv (P1 x) (Q1 x))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness P2.
Subgoal 1.6:

Variables: P Q X Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (up X) Q1
H4 : oneb P (up X) P2
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q1 x))

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 1.6.1:

Variables: P Q X Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (up X) Q1
H4 : oneb P (up X) P2
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 oneb P (up X) P2

Subgoal 1.6.2 is:
 nabla x, inv (P2 x) (Q1 x)

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 1.6.2:

Variables: P Q X Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (up X) Q1
H4 : oneb P (up X) P2
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 nabla x, inv (P2 x) (Q1 x)

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 1.6.2:

Variables: P Q X Q1 P2 P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (up X) Q1
H4 : oneb P (up X) P2
H5 : refl_t (P2 n1) (P3 n1) (Q1 n1) (Q3 n1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 inv (P2 n1) (Q1 n1)

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H5.
Subgoal 1.6.2:

Variables: P Q X P3 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
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)))
H3 : oneb Q (up X) (z1\Q3 z1)
H4 : oneb P (up X) (z1\P3 z1)
H6 : bisim_up_to refl_t (P3 n1) (Q3 n1)
============================
 inv (P3 n1) (Q3 n1)

Subgoal 2 is:
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
============================
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply IH to H2.
Subgoal 2:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
H4 : bisim_inv P1 P2
============================
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply IH to H3.
Subgoal 2:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
H4 : bisim_inv P1 P2
H5 : bisim_inv Q1 Q2
============================
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < PPInv1 : case H4.
Subgoal 2:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
H5 : bisim_inv Q1 Q2
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
============================
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < QQInv1 : case H5.
Subgoal 2:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
============================
 bisim_inv (par P1 Q1) (par P2 Q2)

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < unfold.
Subgoal 2.1:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
============================
 forall L P3, one (par P1 Q1) L P3 ->
   (exists Q3, one (par P2 Q2) L Q3 /\ inv P3 Q3)

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.1:

Variables: Q2 P2 Q1 P1 L P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H6 : one (par P1 Q1) L P3
============================
 exists Q3, one (par P2 Q2) L Q3 /\ inv P3 Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H6.
Subgoal 2.1.1:

Variables: Q2 P2 Q1 P1 L R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one P1 L R
============================
 exists Q3, one (par P2 Q2) L Q3 /\ inv (par R Q1) Q3

Subgoal 2.1.2 is:
 exists Q3, one (par P2 Q2) L Q3 /\ inv (par P1 R) Q3

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv1 to H7.
Subgoal 2.1.1:

Variables: Q2 P2 Q1 P1 L R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one P1 L R
H8 : one P2 L Q3
H9 : inv R Q3
============================
 exists Q3, one (par P2 Q2) L Q3 /\ inv (par R Q1) Q3

Subgoal 2.1.2 is:
 exists Q3, one (par P2 Q2) L Q3 /\ inv (par P1 R) Q3

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness par Q3 Q2.
Subgoal 2.1.1:

Variables: Q2 P2 Q1 P1 L R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one P1 L R
H8 : one P2 L Q3
H9 : inv R Q3
============================
 one (par P2 Q2) L (par Q3 Q2) /\ inv (par R Q1) (par Q3 Q2)

Subgoal 2.1.2 is:
 exists Q3, one (par P2 Q2) L Q3 /\ inv (par P1 R) Q3

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.1.1.1:

Variables: Q2 P2 Q1 P1 L R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one P1 L R
H8 : one P2 L Q3
H9 : inv R Q3
============================
 one (par P2 Q2) L (par Q3 Q2)

Subgoal 2.1.1.2 is:
 inv (par R Q1) (par Q3 Q2)

Subgoal 2.1.2 is:
 exists Q3, one (par P2 Q2) L Q3 /\ inv (par P1 R) Q3

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.1.2:

Variables: Q2 P2 Q1 P1 L R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one P1 L R
H8 : one P2 L Q3
H9 : inv R Q3
============================
 inv (par R Q1) (par Q3 Q2)

Subgoal 2.1.2 is:
 exists Q3, one (par P2 Q2) L Q3 /\ inv (par P1 R) Q3

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.2:

Variables: Q2 P2 Q1 P1 L R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one Q1 L R
============================
 exists Q3, one (par P2 Q2) L Q3 /\ inv (par P1 R) Q3

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv1 to H7.
Subgoal 2.1.2:

Variables: Q2 P2 Q1 P1 L R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one Q1 L R
H8 : one Q2 L Q3
H9 : inv R Q3
============================
 exists Q3, one (par P2 Q2) L Q3 /\ inv (par P1 R) Q3

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness par P2 Q3.
Subgoal 2.1.2:

Variables: Q2 P2 Q1 P1 L R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one Q1 L R
H8 : one Q2 L Q3
H9 : inv R Q3
============================
 one (par P2 Q2) L (par P2 Q3) /\ inv (par P1 R) (par P2 Q3)

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.1.2.1:

Variables: Q2 P2 Q1 P1 L R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one Q1 L R
H8 : one Q2 L Q3
H9 : inv R Q3
============================
 one (par P2 Q2) L (par P2 Q3)

Subgoal 2.1.2.2 is:
 inv (par P1 R) (par P2 Q3)

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.2.2:

Variables: Q2 P2 Q1 P1 L R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one Q1 L R
H8 : one Q2 L Q3
H9 : inv R Q3
============================
 inv (par P1 R) (par P2 Q3)

Subgoal 2.1.3 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.3:

Variables: Q2 P2 Q1 P1 QQ PP
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : (exists X Y R, oneb P1 (dn X) R /\ one Q1 (up X Y) QQ /\ PP = R Y) \/
       (exists X Y R, one P1 (up X Y) PP /\ oneb Q1 (dn X) R /\ QQ = R Y)
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP QQ) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H7.
Subgoal 2.1.3.1:

Variables: Q2 P2 Q1 P1 QQ X Y R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) R
H9 : one Q1 (up X Y) QQ
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par (R Y) QQ) Q3

Subgoal 2.1.3.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv2 to H8.
Subgoal 2.1.3.1:

Variables: Q2 P2 Q1 P1 QQ X Y R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) R
H9 : one Q1 (up X Y) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (R N) (Q3 N)
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par (R Y) QQ) Q3

Subgoal 2.1.3.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv1 to H9.
Subgoal 2.1.3.1:

Variables: Q2 P2 Q1 P1 QQ X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) R
H9 : one Q1 (up X Y) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (R N) (Q3 N)
H12 : one Q2 (up X Y) Q4
H13 : inv QQ Q4
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par (R Y) QQ) Q3

Subgoal 2.1.3.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness par (Q3 Y) Q4.
Subgoal 2.1.3.1:

Variables: Q2 P2 Q1 P1 QQ X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) R
H9 : one Q1 (up X Y) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (R N) (Q3 N)
H12 : one Q2 (up X Y) Q4
H13 : inv QQ Q4
============================
 one (par P2 Q2) tau (par (Q3 Y) Q4) /\ inv (par (R Y) QQ) (par (Q3 Y) Q4)

Subgoal 2.1.3.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.1.3.1.1:

Variables: Q2 P2 Q1 P1 QQ X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) R
H9 : one Q1 (up X Y) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (R N) (Q3 N)
H12 : one Q2 (up X Y) Q4
H13 : inv QQ Q4
============================
 one (par P2 Q2) tau (par (Q3 Y) Q4)

Subgoal 2.1.3.1.2 is:
 inv (par (R Y) QQ) (par (Q3 Y) Q4)

Subgoal 2.1.3.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.3.1.2:

Variables: Q2 P2 Q1 P1 QQ X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) R
H9 : one Q1 (up X Y) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (R N) (Q3 N)
H12 : one Q2 (up X Y) Q4
H13 : inv QQ Q4
============================
 inv (par (R Y) QQ) (par (Q3 Y) Q4)

Subgoal 2.1.3.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H11 with N = Y.
Subgoal 2.1.3.1.2:

Variables: Q2 P2 Q1 P1 QQ X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) R
H9 : one Q1 (up X Y) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (R N) (Q3 N)
H12 : one Q2 (up X Y) Q4
H13 : inv QQ Q4
H14 : inv (R Y) (Q3 Y)
============================
 inv (par (R Y) QQ) (par (Q3 Y) Q4)

Subgoal 2.1.3.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.3.2:

Variables: Q2 P2 Q1 P1 PP X Y R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P1 (up X Y) PP
H9 : oneb Q1 (dn X) R
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv1 to H8.
Subgoal 2.1.3.2:

Variables: Q2 P2 Q1 P1 PP X Y R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P1 (up X Y) PP
H9 : oneb Q1 (dn X) R
H10 : one P2 (up X Y) Q3
H11 : inv PP Q3
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv2 to H9.
Subgoal 2.1.3.2:

Variables: Q2 P2 Q1 P1 PP X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P1 (up X Y) PP
H9 : oneb Q1 (dn X) R
H10 : one P2 (up X Y) Q3
H11 : inv PP Q3
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (R N) (Q4 N)
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (par PP (R Y)) Q3

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness par Q3 (Q4 Y).
Subgoal 2.1.3.2:

Variables: Q2 P2 Q1 P1 PP X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P1 (up X Y) PP
H9 : oneb Q1 (dn X) R
H10 : one P2 (up X Y) Q3
H11 : inv PP Q3
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (R N) (Q4 N)
============================
 one (par P2 Q2) tau (par Q3 (Q4 Y)) /\ inv (par PP (R Y)) (par Q3 (Q4 Y))

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.1.3.2.1:

Variables: Q2 P2 Q1 P1 PP X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P1 (up X Y) PP
H9 : oneb Q1 (dn X) R
H10 : one P2 (up X Y) Q3
H11 : inv PP Q3
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (R N) (Q4 N)
============================
 one (par P2 Q2) tau (par Q3 (Q4 Y))

Subgoal 2.1.3.2.2 is:
 inv (par PP (R Y)) (par Q3 (Q4 Y))

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.3.2.2:

Variables: Q2 P2 Q1 P1 PP X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P1 (up X Y) PP
H9 : oneb Q1 (dn X) R
H10 : one P2 (up X Y) Q3
H11 : inv PP Q3
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (R N) (Q4 N)
============================
 inv (par PP (R Y)) (par Q3 (Q4 Y))

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H13 with N = Y.
Subgoal 2.1.3.2.2:

Variables: Q2 P2 Q1 P1 PP X Y R Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P1 (up X Y) PP
H9 : oneb Q1 (dn X) R
H10 : one P2 (up X Y) Q3
H11 : inv PP Q3
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (R N) (Q4 N)
H14 : inv (R Y) (Q4 Y)
============================
 inv (par PP (R Y)) (par Q3 (Q4 Y))

Subgoal 2.1.4 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.4:

Variables: Q2 P2 Q1 P1 QQ PP
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : (exists X, oneb P1 (dn X) PP /\ oneb Q1 (up X) QQ) \/
       (exists X, oneb P1 (up X) PP /\ oneb Q1 (dn X) QQ)
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H7.
Subgoal 2.1.4.1:

Variables: Q2 P2 Q1 P1 QQ PP X
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) PP
H9 : oneb Q1 (up X) QQ
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.1.4.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv2 to H8.
Subgoal 2.1.4.1:

Variables: Q2 P2 Q1 P1 QQ PP X Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) PP
H9 : oneb Q1 (up X) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (PP N) (Q3 N)
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.1.4.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv3 to H9.
Subgoal 2.1.4.1:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) PP
H9 : oneb Q1 (up X) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (PP N) (Q3 N)
H12 : oneb Q2 (up X) Q4
H13 : inv (QQ n1) (Q4 n1)
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.1.4.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness nu (y\par (Q3 y) (Q4 y)).
Subgoal 2.1.4.1:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) PP
H9 : oneb Q1 (up X) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (PP N) (Q3 N)
H12 : oneb Q2 (up X) Q4
H13 : inv (QQ n1) (Q4 n1)
============================
 one (par P2 Q2) tau (nu (y\par (Q3 y) (Q4 y))) /\
   inv (nu (y\par (PP y) (QQ y))) (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.1.4.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.1.4.1.1:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) PP
H9 : oneb Q1 (up X) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (PP N) (Q3 N)
H12 : oneb Q2 (up X) Q4
H13 : inv (QQ n1) (Q4 n1)
============================
 one (par P2 Q2) tau (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.1.4.1.2 is:
 inv (nu (y\par (PP y) (QQ y))) (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.1.4.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.4.1.2:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) PP
H9 : oneb Q1 (up X) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (PP N) (Q3 N)
H12 : oneb Q2 (up X) Q4
H13 : inv (QQ n1) (Q4 n1)
============================
 inv (nu (y\par (PP y) (QQ y))) (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.1.4.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H11 with N = n1.
Subgoal 2.1.4.1.2:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (dn X) PP
H9 : oneb Q1 (up X) QQ
H10 : oneb P2 (dn X) Q3
H11 : forall N, inv (PP N) (Q3 N)
H12 : oneb Q2 (up X) Q4
H13 : inv (QQ n1) (Q4 n1)
H14 : inv (PP n1) (Q3 n1)
============================
 inv (nu (y\par (PP y) (QQ y))) (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.1.4.2 is:
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.4.2:

Variables: Q2 P2 Q1 P1 QQ PP X
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (up X) PP
H9 : oneb Q1 (dn X) QQ
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv3 to H8.
Subgoal 2.1.4.2:

Variables: Q2 P2 Q1 P1 QQ PP X Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (up X) PP
H9 : oneb Q1 (dn X) QQ
H10 : oneb P2 (up X) Q3
H11 : inv (PP n1) (Q3 n1)
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv2 to H9.
Subgoal 2.1.4.2:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (up X) PP
H9 : oneb Q1 (dn X) QQ
H10 : oneb P2 (up X) Q3
H11 : inv (PP n1) (Q3 n1)
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (QQ N) (Q4 N)
============================
 exists Q3, one (par P2 Q2) tau Q3 /\ inv (nu (y\par (PP y) (QQ y))) Q3

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness nu (y\par (Q3 y) (Q4 y)).
Subgoal 2.1.4.2:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (up X) PP
H9 : oneb Q1 (dn X) QQ
H10 : oneb P2 (up X) Q3
H11 : inv (PP n1) (Q3 n1)
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (QQ N) (Q4 N)
============================
 one (par P2 Q2) tau (nu (y\par (Q3 y) (Q4 y))) /\
   inv (nu (y\par (PP y) (QQ y))) (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.1.4.2.1:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (up X) PP
H9 : oneb Q1 (dn X) QQ
H10 : oneb P2 (up X) Q3
H11 : inv (PP n1) (Q3 n1)
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (QQ N) (Q4 N)
============================
 one (par P2 Q2) tau (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.1.4.2.2 is:
 inv (nu (y\par (PP y) (QQ y))) (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.1.4.2.2:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (up X) PP
H9 : oneb Q1 (dn X) QQ
H10 : oneb P2 (up X) Q3
H11 : inv (PP n1) (Q3 n1)
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (QQ N) (Q4 N)
============================
 inv (nu (y\par (PP y) (QQ y))) (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H13 with N = n1.
Subgoal 2.1.4.2.2:

Variables: Q2 P2 Q1 P1 QQ PP X Q3 Q4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P1 (up X) PP
H9 : oneb Q1 (dn X) QQ
H10 : oneb P2 (up X) Q3
H11 : inv (PP n1) (Q3 n1)
H12 : oneb Q2 (dn X) Q4
H13 : forall N, inv (QQ N) (Q4 N)
H14 : inv (QQ n1) (Q4 n1)
============================
 inv (nu (y\par (PP y) (QQ y))) (nu (y\par (Q3 y) (Q4 y)))

Subgoal 2.2 is:
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.2:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
============================
 forall X P3, oneb (par P1 Q1) (dn X) P3 ->
   (exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.2:

Variables: Q2 P2 Q1 P1 X P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H6 : oneb (par P1 Q1) (dn X) P3
============================
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\ (forall N, inv (P3 N) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H6.
Subgoal 2.2.1:

Variables: Q2 P2 Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (dn X) R
============================
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par (R N) Q1) (Q3 N))

Subgoal 2.2.2 is:
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par P1 (R N)) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv2 to H7.
Subgoal 2.2.1:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (dn X) R
H8 : oneb P2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par (R N) Q1) (Q3 N))

Subgoal 2.2.2 is:
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par P1 (R N)) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness y\par (Q3 y) Q2.
Subgoal 2.2.1:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (dn X) R
H8 : oneb P2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 oneb (par P2 Q2) (dn X) (y\par (Q3 y) Q2) /\
   (forall N, inv (par (R N) Q1) (par (Q3 N) Q2))

Subgoal 2.2.2 is:
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par P1 (R N)) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.2.1.1:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (dn X) R
H8 : oneb P2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 oneb (par P2 Q2) (dn X) (y\par (Q3 y) Q2)

Subgoal 2.2.1.2 is:
 forall N, inv (par (R N) Q1) (par (Q3 N) Q2)

Subgoal 2.2.2 is:
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par P1 (R N)) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.2.1.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (dn X) R
H8 : oneb P2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 forall N, inv (par (R N) Q1) (par (Q3 N) Q2)

Subgoal 2.2.2 is:
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par P1 (R N)) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.2.1.2:

Variables: Q2 P2 Q1 P1 X R Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (dn X) R
H8 : oneb P2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 inv (par (R N) Q1) (par (Q3 N) Q2)

Subgoal 2.2.2 is:
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par P1 (R N)) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H9 with N = N.
Subgoal 2.2.1.2:

Variables: Q2 P2 Q1 P1 X R Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (dn X) R
H8 : oneb P2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
H10 : inv (R N) (Q3 N)
============================
 inv (par (R N) Q1) (par (Q3 N) Q2)

Subgoal 2.2.2 is:
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par P1 (R N)) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.2.2:

Variables: Q2 P2 Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (dn X) R
============================
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par P1 (R N)) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv2 to H7.
Subgoal 2.2.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (dn X) R
H8 : oneb Q2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 exists Q3, oneb (par P2 Q2) (dn X) Q3 /\
   (forall N, inv (par P1 (R N)) (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness y\par P2 (Q3 y).
Subgoal 2.2.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (dn X) R
H8 : oneb Q2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 oneb (par P2 Q2) (dn X) (y\par P2 (Q3 y)) /\
   (forall N, inv (par P1 (R N)) (par P2 (Q3 N)))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.2.2.1:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (dn X) R
H8 : oneb Q2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 oneb (par P2 Q2) (dn X) (y\par P2 (Q3 y))

Subgoal 2.2.2.2 is:
 forall N, inv (par P1 (R N)) (par P2 (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.2.2.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (dn X) R
H8 : oneb Q2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 forall N, inv (par P1 (R N)) (par P2 (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.2.2.2:

Variables: Q2 P2 Q1 P1 X R Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (dn X) R
H8 : oneb Q2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
============================
 inv (par P1 (R N)) (par P2 (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H9 with N = N.
Subgoal 2.2.2.2:

Variables: Q2 P2 Q1 P1 X R Q3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (dn X) R
H8 : oneb Q2 (dn X) Q3
H9 : forall N, inv (R N) (Q3 N)
H10 : inv (R N) (Q3 N)
============================
 inv (par P1 (R N)) (par P2 (Q3 N))

Subgoal 2.3 is:
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.3:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
============================
 forall X P3, oneb (par P1 Q1) (up X) P3 ->
   (exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.3:

Variables: Q2 P2 Q1 P1 X P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H6 : oneb (par P1 Q1) (up X) P3
============================
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\ (nabla x, inv (P3 x) (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H6.
Subgoal 2.3.1:

Variables: Q2 P2 Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (up X) R
============================
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par (R x) Q1) (Q3 x))

Subgoal 2.3.2 is:
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par P1 (R x)) (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv3 to H7.
Subgoal 2.3.1:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (up X) R
H8 : oneb P2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par (R x) Q1) (Q3 x))

Subgoal 2.3.2 is:
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par P1 (R x)) (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness y\par (Q3 y) Q2.
Subgoal 2.3.1:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (up X) R
H8 : oneb P2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 oneb (par P2 Q2) (up X) (y\par (Q3 y) Q2) /\
   (nabla x, inv (par (R x) Q1) (par (Q3 x) Q2))

Subgoal 2.3.2 is:
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par P1 (R x)) (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.3.1.1:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (up X) R
H8 : oneb P2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 oneb (par P2 Q2) (up X) (y\par (Q3 y) Q2)

Subgoal 2.3.1.2 is:
 nabla x, inv (par (R x) Q1) (par (Q3 x) Q2)

Subgoal 2.3.2 is:
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par P1 (R x)) (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.3.1.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (up X) R
H8 : oneb P2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 nabla x, inv (par (R x) Q1) (par (Q3 x) Q2)

Subgoal 2.3.2 is:
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par P1 (R x)) (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.3.1.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P1 (up X) R
H8 : oneb P2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 inv (par (R n1) Q1) (par (Q3 n1) Q2)

Subgoal 2.3.2 is:
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par P1 (R x)) (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.3.2:

Variables: Q2 P2 Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (up X) R
============================
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par P1 (R x)) (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv3 to H7.
Subgoal 2.3.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (up X) R
H8 : oneb Q2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 exists Q3, oneb (par P2 Q2) (up X) Q3 /\
   (nabla x, inv (par P1 (R x)) (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness y\par P2 (Q3 y).
Subgoal 2.3.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (up X) R
H8 : oneb Q2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 oneb (par P2 Q2) (up X) (y\par P2 (Q3 y)) /\
   (nabla x, inv (par P1 (R x)) (par P2 (Q3 x)))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.3.2.1:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (up X) R
H8 : oneb Q2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 oneb (par P2 Q2) (up X) (y\par P2 (Q3 y))

Subgoal 2.3.2.2 is:
 nabla x, inv (par P1 (R x)) (par P2 (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.3.2.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (up X) R
H8 : oneb Q2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 nabla x, inv (par P1 (R x)) (par P2 (Q3 x))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.3.2.2:

Variables: Q2 P2 Q1 P1 X R Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q1 (up X) R
H8 : oneb Q2 (up X) Q3
H9 : inv (R n1) (Q3 n1)
============================
 inv (par P1 (R n1)) (par P2 (Q3 n1))

Subgoal 2.4 is:
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
============================
 forall L Q3, one (par P2 Q2) L Q3 ->
   (exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3)

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.4:

Variables: Q2 P2 Q1 P1 L Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H6 : one (par P2 Q2) L Q3
============================
 exists P3, one (par P1 Q1) L P3 /\ inv P3 Q3

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H6.
Subgoal 2.4.1:

Variables: Q2 P2 Q1 P1 L R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one P2 L R
============================
 exists P3, one (par P1 Q1) L P3 /\ inv P3 (par R Q2)

Subgoal 2.4.2 is:
 exists P3, one (par P1 Q1) L P3 /\ inv P3 (par P2 R)

Subgoal 2.4.3 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP QQ)

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv4 to H7.
Subgoal 2.4.1:

Variables: Q2 P2 Q1 P1 L R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one P2 L R
H8 : one P1 L P3
H9 : inv P3 R
============================
 exists P3, one (par P1 Q1) L P3 /\ inv P3 (par R Q2)

Subgoal 2.4.2 is:
 exists P3, one (par P1 Q1) L P3 /\ inv P3 (par P2 R)

Subgoal 2.4.3 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP QQ)

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4.2:

Variables: Q2 P2 Q1 P1 L R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one Q2 L R
============================
 exists P3, one (par P1 Q1) L P3 /\ inv P3 (par P2 R)

Subgoal 2.4.3 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP QQ)

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv4 to H7.
Subgoal 2.4.2:

Variables: Q2 P2 Q1 P1 L R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : one Q2 L R
H8 : one Q1 L P3
H9 : inv P3 R
============================
 exists P3, one (par P1 Q1) L P3 /\ inv P3 (par P2 R)

Subgoal 2.4.3 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP QQ)

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4.3:

Variables: Q2 P2 Q1 P1 QQ PP
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : (exists X Y R, oneb P2 (dn X) R /\ one Q2 (up X Y) QQ /\ PP = R Y) \/
       (exists X Y R, one P2 (up X Y) PP /\ oneb Q2 (dn X) R /\ QQ = R Y)
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP QQ)

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H7.
Subgoal 2.4.3.1:

Variables: Q2 P2 Q1 P1 QQ X Y R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) R
H9 : one Q2 (up X Y) QQ
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par (R Y) QQ)

Subgoal 2.4.3.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv5 to H8.
Subgoal 2.4.3.1:

Variables: Q2 P2 Q1 P1 QQ X Y R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) R
H9 : one Q2 (up X Y) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (R N)
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par (R Y) QQ)

Subgoal 2.4.3.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv4 to H9.
Subgoal 2.4.3.1:

Variables: Q2 P2 Q1 P1 QQ X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) R
H9 : one Q2 (up X Y) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (R N)
H12 : one Q1 (up X Y) P4
H13 : inv P4 QQ
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par (R Y) QQ)

Subgoal 2.4.3.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness par (P3 Y) P4.
Subgoal 2.4.3.1:

Variables: Q2 P2 Q1 P1 QQ X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) R
H9 : one Q2 (up X Y) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (R N)
H12 : one Q1 (up X Y) P4
H13 : inv P4 QQ
============================
 one (par P1 Q1) tau (par (P3 Y) P4) /\ inv (par (P3 Y) P4) (par (R Y) QQ)

Subgoal 2.4.3.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.4.3.1.1:

Variables: Q2 P2 Q1 P1 QQ X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) R
H9 : one Q2 (up X Y) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (R N)
H12 : one Q1 (up X Y) P4
H13 : inv P4 QQ
============================
 one (par P1 Q1) tau (par (P3 Y) P4)

Subgoal 2.4.3.1.2 is:
 inv (par (P3 Y) P4) (par (R Y) QQ)

Subgoal 2.4.3.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4.3.1.2:

Variables: Q2 P2 Q1 P1 QQ X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) R
H9 : one Q2 (up X Y) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (R N)
H12 : one Q1 (up X Y) P4
H13 : inv P4 QQ
============================
 inv (par (P3 Y) P4) (par (R Y) QQ)

Subgoal 2.4.3.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H11 with N = Y.
Subgoal 2.4.3.1.2:

Variables: Q2 P2 Q1 P1 QQ X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) R
H9 : one Q2 (up X Y) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (R N)
H12 : one Q1 (up X Y) P4
H13 : inv P4 QQ
H14 : inv (P3 Y) (R Y)
============================
 inv (par (P3 Y) P4) (par (R Y) QQ)

Subgoal 2.4.3.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4.3.2:

Variables: Q2 P2 Q1 P1 PP X Y R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P2 (up X Y) PP
H9 : oneb Q2 (dn X) R
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv4 to H8.
Subgoal 2.4.3.2:

Variables: Q2 P2 Q1 P1 PP X Y R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P2 (up X Y) PP
H9 : oneb Q2 (dn X) R
H10 : one P1 (up X Y) P3
H11 : inv P3 PP
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv5 to H9.
Subgoal 2.4.3.2:

Variables: Q2 P2 Q1 P1 PP X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P2 (up X Y) PP
H9 : oneb Q2 (dn X) R
H10 : one P1 (up X Y) P3
H11 : inv P3 PP
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (R N)
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness par P3 (P4 Y).
Subgoal 2.4.3.2:

Variables: Q2 P2 Q1 P1 PP X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P2 (up X Y) PP
H9 : oneb Q2 (dn X) R
H10 : one P1 (up X Y) P3
H11 : inv P3 PP
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (R N)
============================
 one (par P1 Q1) tau (par P3 (P4 Y)) /\ inv (par P3 (P4 Y)) (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.4.3.2.1:

Variables: Q2 P2 Q1 P1 PP X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P2 (up X Y) PP
H9 : oneb Q2 (dn X) R
H10 : one P1 (up X Y) P3
H11 : inv P3 PP
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (R N)
============================
 one (par P1 Q1) tau (par P3 (P4 Y))

Subgoal 2.4.3.2.2 is:
 inv (par P3 (P4 Y)) (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4.3.2.2:

Variables: Q2 P2 Q1 P1 PP X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P2 (up X Y) PP
H9 : oneb Q2 (dn X) R
H10 : one P1 (up X Y) P3
H11 : inv P3 PP
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (R N)
============================
 inv (par P3 (P4 Y)) (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H13 with N = Y.
Subgoal 2.4.3.2.2:

Variables: Q2 P2 Q1 P1 PP X Y R P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : one P2 (up X Y) PP
H9 : oneb Q2 (dn X) R
H10 : one P1 (up X Y) P3
H11 : inv P3 PP
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (R N)
H14 : inv (P4 Y) (R Y)
============================
 inv (par P3 (P4 Y)) (par PP (R Y))

Subgoal 2.4.4 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4.4:

Variables: Q2 P2 Q1 P1 QQ PP
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : (exists X, oneb P2 (dn X) PP /\ oneb Q2 (up X) QQ) \/
       (exists X, oneb P2 (up X) PP /\ oneb Q2 (dn X) QQ)
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H7.
Subgoal 2.4.4.1:

Variables: Q2 P2 Q1 P1 QQ PP X
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) PP
H9 : oneb Q2 (up X) QQ
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.4.4.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv5 to H8.
Subgoal 2.4.4.1:

Variables: Q2 P2 Q1 P1 QQ PP X P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) PP
H9 : oneb Q2 (up X) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (PP N)
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.4.4.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv6 to H9.
Subgoal 2.4.4.1:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) PP
H9 : oneb Q2 (up X) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (PP N)
H12 : oneb Q1 (up X) P4
H13 : inv (P4 n1) (QQ n1)
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.4.4.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness nu (y\par (P3 y) (P4 y)).
Subgoal 2.4.4.1:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) PP
H9 : oneb Q2 (up X) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (PP N)
H12 : oneb Q1 (up X) P4
H13 : inv (P4 n1) (QQ n1)
============================
 one (par P1 Q1) tau (nu (y\par (P3 y) (P4 y))) /\
   inv (nu (y\par (P3 y) (P4 y))) (nu (y\par (PP y) (QQ y)))

Subgoal 2.4.4.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.4.4.1.1:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) PP
H9 : oneb Q2 (up X) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (PP N)
H12 : oneb Q1 (up X) P4
H13 : inv (P4 n1) (QQ n1)
============================
 one (par P1 Q1) tau (nu (y\par (P3 y) (P4 y)))

Subgoal 2.4.4.1.2 is:
 inv (nu (y\par (P3 y) (P4 y))) (nu (y\par (PP y) (QQ y)))

Subgoal 2.4.4.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4.4.1.2:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) PP
H9 : oneb Q2 (up X) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (PP N)
H12 : oneb Q1 (up X) P4
H13 : inv (P4 n1) (QQ n1)
============================
 inv (nu (y\par (P3 y) (P4 y))) (nu (y\par (PP y) (QQ y)))

Subgoal 2.4.4.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H11 with N = n1.
Subgoal 2.4.4.1.2:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (dn X) PP
H9 : oneb Q2 (up X) QQ
H10 : oneb P1 (dn X) P3
H11 : forall N, inv (P3 N) (PP N)
H12 : oneb Q1 (up X) P4
H13 : inv (P4 n1) (QQ n1)
H14 : inv (P3 n1) (PP n1)
============================
 inv (nu (y\par (P3 y) (P4 y))) (nu (y\par (PP y) (QQ y)))

Subgoal 2.4.4.2 is:
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4.4.2:

Variables: Q2 P2 Q1 P1 QQ PP X
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (up X) PP
H9 : oneb Q2 (dn X) QQ
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv6 to H8.
Subgoal 2.4.4.2:

Variables: Q2 P2 Q1 P1 QQ PP X P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (up X) PP
H9 : oneb Q2 (dn X) QQ
H10 : oneb P1 (up X) P3
H11 : inv (P3 n1) (PP n1)
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv5 to H9.
Subgoal 2.4.4.2:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (up X) PP
H9 : oneb Q2 (dn X) QQ
H10 : oneb P1 (up X) P3
H11 : inv (P3 n1) (PP n1)
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (QQ N)
============================
 exists P3, one (par P1 Q1) tau P3 /\ inv P3 (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness nu (y\par (P3 y) (P4 y)).
Subgoal 2.4.4.2:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (up X) PP
H9 : oneb Q2 (dn X) QQ
H10 : oneb P1 (up X) P3
H11 : inv (P3 n1) (PP n1)
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (QQ N)
============================
 one (par P1 Q1) tau (nu (y\par (P3 y) (P4 y))) /\
   inv (nu (y\par (P3 y) (P4 y))) (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.4.4.2.1:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (up X) PP
H9 : oneb Q2 (dn X) QQ
H10 : oneb P1 (up X) P3
H11 : inv (P3 n1) (PP n1)
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (QQ N)
============================
 one (par P1 Q1) tau (nu (y\par (P3 y) (P4 y)))

Subgoal 2.4.4.2.2 is:
 inv (nu (y\par (P3 y) (P4 y))) (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.4.4.2.2:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (up X) PP
H9 : oneb Q2 (dn X) QQ
H10 : oneb P1 (up X) P3
H11 : inv (P3 n1) (PP n1)
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (QQ N)
============================
 inv (nu (y\par (P3 y) (P4 y))) (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H13 with N = n1.
Subgoal 2.4.4.2.2:

Variables: Q2 P2 Q1 P1 QQ PP X P3 P4
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H8 : oneb P2 (up X) PP
H9 : oneb Q2 (dn X) QQ
H10 : oneb P1 (up X) P3
H11 : inv (P3 n1) (PP n1)
H12 : oneb Q1 (dn X) P4
H13 : forall N, inv (P4 N) (QQ N)
H14 : inv (P4 n1) (QQ n1)
============================
 inv (nu (y\par (P3 y) (P4 y))) (nu (y\par (PP y) (QQ y)))

Subgoal 2.5 is:
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.5:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
============================
 forall X Q3, oneb (par P2 Q2) (dn X) Q3 ->
   (exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.5:

Variables: Q2 P2 Q1 P1 X Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H6 : oneb (par P2 Q2) (dn X) Q3
============================
 exists P3, oneb (par P1 Q1) (dn X) P3 /\ (forall N, inv (P3 N) (Q3 N))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H6.
Subgoal 2.5.1:

Variables: Q2 P2 Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (dn X) R
============================
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par (R N) Q2))

Subgoal 2.5.2 is:
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv5 to H7.
Subgoal 2.5.1:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (dn X) R
H8 : oneb P1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par (R N) Q2))

Subgoal 2.5.2 is:
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness y\par (P3 y) Q1.
Subgoal 2.5.1:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (dn X) R
H8 : oneb P1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 oneb (par P1 Q1) (dn X) (y\par (P3 y) Q1) /\
   (forall N, inv (par (P3 N) Q1) (par (R N) Q2))

Subgoal 2.5.2 is:
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.5.1.1:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (dn X) R
H8 : oneb P1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 oneb (par P1 Q1) (dn X) (y\par (P3 y) Q1)

Subgoal 2.5.1.2 is:
 forall N, inv (par (P3 N) Q1) (par (R N) Q2)

Subgoal 2.5.2 is:
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.5.1.2:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (dn X) R
H8 : oneb P1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 forall N, inv (par (P3 N) Q1) (par (R N) Q2)

Subgoal 2.5.2 is:
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.5.1.2:

Variables: Q2 P2 Q1 P1 X R P3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (dn X) R
H8 : oneb P1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 inv (par (P3 N) Q1) (par (R N) Q2)

Subgoal 2.5.2 is:
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H9 with N = N.
Subgoal 2.5.1.2:

Variables: Q2 P2 Q1 P1 X R P3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (dn X) R
H8 : oneb P1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
H10 : inv (P3 N) (R N)
============================
 inv (par (P3 N) Q1) (par (R N) Q2)

Subgoal 2.5.2 is:
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.5.2:

Variables: Q2 P2 Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (dn X) R
============================
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv5 to H7.
Subgoal 2.5.2:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (dn X) R
H8 : oneb Q1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 exists P3, oneb (par P1 Q1) (dn X) P3 /\
   (forall N, inv (P3 N) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness y\par P1 (P3 y).
Subgoal 2.5.2:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (dn X) R
H8 : oneb Q1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 oneb (par P1 Q1) (dn X) (y\par P1 (P3 y)) /\
   (forall N, inv (par P1 (P3 N)) (par P2 (R N)))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.5.2.1:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (dn X) R
H8 : oneb Q1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 oneb (par P1 Q1) (dn X) (y\par P1 (P3 y))

Subgoal 2.5.2.2 is:
 forall N, inv (par P1 (P3 N)) (par P2 (R N))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.5.2.2:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (dn X) R
H8 : oneb Q1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 forall N, inv (par P1 (P3 N)) (par P2 (R N))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.5.2.2:

Variables: Q2 P2 Q1 P1 X R P3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (dn X) R
H8 : oneb Q1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
============================
 inv (par P1 (P3 N)) (par P2 (R N))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply H9 with N = N.
Subgoal 2.5.2.2:

Variables: Q2 P2 Q1 P1 X R P3 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (dn X) R
H8 : oneb Q1 (dn X) P3
H9 : forall N, inv (P3 N) (R N)
H10 : inv (P3 N) (R N)
============================
 inv (par P1 (P3 N)) (par P2 (R N))

Subgoal 2.6 is:
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.6:

Variables: Q2 P2 Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
============================
 forall X Q3, oneb (par P2 Q2) (up X) Q3 ->
   (exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < intros.
Subgoal 2.6:

Variables: Q2 P2 Q1 P1 X Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H6 : oneb (par P2 Q2) (up X) Q3
============================
 exists P3, oneb (par P1 Q1) (up X) P3 /\ (nabla x, inv (P3 x) (Q3 x))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < case H6.
Subgoal 2.6.1:

Variables: Q2 P2 Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (up X) R
============================
 exists P3, oneb (par P1 Q1) (up X) P3 /\
   (nabla x, inv (P3 x) (par (R x) Q2))

Subgoal 2.6.2 is:
 exists P3, oneb (par P1 Q1) (up X) P3 /\
   (nabla x, inv (P3 x) (par P2 (R x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply PPInv6 to H7.
Subgoal 2.6.1:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (up X) R
H8 : oneb P1 (up X) P3
H9 : inv (P3 n1) (R n1)
============================
 exists P3, oneb (par P1 Q1) (up X) P3 /\
   (nabla x, inv (P3 x) (par (R x) Q2))

Subgoal 2.6.2 is:
 exists P3, oneb (par P1 Q1) (up X) P3 /\
   (nabla x, inv (P3 x) (par P2 (R x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness y\par (P3 y) Q1.
Subgoal 2.6.1:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (up X) R
H8 : oneb P1 (up X) P3
H9 : inv (P3 n1) (R n1)
============================
 oneb (par P1 Q1) (up X) (y\par (P3 y) Q1) /\
   (nabla x, inv (par (P3 x) Q1) (par (R x) Q2))

Subgoal 2.6.2 is:
 exists P3, oneb (par P1 Q1) (up X) P3 /\
   (nabla x, inv (P3 x) (par P2 (R x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.6.1.1:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (up X) R
H8 : oneb P1 (up X) P3
H9 : inv (P3 n1) (R n1)
============================
 oneb (par P1 Q1) (up X) (y\par (P3 y) Q1)

Subgoal 2.6.1.2 is:
 nabla x, inv (par (P3 x) Q1) (par (R x) Q2)

Subgoal 2.6.2 is:
 exists P3, oneb (par P1 Q1) (up X) P3 /\
   (nabla x, inv (P3 x) (par P2 (R x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.6.1.2:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb P2 (up X) R
H8 : oneb P1 (up X) P3
H9 : inv (P3 n1) (R n1)
============================
 nabla x, inv (par (P3 x) Q1) (par (R x) Q2)

Subgoal 2.6.2 is:
 exists P3, oneb (par P1 Q1) (up X) P3 /\
   (nabla x, inv (P3 x) (par P2 (R x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.6.2:

Variables: Q2 P2 Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (up X) R
============================
 exists P3, oneb (par P1 Q1) (up X) P3 /\
   (nabla x, inv (P3 x) (par P2 (R x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply QQInv6 to H7.
Subgoal 2.6.2:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (up X) R
H8 : oneb Q1 (up X) P3
H9 : inv (P3 n1) (R n1)
============================
 exists P3, oneb (par P1 Q1) (up X) P3 /\
   (nabla x, inv (P3 x) (par P2 (R x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < witness y\par P1 (P3 y).
Subgoal 2.6.2:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (up X) R
H8 : oneb Q1 (up X) P3
H9 : inv (P3 n1) (R n1)
============================
 oneb (par P1 Q1) (up X) (y\par P1 (P3 y)) /\
   (nabla x, inv (par P1 (P3 x)) (par P2 (R x)))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < split.
Subgoal 2.6.2.1:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (up X) R
H8 : oneb Q1 (up X) P3
H9 : inv (P3 n1) (R n1)
============================
 oneb (par P1 Q1) (up X) (y\par P1 (P3 y))

Subgoal 2.6.2.2 is:
 nabla x, inv (par P1 (P3 x)) (par P2 (R x))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 2.6.2.2:

Variables: Q2 P2 Q1 P1 X R P3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv P1 P2 *
H3 : inv Q1 Q2 *
PPInv1 : forall L P3, one P1 L P3 -> (exists Q1, one P2 L Q1 /\ inv P3 Q1)
PPInv2 : forall X P3, oneb P1 (dn X) P3 ->
           (exists Q1, oneb P2 (dn X) Q1 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv3 : forall X P3, oneb P1 (up X) P3 ->
           (exists Q1, oneb P2 (up X) Q1 /\ (nabla x, inv (P3 x) (Q1 x)))
PPInv4 : forall L Q1, one P2 L Q1 -> (exists P3, one P1 L P3 /\ inv P3 Q1)
PPInv5 : forall X Q1, oneb P2 (dn X) Q1 ->
           (exists P3, oneb P1 (dn X) P3 /\ (forall N, inv (P3 N) (Q1 N)))
PPInv6 : forall X Q1, oneb P2 (up X) Q1 ->
           (exists P3, oneb P1 (up X) P3 /\ (nabla x, inv (P3 x) (Q1 x)))
QQInv1 : forall L P1, one Q1 L P1 -> (exists Q3, one Q2 L Q3 /\ inv P1 Q3)
QQInv2 : forall X P1, oneb Q1 (dn X) P1 ->
           (exists Q3, oneb Q2 (dn X) Q3 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv3 : forall X P1, oneb Q1 (up X) P1 ->
           (exists Q3, oneb Q2 (up X) Q3 /\ (nabla x, inv (P1 x) (Q3 x)))
QQInv4 : forall L Q3, one Q2 L Q3 -> (exists P1, one Q1 L P1 /\ inv P1 Q3)
QQInv5 : forall X Q3, oneb Q2 (dn X) Q3 ->
           (exists P1, oneb Q1 (dn X) P1 /\ (forall N, inv (P1 N) (Q3 N)))
QQInv6 : forall X Q3, oneb Q2 (up X) Q3 ->
           (exists P1, oneb Q1 (up X) P1 /\ (nabla x, inv (P1 x) (Q3 x)))
H7 : oneb Q2 (up X) R
H8 : oneb Q1 (up X) P3
H9 : inv (P3 n1) (R n1)
============================
 nabla x, inv (par P1 (P3 x)) (par P2 (R x))

Subgoal 3 is:
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < search.
Subgoal 3:

Variables: Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
============================
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < apply IH to H2.
Subgoal 3:

Variables: Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
H3 : bisim_inv (P1 n1) (Q1 n1)
============================
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < Inv1 : case H3.
Subgoal 3:

Variables: Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 bisim_inv (nu P1) (nu Q1)

inv_bisim_inv < unfold.
Subgoal 3.1:

Variables: Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall L P2, one (nu P1) L P2 -> (exists Q2, one (nu Q1) L Q2 /\ inv P2 Q2)

Subgoal 3.2 is:
 forall X P2, oneb (nu P1) (dn X) P2 ->
   (exists Q2, oneb (nu Q1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < intros.
Subgoal 3.1:

Variables: Q1 P1 L P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H4 : one (nu P1) L P2
============================
 exists Q2, one (nu Q1) L Q2 /\ inv P2 Q2

Subgoal 3.2 is:
 forall X P2, oneb (nu P1) (dn X) P2 ->
   (exists Q2, oneb (nu Q1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < case H4.
Subgoal 3.1:

Variables: Q1 P1 L Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (P1 n1) L (Q2 n1)
============================
 exists Q3, one (nu Q1) L Q3 /\ inv (nu Q2) Q3

Subgoal 3.2 is:
 forall X P2, oneb (nu P1) (dn X) P2 ->
   (exists Q2, oneb (nu Q1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < apply Inv1 to H5.
Subgoal 3.1:

Variables: Q1 P1 L Q2 Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (P1 n1) L (Q2 n1)
H6 : one (Q1 n1) L (Q3 n1)
H7 : inv (Q2 n1) (Q3 n1)
============================
 exists Q3, one (nu Q1) L Q3 /\ inv (nu Q2) Q3

Subgoal 3.2 is:
 forall X P2, oneb (nu P1) (dn X) P2 ->
   (exists Q2, oneb (nu Q1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < search.
Subgoal 3.2:

Variables: Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall X P2, oneb (nu P1) (dn X) P2 ->
   (exists Q2, oneb (nu Q1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < intros.
Subgoal 3.2:

Variables: Q1 P1 X P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H4 : oneb (nu P1) (dn X) P2
============================
 exists Q2, oneb (nu Q1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < case H4.
Subgoal 3.2:

Variables: Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (dn X) (R n1)
============================
 exists Q2, oneb (nu Q1) (dn X) Q2 /\ (forall N, inv (nu (x\R x N)) (Q2 N))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < apply Inv2 to H5.
Subgoal 3.2:

Variables: Q1 P1 X R Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (dn X) (R n1)
H6 : oneb (Q1 n1) (dn X) (Q2 n1)
H7 : forall N, inv (R n1 N) (Q2 n1 N)
============================
 exists Q2, oneb (nu Q1) (dn X) Q2 /\ (forall N, inv (nu (x\R x N)) (Q2 N))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < witness y\nu (x\Q2 x y).
Subgoal 3.2:

Variables: Q1 P1 X R Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (dn X) (R n1)
H6 : oneb (Q1 n1) (dn X) (Q2 n1)
H7 : forall N, inv (R n1 N) (Q2 n1 N)
============================
 oneb (nu Q1) (dn X) (y\nu (x\Q2 x y)) /\
   (forall N, inv (nu (x\R x N)) (nu (x\Q2 x N)))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < split.
Subgoal 3.2.1:

Variables: Q1 P1 X R Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (dn X) (R n1)
H6 : oneb (Q1 n1) (dn X) (Q2 n1)
H7 : forall N, inv (R n1 N) (Q2 n1 N)
============================
 oneb (nu Q1) (dn X) (y\nu (x\Q2 x y))

Subgoal 3.2.2 is:
 forall N, inv (nu (x\R x N)) (nu (x\Q2 x N))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < search.
Subgoal 3.2.2:

Variables: Q1 P1 X R Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (dn X) (R n1)
H6 : oneb (Q1 n1) (dn X) (Q2 n1)
H7 : forall N, inv (R n1 N) (Q2 n1 N)
============================
 forall N, inv (nu (x\R x N)) (nu (x\Q2 x N))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < intros.
Subgoal 3.2.2:

Variables: Q1 P1 X R Q2 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (dn X) (R n1)
H6 : oneb (Q1 n1) (dn X) (Q2 n1)
H7 : forall N, inv (R n1 N) (Q2 n1 N)
============================
 inv (nu (x\R x N)) (nu (x\Q2 x N))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < apply H7 with N = N.
Subgoal 3.2.2:

Variables: Q1 P1 X R Q2 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (dn X) (R n1)
H6 : oneb (Q1 n1) (dn X) (Q2 n1)
H7 : forall N, inv (R n1 N) (Q2 n1 N)
H8 : inv (R n1 N) (Q2 n1 N)
============================
 inv (nu (x\R x N)) (nu (x\Q2 x N))

Subgoal 3.3 is:
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < search.
Subgoal 3.3:

Variables: Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall X P2, oneb (nu P1) (up X) P2 ->
   (exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < intros.
Subgoal 3.3:

Variables: Q1 P1 X P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H4 : oneb (nu P1) (up X) P2
============================
 exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < case H4.
Subgoal 3.3.1:

Variables: Q1 P1 X P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (P1 n1) (up X n1) (P2 n1)
============================
 exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x))

Subgoal 3.3.2 is:
 exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (nu (x\R x x)) (Q2 x))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < apply Inv1 to H5.
Subgoal 3.3.1:

Variables: Q1 P1 X P2 Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (P1 n1) (up X n1) (P2 n1)
H6 : one (Q1 n1) (up X n1) (Q2 n1)
H7 : inv (P2 n1) (Q2 n1)
============================
 exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x))

Subgoal 3.3.2 is:
 exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (nu (x\R x x)) (Q2 x))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < witness Q2.
Subgoal 3.3.1:

Variables: Q1 P1 X P2 Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (P1 n1) (up X n1) (P2 n1)
H6 : one (Q1 n1) (up X n1) (Q2 n1)
H7 : inv (P2 n1) (Q2 n1)
============================
 oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x))

Subgoal 3.3.2 is:
 exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (nu (x\R x x)) (Q2 x))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < search.
Subgoal 3.3.2:

Variables: Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (up X) (R n1)
============================
 exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (nu (x\R x x)) (Q2 x))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < apply Inv3 to H5.
Subgoal 3.3.2:

Variables: Q1 P1 X R Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (up X) (R n1)
H6 : oneb (Q1 n1) (up X) (Q2 n1)
H7 : inv (R n1 n2) (Q2 n1 n2)
============================
 exists Q2, oneb (nu Q1) (up X) Q2 /\ (nabla x, inv (nu (x\R x x)) (Q2 x))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < witness y\nu (x\Q2 x y).
Subgoal 3.3.2:

Variables: Q1 P1 X R Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (up X) (R n1)
H6 : oneb (Q1 n1) (up X) (Q2 n1)
H7 : inv (R n1 n2) (Q2 n1 n2)
============================
 oneb (nu Q1) (up X) (y\nu (x\Q2 x y)) /\
   (nabla x, inv (nu (x\R x x)) (nu (x\Q2 x x)))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < split.
Subgoal 3.3.2.1:

Variables: Q1 P1 X R Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (up X) (R n1)
H6 : oneb (Q1 n1) (up X) (Q2 n1)
H7 : inv (R n1 n2) (Q2 n1 n2)
============================
 oneb (nu Q1) (up X) (y\nu (x\Q2 x y))

Subgoal 3.3.2.2 is:
 nabla x, inv (nu (x\R x x)) (nu (x\Q2 x x))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < search.
Subgoal 3.3.2.2:

Variables: Q1 P1 X R Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (P1 n1) (up X) (R n1)
H6 : oneb (Q1 n1) (up X) (Q2 n1)
H7 : inv (R n1 n2) (Q2 n1 n2)
============================
 nabla x, inv (nu (x\R x x)) (nu (x\Q2 x x))

Subgoal 3.4 is:
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < search.
Subgoal 3.4:

Variables: Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall L Q2, one (nu Q1) L Q2 -> (exists P2, one (nu P1) L P2 /\ inv P2 Q2)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < intros.
Subgoal 3.4:

Variables: Q1 P1 L Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H4 : one (nu Q1) L Q2
============================
 exists P2, one (nu P1) L P2 /\ inv P2 Q2

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < case H4.
Subgoal 3.4:

Variables: Q1 P1 L Q3
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (Q1 n1) L (Q3 n1)
============================
 exists P2, one (nu P1) L P2 /\ inv P2 (nu Q3)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < apply Inv4 to H5.
Subgoal 3.4:

Variables: Q1 P1 L Q3 P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (Q1 n1) L (Q3 n1)
H6 : one (P1 n1) L (P2 n1)
H7 : inv (P2 n1) (Q3 n1)
============================
 exists P2, one (nu P1) L P2 /\ inv P2 (nu Q3)

Subgoal 3.5 is:
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < search.
Subgoal 3.5:

Variables: Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall X Q2, oneb (nu Q1) (dn X) Q2 ->
   (exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < intros.
Subgoal 3.5:

Variables: Q1 P1 X Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H4 : oneb (nu Q1) (dn X) Q2
============================
 exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < case H4.
Subgoal 3.5:

Variables: Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (dn X) (R n1)
============================
 exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (nu (x\R x N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < apply Inv5 to H5.
Subgoal 3.5:

Variables: Q1 P1 X R P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (dn X) (R n1)
H6 : oneb (P1 n1) (dn X) (P2 n1)
H7 : forall N, inv (P2 n1 N) (R n1 N)
============================
 exists P2, oneb (nu P1) (dn X) P2 /\ (forall N, inv (P2 N) (nu (x\R x N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < witness y\nu (x\P2 x y).
Subgoal 3.5:

Variables: Q1 P1 X R P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (dn X) (R n1)
H6 : oneb (P1 n1) (dn X) (P2 n1)
H7 : forall N, inv (P2 n1 N) (R n1 N)
============================
 oneb (nu P1) (dn X) (y\nu (x\P2 x y)) /\
   (forall N, inv (nu (x\P2 x N)) (nu (x\R x N)))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < split.
Subgoal 3.5.1:

Variables: Q1 P1 X R P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (dn X) (R n1)
H6 : oneb (P1 n1) (dn X) (P2 n1)
H7 : forall N, inv (P2 n1 N) (R n1 N)
============================
 oneb (nu P1) (dn X) (y\nu (x\P2 x y))

Subgoal 3.5.2 is:
 forall N, inv (nu (x\P2 x N)) (nu (x\R x N))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < search.
Subgoal 3.5.2:

Variables: Q1 P1 X R P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (dn X) (R n1)
H6 : oneb (P1 n1) (dn X) (P2 n1)
H7 : forall N, inv (P2 n1 N) (R n1 N)
============================
 forall N, inv (nu (x\P2 x N)) (nu (x\R x N))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < intros.
Subgoal 3.5.2:

Variables: Q1 P1 X R P2 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (dn X) (R n1)
H6 : oneb (P1 n1) (dn X) (P2 n1)
H7 : forall N, inv (P2 n1 N) (R n1 N)
============================
 inv (nu (x\P2 x N)) (nu (x\R x N))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < apply H7 with N = N.
Subgoal 3.5.2:

Variables: Q1 P1 X R P2 N
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (dn X) (R n1)
H6 : oneb (P1 n1) (dn X) (P2 n1)
H7 : forall N, inv (P2 n1 N) (R n1 N)
H8 : inv (P2 n1 N) (R n1 N)
============================
 inv (nu (x\P2 x N)) (nu (x\R x N))

Subgoal 3.6 is:
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < search.
Subgoal 3.6:

Variables: Q1 P1
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall X Q2, oneb (nu Q1) (up X) Q2 ->
   (exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))

inv_bisim_inv < intros.
Subgoal 3.6:

Variables: Q1 P1 X Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H4 : oneb (nu Q1) (up X) Q2
============================
 exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x))

inv_bisim_inv < case H4.
Subgoal 3.6.1:

Variables: Q1 P1 X Q2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (Q1 n1) (up X n1) (Q2 n1)
============================
 exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x))

Subgoal 3.6.2 is:
 exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (nu (x\R x x)))

inv_bisim_inv < apply Inv4 to H5.
Subgoal 3.6.1:

Variables: Q1 P1 X Q2 P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (Q1 n1) (up X n1) (Q2 n1)
H6 : one (P1 n1) (up X n1) (P2 n1)
H7 : inv (P2 n1) (Q2 n1)
============================
 exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x))

Subgoal 3.6.2 is:
 exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (nu (x\R x x)))

inv_bisim_inv < witness P2.
Subgoal 3.6.1:

Variables: Q1 P1 X Q2 P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : one (Q1 n1) (up X n1) (Q2 n1)
H6 : one (P1 n1) (up X n1) (P2 n1)
H7 : inv (P2 n1) (Q2 n1)
============================
 oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x))

Subgoal 3.6.2 is:
 exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (nu (x\R x x)))

inv_bisim_inv < search.
Subgoal 3.6.2:

Variables: Q1 P1 X R
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (up X) (R n1)
============================
 exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (nu (x\R x x)))

inv_bisim_inv < apply Inv6 to H5.
Subgoal 3.6.2:

Variables: Q1 P1 X R P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (up X) (R n1)
H6 : oneb (P1 n1) (up X) (P2 n1)
H7 : inv (P2 n1 n2) (R n1 n2)
============================
 exists P2, oneb (nu P1) (up X) P2 /\ (nabla x, inv (P2 x) (nu (x\R x x)))

inv_bisim_inv < witness y\nu (x\P2 x y).
Subgoal 3.6.2:

Variables: Q1 P1 X R P2
IH : forall P Q, inv P Q * -> bisim_inv P Q
H2 : inv (P1 n1) (Q1 n1) *
Inv1 : forall L P2, one (P1 n1) L P2 ->
         (exists Q2, one (Q1 n1) L Q2 /\ inv P2 Q2)
Inv2 : forall X P2, oneb (P1 n1) (dn X) P2 ->
         (exists Q2, oneb (Q1 n1) (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv3 : forall X P2, oneb (P1 n1) (up X) P2 ->
         (exists Q2, oneb (Q1 n1) (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
Inv4 : forall L Q2, one (Q1 n1) L Q2 ->
         (exists P2, one (P1 n1) L P2 /\ inv P2 Q2)
Inv5 : forall X Q2, oneb (Q1 n1) (dn X) Q2 ->
         (exists P2, oneb (P1 n1) (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
Inv6 : forall X Q2, oneb (Q1 n1) (up X) Q2 ->
         (exists P2, oneb (P1 n1) (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H5 : oneb (Q1 n1) (up X) (R n1)
H6 : oneb (P1 n1) (up X) (P2 n1)
H7 : inv (P2 n1 n2) (R n1 n2)
============================
 oneb (nu P1) (up X) (y\nu (x\P2 x y)) /\
   (nabla x, inv (nu (x\P2 x x)) (nu (x\R x x)))

inv_bisim_inv < search.
Proof completed.
Abella < Theorem bisim_inv_bisim : 
forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q.

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

bisim_inv_bisim < coinduction.

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

bisim_inv_bisim < intros.

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

bisim_inv_bisim < BInv1 : case H1.

Variables: P Q
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 bisim_up_to refl_t P Q #

bisim_inv_bisim < unfold.
Subgoal 1:

Variables: P Q
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall L P1, one P L P1 ->
   (exists Q1, one Q L Q1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < intros.
Subgoal 1:

Variables: P Q L P1
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
============================
 exists Q1, one Q L Q1 /\
   (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < apply BInv1 to H2.
Subgoal 1:

Variables: P Q L P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
H3 : one Q L Q2
H4 : inv P1 Q2
============================
 exists Q1, one Q L Q1 /\
   (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness Q2.
Subgoal 1:

Variables: P Q L P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
H3 : one Q L Q2
H4 : inv P1 Q2
============================
 one Q L Q2 /\
   (exists P2 Q1, refl_t P1 P2 Q2 Q1 /\ bisim_up_to refl_t P2 Q1 +)

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 1.1:

Variables: P Q L P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
H3 : one Q L Q2
H4 : inv P1 Q2
============================
 one Q L Q2

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

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 1.2:

Variables: P Q L P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
H3 : one Q L Q2
H4 : inv P1 Q2
============================
 exists P2 Q1, refl_t P1 P2 Q2 Q1 /\ bisim_up_to refl_t P2 Q1 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness P1.
Subgoal 1.2:

Variables: P Q L P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
H3 : one Q L Q2
H4 : inv P1 Q2
============================
 exists Q1, refl_t P1 P1 Q2 Q1 /\ bisim_up_to refl_t P1 Q1 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness Q2.
Subgoal 1.2:

Variables: P Q L P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
H3 : one Q L Q2
H4 : inv P1 Q2
============================
 refl_t P1 P1 Q2 Q2 /\ bisim_up_to refl_t P1 Q2 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 1.2.1:

Variables: P Q L P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
H3 : one Q L Q2
H4 : inv P1 Q2
============================
 refl_t P1 P1 Q2 Q2

Subgoal 1.2.2 is:
 bisim_up_to refl_t P1 Q2 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 1.2.2:

Variables: P Q L P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
H3 : one Q L Q2
H4 : inv P1 Q2
============================
 bisim_up_to refl_t P1 Q2 +

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain CH.
Subgoal 1.2.2:

Variables: P Q L P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one P L P1
H3 : one Q L Q2
H4 : inv P1 Q2
============================
 bisim_inv P1 Q2

Subgoal 2 is:
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain inv_bisim_inv.
Subgoal 2:

Variables: P Q
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall X P1, oneb P (dn X) P1 ->
   (exists Q1, oneb Q (dn X) Q1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < intros.
Subgoal 2:

Variables: P Q X P1
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
============================
 exists Q1, oneb Q (dn X) Q1 /\
   (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
      bisim_up_to refl_t (P2 N) (Q2 N) +)

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < apply BInv2 to H2.
Subgoal 2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 exists Q1, oneb Q (dn X) Q1 /\
   (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
      bisim_up_to refl_t (P2 N) (Q2 N) +)

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness Q2.
Subgoal 2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 oneb Q (dn X) Q2 /\
   (exists P2 Q1, forall N, refl_t (P1 N) (P2 N) (Q2 N) (Q1 N) /\
      bisim_up_to refl_t (P2 N) (Q1 N) +)

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 2.1:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 oneb Q (dn X) Q2

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

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 2.2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 exists P2 Q1, forall N, refl_t (P1 N) (P2 N) (Q2 N) (Q1 N) /\
   bisim_up_to refl_t (P2 N) (Q1 N) +

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness P1.
Subgoal 2.2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 exists Q1, forall N, refl_t (P1 N) (P1 N) (Q2 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 Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness Q2.
Subgoal 2.2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 forall N, refl_t (P1 N) (P1 N) (Q2 N) (Q2 N) /\
   bisim_up_to refl_t (P1 N) (Q2 N) +

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < intros.
Subgoal 2.2:

Variables: P Q X P1 Q2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 refl_t (P1 N) (P1 N) (Q2 N) (Q2 N) /\ bisim_up_to refl_t (P1 N) (Q2 N) +

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 2.2.1:

Variables: P Q X P1 Q2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 refl_t (P1 N) (P1 N) (Q2 N) (Q2 N)

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

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 2.2.2:

Variables: P Q X P1 Q2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (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 Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain CH.
Subgoal 2.2.2:

Variables: P Q X P1 Q2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 bisim_inv (P1 N) (Q2 N)

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain inv_bisim_inv.
Subgoal 2.2.2:

Variables: P Q X P1 Q2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (dn X) P1
H3 : oneb Q (dn X) Q2
H4 : forall N, inv (P1 N) (Q2 N)
============================
 inv (P1 N) (Q2 N)

Subgoal 3 is:
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain H4.
Subgoal 3:

Variables: P Q
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall X P1, oneb P (up X) P1 ->
   (exists Q1, oneb Q (up X) Q1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < intros.
Subgoal 3:

Variables: P Q X P1
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
============================
 exists Q1, oneb Q (up X) Q1 /\
   (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
      bisim_up_to refl_t (P2 x) (Q2 x) +)

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < apply BInv3 to H2.
Subgoal 3:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 exists Q1, oneb Q (up X) Q1 /\
   (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
      bisim_up_to refl_t (P2 x) (Q2 x) +)

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness Q2.
Subgoal 3:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 oneb Q (up X) Q2 /\
   (exists P2 Q1, nabla x, refl_t (P1 x) (P2 x) (Q2 x) (Q1 x) /\
      bisim_up_to refl_t (P2 x) (Q1 x) +)

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 3.1:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 oneb Q (up X) Q2

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

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 3.2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 exists P2 Q1, nabla x, refl_t (P1 x) (P2 x) (Q2 x) (Q1 x) /\
   bisim_up_to refl_t (P2 x) (Q1 x) +

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness P1.
Subgoal 3.2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 exists Q1, nabla x, refl_t (P1 x) (P1 x) (Q2 x) (Q1 x) /\
   bisim_up_to refl_t (P1 x) (Q1 x) +

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness Q2.
Subgoal 3.2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 nabla x, refl_t (P1 x) (P1 x) (Q2 x) (Q2 x) /\
   bisim_up_to refl_t (P1 x) (Q2 x) +

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < intros.
Subgoal 3.2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 refl_t (P1 n1) (P1 n1) (Q2 n1) (Q2 n1) /\
   bisim_up_to refl_t (P1 n1) (Q2 n1) +

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 3.2.1:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 refl_t (P1 n1) (P1 n1) (Q2 n1) (Q2 n1)

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

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 3.2.2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 bisim_up_to refl_t (P1 n1) (Q2 n1) +

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain CH.
Subgoal 3.2.2:

Variables: P Q X P1 Q2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb P (up X) P1
H3 : oneb Q (up X) Q2
H4 : inv (P1 n1) (Q2 n1)
============================
 bisim_inv (P1 n1) (Q2 n1)

Subgoal 4 is:
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain inv_bisim_inv.
Subgoal 4:

Variables: P Q
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall L Q1, one Q L Q1 ->
   (exists P1, one P L P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < intros.
Subgoal 4:

Variables: P Q L Q1
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
============================
 exists P1, one P L P1 /\
   (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < apply BInv4 to H2.
Subgoal 4:

Variables: P Q L Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
H3 : one P L P2
H4 : inv P2 Q1
============================
 exists P1, one P L P1 /\
   (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness P2.
Subgoal 4:

Variables: P Q L Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
H3 : one P L P2
H4 : inv P2 Q1
============================
 one P L P2 /\
   (exists P1 Q2, refl_t P2 P1 Q1 Q2 /\ bisim_up_to refl_t P1 Q2 +)

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 4.1:

Variables: P Q L Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
H3 : one P L P2
H4 : inv P2 Q1
============================
 one P L P2

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

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 4.2:

Variables: P Q L Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
H3 : one P L P2
H4 : inv P2 Q1
============================
 exists P1 Q2, refl_t P2 P1 Q1 Q2 /\ bisim_up_to refl_t P1 Q2 +

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness P2.
Subgoal 4.2:

Variables: P Q L Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
H3 : one P L P2
H4 : inv P2 Q1
============================
 exists Q2, refl_t P2 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness Q1.
Subgoal 4.2:

Variables: P Q L Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
H3 : one P L P2
H4 : inv P2 Q1
============================
 refl_t P2 P2 Q1 Q1 /\ bisim_up_to refl_t P2 Q1 +

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 4.2.1:

Variables: P Q L Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
H3 : one P L P2
H4 : inv P2 Q1
============================
 refl_t P2 P2 Q1 Q1

Subgoal 4.2.2 is:
 bisim_up_to refl_t P2 Q1 +

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 4.2.2:

Variables: P Q L Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
H3 : one P L P2
H4 : inv P2 Q1
============================
 bisim_up_to refl_t P2 Q1 +

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain CH.
Subgoal 4.2.2:

Variables: P Q L Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : one Q L Q1
H3 : one P L P2
H4 : inv P2 Q1
============================
 bisim_inv P2 Q1

Subgoal 5 is:
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain inv_bisim_inv.
Subgoal 5:

Variables: P Q
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall X Q1, oneb Q (dn X) Q1 ->
   (exists P1, oneb P (dn X) P1 /\
      (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
         bisim_up_to refl_t (P2 N) (Q2 N) +))

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < intros.
Subgoal 5:

Variables: P Q X Q1
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
============================
 exists P1, oneb P (dn X) P1 /\
   (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
      bisim_up_to refl_t (P2 N) (Q2 N) +)

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < apply BInv5 to H2.
Subgoal 5:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 exists P1, oneb P (dn X) P1 /\
   (exists P2 Q2, forall N, refl_t (P1 N) (P2 N) (Q1 N) (Q2 N) /\
      bisim_up_to refl_t (P2 N) (Q2 N) +)

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness P2.
Subgoal 5:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 oneb P (dn X) P2 /\
   (exists P1 Q2, forall N, refl_t (P2 N) (P1 N) (Q1 N) (Q2 N) /\
      bisim_up_to refl_t (P1 N) (Q2 N) +)

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 5.1:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 oneb P (dn X) P2

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

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 5.2:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 exists P1 Q2, forall N, refl_t (P2 N) (P1 N) (Q1 N) (Q2 N) /\
   bisim_up_to refl_t (P1 N) (Q2 N) +

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness P2.
Subgoal 5.2:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 exists Q2, forall N, refl_t (P2 N) (P2 N) (Q1 N) (Q2 N) /\
   bisim_up_to refl_t (P2 N) (Q2 N) +

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < witness Q1.
Subgoal 5.2:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 forall N, refl_t (P2 N) (P2 N) (Q1 N) (Q1 N) /\
   bisim_up_to refl_t (P2 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < intros.
Subgoal 5.2:

Variables: P Q X Q1 P2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 refl_t (P2 N) (P2 N) (Q1 N) (Q1 N) /\ bisim_up_to refl_t (P2 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < split.
Subgoal 5.2.1:

Variables: P Q X Q1 P2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 refl_t (P2 N) (P2 N) (Q1 N) (Q1 N)

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

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < search.
Subgoal 5.2.2:

Variables: P Q X Q1 P2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 bisim_up_to refl_t (P2 N) (Q1 N) +

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain CH.
Subgoal 5.2.2:

Variables: P Q X Q1 P2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 bisim_inv (P2 N) (Q1 N)

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain inv_bisim_inv.
Subgoal 5.2.2:

Variables: P Q X Q1 P2 N
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (dn X) Q1
H3 : oneb P (dn X) P2
H4 : forall N, inv (P2 N) (Q1 N)
============================
 inv (P2 N) (Q1 N)

Subgoal 6 is:
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < backchain H4.
Subgoal 6:

Variables: P Q
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
============================
 forall X Q1, oneb Q (up X) Q1 ->
   (exists P1, oneb P (up X) P1 /\
      (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
         bisim_up_to refl_t (P2 x) (Q2 x) +))

bisim_inv_bisim < intros.
Subgoal 6:

Variables: P Q X Q1
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
============================
 exists P1, oneb P (up X) P1 /\
   (exists P2 Q2, nabla x, refl_t (P1 x) (P2 x) (Q1 x) (Q2 x) /\
      bisim_up_to refl_t (P2 x) (Q2 x) +)

bisim_inv_bisim < apply BInv6 to H2.
Subgoal 6:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 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_inv_bisim < witness P2.
Subgoal 6:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 n1)
============================
 oneb P (up X) P2 /\
   (exists P1 Q2, nabla x, refl_t (P2 x) (P1 x) (Q1 x) (Q2 x) /\
      bisim_up_to refl_t (P1 x) (Q2 x) +)

bisim_inv_bisim < split.
Subgoal 6.1:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 n1)
============================
 oneb P (up X) P2

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

bisim_inv_bisim < search.
Subgoal 6.2:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 n1)
============================
 exists P1 Q2, nabla x, refl_t (P2 x) (P1 x) (Q1 x) (Q2 x) /\
   bisim_up_to refl_t (P1 x) (Q2 x) +

bisim_inv_bisim < witness P2.
Subgoal 6.2:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 n1)
============================
 exists Q2, nabla x, refl_t (P2 x) (P2 x) (Q1 x) (Q2 x) /\
   bisim_up_to refl_t (P2 x) (Q2 x) +

bisim_inv_bisim < witness Q1.
Subgoal 6.2:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 n1)
============================
 nabla x, refl_t (P2 x) (P2 x) (Q1 x) (Q1 x) /\
   bisim_up_to refl_t (P2 x) (Q1 x) +

bisim_inv_bisim < intros.
Subgoal 6.2:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 n1)
============================
 refl_t (P2 n1) (P2 n1) (Q1 n1) (Q1 n1) /\
   bisim_up_to refl_t (P2 n1) (Q1 n1) +

bisim_inv_bisim < split.
Subgoal 6.2.1:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 n1)
============================
 refl_t (P2 n1) (P2 n1) (Q1 n1) (Q1 n1)

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

bisim_inv_bisim < search.
Subgoal 6.2.2:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 n1)
============================
 bisim_up_to refl_t (P2 n1) (Q1 n1) +

bisim_inv_bisim < backchain CH.
Subgoal 6.2.2:

Variables: P Q X Q1 P2
CH : forall P Q, bisim_inv P Q -> bisim_up_to refl_t P Q +
BInv1 : forall L P2, one P L P2 -> (exists Q2, one Q L Q2 /\ inv P2 Q2)
BInv2 : forall X P2, oneb P (dn X) P2 ->
          (exists Q2, oneb Q (dn X) Q2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv3 : forall X P2, oneb P (up X) P2 ->
          (exists Q2, oneb Q (up X) Q2 /\ (nabla x, inv (P2 x) (Q2 x)))
BInv4 : forall L Q2, one Q L Q2 -> (exists P2, one P L P2 /\ inv P2 Q2)
BInv5 : forall X Q2, oneb Q (dn X) Q2 ->
          (exists P2, oneb P (dn X) P2 /\ (forall N, inv (P2 N) (Q2 N)))
BInv6 : forall X Q2, oneb Q (up X) Q2 ->
          (exists P2, oneb P (up X) P2 /\ (nabla x, inv (P2 x) (Q2 x)))
H2 : oneb Q (up X) Q1
H3 : oneb P (up X) P2
H4 : inv (P2 n1) (Q1 n1)
============================
 bisim_inv (P2 n1) (Q1 n1)

bisim_inv_bisim < backchain inv_bisim_inv.
Proof completed.
Abella < Theorem bisim_par_subst_1 : 
forall P Q R, bisim_up_to refl_t P Q ->
  bisim_up_to refl_t (par P R) (par Q R).

============================
 forall P Q R, bisim_up_to refl_t P Q ->
   bisim_up_to refl_t (par P R) (par Q R)

bisim_par_subst_1 < intros.

Variables: P Q R
H1 : bisim_up_to refl_t P Q
============================
 bisim_up_to refl_t (par P R) (par Q R)

bisim_par_subst_1 < apply bisim_reflexive with P = R.

Variables: P Q R
H1 : bisim_up_to refl_t P Q
H2 : bisim_up_to refl_t R R
============================
 bisim_up_to refl_t (par P R) (par Q R)

bisim_par_subst_1 < backchain bisim_inv_bisim.

Variables: P Q R
H1 : bisim_up_to refl_t P Q
H2 : bisim_up_to refl_t R R
============================
 bisim_inv (par P R) (par Q R)

bisim_par_subst_1 < backchain inv_bisim_inv.
Proof completed.
Abella < Theorem bisim_par_subst_2 : 
forall P Q R, bisim_up_to refl_t P Q ->
  bisim_up_to refl_t (par R P) (par R Q).

============================
 forall P Q R, bisim_up_to refl_t P Q ->
   bisim_up_to refl_t (par R P) (par R Q)

bisim_par_subst_2 < intros.

Variables: P Q R
H1 : bisim_up_to refl_t P Q
============================
 bisim_up_to refl_t (par R P) (par R Q)

bisim_par_subst_2 < apply bisim_reflexive with P = R.

Variables: P Q R
H1 : bisim_up_to refl_t P Q
H2 : bisim_up_to refl_t R R
============================
 bisim_up_to refl_t (par R P) (par R Q)

bisim_par_subst_2 < backchain bisim_inv_bisim.

Variables: P Q R
H1 : bisim_up_to refl_t P Q
H2 : bisim_up_to refl_t R R
============================
 bisim_inv (par R P) (par R Q)

bisim_par_subst_2 < backchain inv_bisim_inv.
Proof completed.
Abella < Theorem bisim_nu_subst : 
forall P Q, (nabla x, bisim_up_to refl_t (P x) (Q x)) ->
  bisim_up_to refl_t (nu P) (nu Q).

============================
 forall P Q, (nabla x, bisim_up_to refl_t (P x) (Q x)) ->
   bisim_up_to refl_t (nu P) (nu Q)

bisim_nu_subst < intros.

Variables: P Q
H1 : nabla x, bisim_up_to refl_t (P x) (Q x)
============================
 bisim_up_to refl_t (nu P) (nu Q)

bisim_nu_subst < apply H1 with x = n1.

Variables: P Q
H1 : nabla x, bisim_up_to refl_t (P x) (Q x)
H2 : bisim_up_to refl_t (P n1) (Q n1)
============================
 bisim_up_to refl_t (nu P) (nu Q)

bisim_nu_subst < backchain bisim_inv_bisim.

Variables: P Q
H1 : nabla x, bisim_up_to refl_t (P x) (Q x)
H2 : bisim_up_to refl_t (P n1) (Q n1)
============================
 bisim_inv (nu P) (nu Q)

bisim_nu_subst < backchain inv_bisim_inv.
Proof completed.
Abella < Goodbye.