Welcome to Abella 2.0.3-dev
Abella < Kind name, action, proc type.
Abella < Import "ccs_core".
Importing from ccs_core
Warning: Definition can be used to defeat stratification
  (higher-order argument "Tech" occurs to the left of ->)
Warning: Definition can be used to defeat stratification
  (higher-order argument "Rel" occurs to the left of ->)
Warning: Definition can be used to defeat stratification
  (higher-order argument "Rel" occurs to the left of ->)
Abella < Import "ccs_ctx".
Importing from ccs_ctx
Warning: Definition can be used to defeat stratification
  (higher-order argument "Rel" occurs to the left of ->)
Abella < Type a, b, c, d name.
Abella < Theorem bisim_par_null : 
forall P, bisim_up_to refl_t (par P null) P.

============================
 forall P, bisim_up_to refl_t (par P null) P

bisim_par_null < coinduction.

CH : forall P, bisim_up_to refl_t (par P null) P +
============================
 forall P, bisim_up_to refl_t (par P null) P #

bisim_par_null < intros.

Variables: P
CH : forall P, bisim_up_to refl_t (par P null) P +
============================
 bisim_up_to refl_t (par P null) P #

bisim_par_null < unfold.
Subgoal 1:

Variables: P
CH : forall P, bisim_up_to refl_t (par P null) P +
============================
 forall A P1, one (par P null) A P1 ->
   (exists Q1, one P A Q1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < intros.
Subgoal 1:

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

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < case H1.
Subgoal 1.1:

Variables: P A P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P A P3
============================
 exists Q1, one P A Q1 /\
   (exists P2 Q2, refl_t (par P3 null) P2 Q1 Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q2, one P A Q2 /\
   (exists P2 Q3, refl_t (par P Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < witness P3.
Subgoal 1.1:

Variables: P A P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P A P3
============================
 one P A P3 /\
   (exists P2 Q2, refl_t (par P3 null) P2 P3 Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q2, one P A Q2 /\
   (exists P2 Q3, refl_t (par P Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < split.
Subgoal 1.1.1:

Variables: P A P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P A P3
============================
 one P A P3

Subgoal 1.1.2 is:
 exists P2 Q2, refl_t (par P3 null) P2 P3 Q2 /\ bisim_up_to refl_t P2 Q2 +

Subgoal 1.2 is:
 exists Q2, one P A Q2 /\
   (exists P2 Q3, refl_t (par P Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < search.
Subgoal 1.1.2:

Variables: P A P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P A P3
============================
 exists P2 Q2, refl_t (par P3 null) P2 P3 Q2 /\ bisim_up_to refl_t P2 Q2 +

Subgoal 1.2 is:
 exists Q2, one P A Q2 /\
   (exists P2 Q3, refl_t (par P Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < witness par P3 null.
Subgoal 1.1.2:

Variables: P A P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P A P3
============================
 exists Q2, refl_t (par P3 null) (par P3 null) P3 Q2 /\
   bisim_up_to refl_t (par P3 null) Q2 +

Subgoal 1.2 is:
 exists Q2, one P A Q2 /\
   (exists P2 Q3, refl_t (par P Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < witness P3.
Subgoal 1.1.2:

Variables: P A P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P A P3
============================
 refl_t (par P3 null) (par P3 null) P3 P3 /\
   bisim_up_to refl_t (par P3 null) P3 +

Subgoal 1.2 is:
 exists Q2, one P A Q2 /\
   (exists P2 Q3, refl_t (par P Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < split.
Subgoal 1.1.2.1:

Variables: P A P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P A P3
============================
 refl_t (par P3 null) (par P3 null) P3 P3

Subgoal 1.1.2.2 is:
 bisim_up_to refl_t (par P3 null) P3 +

Subgoal 1.2 is:
 exists Q2, one P A Q2 /\
   (exists P2 Q3, refl_t (par P Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < search.
Subgoal 1.1.2.2:

Variables: P A P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P A P3
============================
 bisim_up_to refl_t (par P3 null) P3 +

Subgoal 1.2 is:
 exists Q2, one P A Q2 /\
   (exists P2 Q3, refl_t (par P Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < backchain CH.
Subgoal 1.2:

Variables: P A Q1
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one null A Q1
============================
 exists Q2, one P A Q2 /\
   (exists P2 Q3, refl_t (par P Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < case H2.
Subgoal 1.3:

Variables: P X Q1 P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P (up X) P3
H3 : one null (dn X) Q1
============================
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < case H3.
Subgoal 1.4:

Variables: P X Q1 P3
CH : forall P, bisim_up_to refl_t (par P null) P +
H2 : one P (dn X) P3
H3 : one null (up X) Q1
============================
 exists Q2, one P tau Q2 /\
   (exists P2 Q3, refl_t (par P3 Q1) P2 Q2 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < case H3.
Subgoal 2:

Variables: P
CH : forall P, bisim_up_to refl_t (par P null) P +
============================
 forall A Q1, one P A Q1 ->
   (exists P1, one (par P null) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_null < intros.
Subgoal 2:

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

bisim_par_null < witness par Q1 null.
Subgoal 2:

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

bisim_par_null < split.
Subgoal 2.1:

Variables: P A Q1
CH : forall P, bisim_up_to refl_t (par P null) P +
H1 : one P A Q1
============================
 one (par P null) A (par Q1 null)

Subgoal 2.2 is:
 exists P2 Q2, refl_t (par Q1 null) P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +

bisim_par_null < search.
Subgoal 2.2:

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

bisim_par_null < witness par Q1 null.
Subgoal 2.2:

Variables: P A Q1
CH : forall P, bisim_up_to refl_t (par P null) P +
H1 : one P A Q1
============================
 exists Q2, refl_t (par Q1 null) (par Q1 null) Q1 Q2 /\
   bisim_up_to refl_t (par Q1 null) Q2 +

bisim_par_null < witness Q1.
Subgoal 2.2:

Variables: P A Q1
CH : forall P, bisim_up_to refl_t (par P null) P +
H1 : one P A Q1
============================
 refl_t (par Q1 null) (par Q1 null) Q1 Q1 /\
   bisim_up_to refl_t (par Q1 null) Q1 +

bisim_par_null < split.
Subgoal 2.2.1:

Variables: P A Q1
CH : forall P, bisim_up_to refl_t (par P null) P +
H1 : one P A Q1
============================
 refl_t (par Q1 null) (par Q1 null) Q1 Q1

Subgoal 2.2.2 is:
 bisim_up_to refl_t (par Q1 null) Q1 +

bisim_par_null < search.
Subgoal 2.2.2:

Variables: P A Q1
CH : forall P, bisim_up_to refl_t (par P null) P +
H1 : one P A Q1
============================
 bisim_up_to refl_t (par Q1 null) Q1 +

bisim_par_null < backchain CH.
Proof completed.
Abella < Theorem bisim_par_comm : 
forall P Q, bisim_up_to refl_t (par P Q) (par Q P).

============================
 forall P Q, bisim_up_to refl_t (par P Q) (par Q P)

bisim_par_comm < coinduction.

CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
============================
 forall P Q, bisim_up_to refl_t (par P Q) (par Q P) #

bisim_par_comm < intros.

Variables: P Q
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
============================
 bisim_up_to refl_t (par P Q) (par Q P) #

bisim_par_comm < unfold.
Subgoal 1:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
============================
 forall A P1, one (par P Q) A P1 ->
   (exists Q1, one (par Q P) A Q1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < intros.
Subgoal 1:

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

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < case H1.
Subgoal 1.1:

Variables: P Q A P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A P3
============================
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q2, refl_t (par P3 Q) P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q3, refl_t (par P Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par Q P3.
Subgoal 1.1:

Variables: P Q A P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A P3
============================
 one (par Q P) A (par Q P3) /\
   (exists P2 Q2, refl_t (par P3 Q) P2 (par Q P3) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q3, refl_t (par P Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < split.
Subgoal 1.1.1:

Variables: P Q A P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A P3
============================
 one (par Q P) A (par Q P3)

Subgoal 1.1.2 is:
 exists P2 Q2, refl_t (par P3 Q) P2 (par Q P3) Q2 /\
   bisim_up_to refl_t P2 Q2 +

Subgoal 1.2 is:
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q3, refl_t (par P Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < search.
Subgoal 1.1.2:

Variables: P Q A P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A P3
============================
 exists P2 Q2, refl_t (par P3 Q) P2 (par Q P3) Q2 /\
   bisim_up_to refl_t P2 Q2 +

Subgoal 1.2 is:
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q3, refl_t (par P Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par P3 Q.
Subgoal 1.1.2:

Variables: P Q A P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A P3
============================
 exists Q2, refl_t (par P3 Q) (par P3 Q) (par Q P3) Q2 /\
   bisim_up_to refl_t (par P3 Q) Q2 +

Subgoal 1.2 is:
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q3, refl_t (par P Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par Q P3.
Subgoal 1.1.2:

Variables: P Q A P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A P3
============================
 refl_t (par P3 Q) (par P3 Q) (par Q P3) (par Q P3) /\
   bisim_up_to refl_t (par P3 Q) (par Q P3) +

Subgoal 1.2 is:
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q3, refl_t (par P Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < split.
Subgoal 1.1.2.1:

Variables: P Q A P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A P3
============================
 refl_t (par P3 Q) (par P3 Q) (par Q P3) (par Q P3)

Subgoal 1.1.2.2 is:
 bisim_up_to refl_t (par P3 Q) (par Q P3) +

Subgoal 1.2 is:
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q3, refl_t (par P Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < search.
Subgoal 1.1.2.2:

Variables: P Q A P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A P3
============================
 bisim_up_to refl_t (par P3 Q) (par Q P3) +

Subgoal 1.2 is:
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q3, refl_t (par P Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < backchain CH.
Subgoal 1.2:

Variables: P Q A Q2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A Q2
============================
 exists Q1, one (par Q P) A Q1 /\
   (exists P2 Q3, refl_t (par P Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par Q2 P.
Subgoal 1.2:

Variables: P Q A Q2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A Q2
============================
 one (par Q P) A (par Q2 P) /\
   (exists P2 Q3, refl_t (par P Q2) P2 (par Q2 P) Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < split.
Subgoal 1.2.1:

Variables: P Q A Q2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A Q2
============================
 one (par Q P) A (par Q2 P)

Subgoal 1.2.2 is:
 exists P2 Q3, refl_t (par P Q2) P2 (par Q2 P) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < search.
Subgoal 1.2.2:

Variables: P Q A Q2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A Q2
============================
 exists P2 Q3, refl_t (par P Q2) P2 (par Q2 P) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par P Q2.
Subgoal 1.2.2:

Variables: P Q A Q2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A Q2
============================
 exists Q3, refl_t (par P Q2) (par P Q2) (par Q2 P) Q3 /\
   bisim_up_to refl_t (par P Q2) Q3 +

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par Q2 P.
Subgoal 1.2.2:

Variables: P Q A Q2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A Q2
============================
 refl_t (par P Q2) (par P Q2) (par Q2 P) (par Q2 P) /\
   bisim_up_to refl_t (par P Q2) (par Q2 P) +

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < split.
Subgoal 1.2.2.1:

Variables: P Q A Q2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A Q2
============================
 refl_t (par P Q2) (par P Q2) (par Q2 P) (par Q2 P)

Subgoal 1.2.2.2 is:
 bisim_up_to refl_t (par P Q2) (par Q2 P) +

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < search.
Subgoal 1.2.2.2:

Variables: P Q A Q2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A Q2
============================
 bisim_up_to refl_t (par P Q2) (par Q2 P) +

Subgoal 1.3 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < backchain CH.
Subgoal 1.3:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (up X) P3
H3 : one Q (dn X) Q2
============================
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par Q2 P3.
Subgoal 1.3:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (up X) P3
H3 : one Q (dn X) Q2
============================
 one (par Q P) tau (par Q2 P3) /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 (par Q2 P3) Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < split.
Subgoal 1.3.1:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (up X) P3
H3 : one Q (dn X) Q2
============================
 one (par Q P) tau (par Q2 P3)

Subgoal 1.3.2 is:
 exists P2 Q3, refl_t (par P3 Q2) P2 (par Q2 P3) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < search.
Subgoal 1.3.2:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (up X) P3
H3 : one Q (dn X) Q2
============================
 exists P2 Q3, refl_t (par P3 Q2) P2 (par Q2 P3) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par P3 Q2.
Subgoal 1.3.2:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (up X) P3
H3 : one Q (dn X) Q2
============================
 exists Q3, refl_t (par P3 Q2) (par P3 Q2) (par Q2 P3) Q3 /\
   bisim_up_to refl_t (par P3 Q2) Q3 +

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par Q2 P3.
Subgoal 1.3.2:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (up X) P3
H3 : one Q (dn X) Q2
============================
 refl_t (par P3 Q2) (par P3 Q2) (par Q2 P3) (par Q2 P3) /\
   bisim_up_to refl_t (par P3 Q2) (par Q2 P3) +

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < split.
Subgoal 1.3.2.1:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (up X) P3
H3 : one Q (dn X) Q2
============================
 refl_t (par P3 Q2) (par P3 Q2) (par Q2 P3) (par Q2 P3)

Subgoal 1.3.2.2 is:
 bisim_up_to refl_t (par P3 Q2) (par Q2 P3) +

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < search.
Subgoal 1.3.2.2:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (up X) P3
H3 : one Q (dn X) Q2
============================
 bisim_up_to refl_t (par P3 Q2) (par Q2 P3) +

Subgoal 1.4 is:
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < backchain CH.
Subgoal 1.4:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (dn X) P3
H3 : one Q (up X) Q2
============================
 exists Q1, one (par Q P) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par Q2 P3.
Subgoal 1.4:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (dn X) P3
H3 : one Q (up X) Q2
============================
 one (par Q P) tau (par Q2 P3) /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 (par Q2 P3) Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < split.
Subgoal 1.4.1:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (dn X) P3
H3 : one Q (up X) Q2
============================
 one (par Q P) tau (par Q2 P3)

Subgoal 1.4.2 is:
 exists P2 Q3, refl_t (par P3 Q2) P2 (par Q2 P3) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < search.
Subgoal 1.4.2:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (dn X) P3
H3 : one Q (up X) Q2
============================
 exists P2 Q3, refl_t (par P3 Q2) P2 (par Q2 P3) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par P3 Q2.
Subgoal 1.4.2:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (dn X) P3
H3 : one Q (up X) Q2
============================
 exists Q3, refl_t (par P3 Q2) (par P3 Q2) (par Q2 P3) Q3 /\
   bisim_up_to refl_t (par P3 Q2) Q3 +

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < witness par Q2 P3.
Subgoal 1.4.2:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (dn X) P3
H3 : one Q (up X) Q2
============================
 refl_t (par P3 Q2) (par P3 Q2) (par Q2 P3) (par Q2 P3) /\
   bisim_up_to refl_t (par P3 Q2) (par Q2 P3) +

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < split.
Subgoal 1.4.2.1:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (dn X) P3
H3 : one Q (up X) Q2
============================
 refl_t (par P3 Q2) (par P3 Q2) (par Q2 P3) (par Q2 P3)

Subgoal 1.4.2.2 is:
 bisim_up_to refl_t (par P3 Q2) (par Q2 P3) +

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < search.
Subgoal 1.4.2.2:

Variables: P Q X Q2 P3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P (dn X) P3
H3 : one Q (up X) Q2
============================
 bisim_up_to refl_t (par P3 Q2) (par Q2 P3) +

Subgoal 2 is:
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < backchain CH.
Subgoal 2:

Variables: P Q
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
============================
 forall A Q1, one (par Q P) A Q1 ->
   (exists P1, one (par P Q) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_comm < intros.
Subgoal 2:

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

bisim_par_comm < case H1.
Subgoal 2.1:

Variables: P Q A P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A P2
============================
 exists P1, one (par P Q) A P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 P) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (par P Q) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par Q Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par P P2.
Subgoal 2.1:

Variables: P Q A P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A P2
============================
 one (par P Q) A (par P P2) /\
   (exists P3 Q2, refl_t (par P P2) P3 (par P2 P) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (par P Q) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par Q Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < split.
Subgoal 2.1.1:

Variables: P Q A P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A P2
============================
 one (par P Q) A (par P P2)

Subgoal 2.1.2 is:
 exists P3 Q2, refl_t (par P P2) P3 (par P2 P) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.2 is:
 exists P1, one (par P Q) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par Q Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < search.
Subgoal 2.1.2:

Variables: P Q A P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A P2
============================
 exists P3 Q2, refl_t (par P P2) P3 (par P2 P) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.2 is:
 exists P1, one (par P Q) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par Q Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par P P2.
Subgoal 2.1.2:

Variables: P Q A P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A P2
============================
 exists Q2, refl_t (par P P2) (par P P2) (par P2 P) Q2 /\
   bisim_up_to refl_t (par P P2) Q2 +

Subgoal 2.2 is:
 exists P1, one (par P Q) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par Q Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par P2 P.
Subgoal 2.1.2:

Variables: P Q A P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A P2
============================
 refl_t (par P P2) (par P P2) (par P2 P) (par P2 P) /\
   bisim_up_to refl_t (par P P2) (par P2 P) +

Subgoal 2.2 is:
 exists P1, one (par P Q) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par Q Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < split.
Subgoal 2.1.2.1:

Variables: P Q A P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A P2
============================
 refl_t (par P P2) (par P P2) (par P2 P) (par P2 P)

Subgoal 2.1.2.2 is:
 bisim_up_to refl_t (par P P2) (par P2 P) +

Subgoal 2.2 is:
 exists P1, one (par P Q) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par Q Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < search.
Subgoal 2.1.2.2:

Variables: P Q A P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q A P2
============================
 bisim_up_to refl_t (par P P2) (par P2 P) +

Subgoal 2.2 is:
 exists P1, one (par P Q) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par Q Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < backchain CH.
Subgoal 2.2:

Variables: P Q A Q3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A Q3
============================
 exists P1, one (par P Q) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par Q Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par Q3 Q.
Subgoal 2.2:

Variables: P Q A Q3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A Q3
============================
 one (par P Q) A (par Q3 Q) /\
   (exists P2 Q2, refl_t (par Q3 Q) P2 (par Q Q3) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < split.
Subgoal 2.2.1:

Variables: P Q A Q3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A Q3
============================
 one (par P Q) A (par Q3 Q)

Subgoal 2.2.2 is:
 exists P2 Q2, refl_t (par Q3 Q) P2 (par Q Q3) Q2 /\
   bisim_up_to refl_t P2 Q2 +

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < search.
Subgoal 2.2.2:

Variables: P Q A Q3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A Q3
============================
 exists P2 Q2, refl_t (par Q3 Q) P2 (par Q Q3) Q2 /\
   bisim_up_to refl_t P2 Q2 +

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par Q3 Q.
Subgoal 2.2.2:

Variables: P Q A Q3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A Q3
============================
 exists Q2, refl_t (par Q3 Q) (par Q3 Q) (par Q Q3) Q2 /\
   bisim_up_to refl_t (par Q3 Q) Q2 +

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par Q Q3.
Subgoal 2.2.2:

Variables: P Q A Q3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A Q3
============================
 refl_t (par Q3 Q) (par Q3 Q) (par Q Q3) (par Q Q3) /\
   bisim_up_to refl_t (par Q3 Q) (par Q Q3) +

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < split.
Subgoal 2.2.2.1:

Variables: P Q A Q3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A Q3
============================
 refl_t (par Q3 Q) (par Q3 Q) (par Q Q3) (par Q Q3)

Subgoal 2.2.2.2 is:
 bisim_up_to refl_t (par Q3 Q) (par Q Q3) +

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < search.
Subgoal 2.2.2.2:

Variables: P Q A Q3
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one P A Q3
============================
 bisim_up_to refl_t (par Q3 Q) (par Q Q3) +

Subgoal 2.3 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < backchain CH.
Subgoal 2.3:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (up X) P2
H3 : one P (dn X) Q3
============================
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par Q3 P2.
Subgoal 2.3:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (up X) P2
H3 : one P (dn X) Q3
============================
 one (par P Q) tau (par Q3 P2) /\
   (exists P3 Q2, refl_t (par Q3 P2) P3 (par P2 Q3) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < split.
Subgoal 2.3.1:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (up X) P2
H3 : one P (dn X) Q3
============================
 one (par P Q) tau (par Q3 P2)

Subgoal 2.3.2 is:
 exists P3 Q2, refl_t (par Q3 P2) P3 (par P2 Q3) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < search.
Subgoal 2.3.2:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (up X) P2
H3 : one P (dn X) Q3
============================
 exists P3 Q2, refl_t (par Q3 P2) P3 (par P2 Q3) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par Q3 P2.
Subgoal 2.3.2:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (up X) P2
H3 : one P (dn X) Q3
============================
 exists Q2, refl_t (par Q3 P2) (par Q3 P2) (par P2 Q3) Q2 /\
   bisim_up_to refl_t (par Q3 P2) Q2 +

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par P2 Q3.
Subgoal 2.3.2:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (up X) P2
H3 : one P (dn X) Q3
============================
 refl_t (par Q3 P2) (par Q3 P2) (par P2 Q3) (par P2 Q3) /\
   bisim_up_to refl_t (par Q3 P2) (par P2 Q3) +

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < split.
Subgoal 2.3.2.1:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (up X) P2
H3 : one P (dn X) Q3
============================
 refl_t (par Q3 P2) (par Q3 P2) (par P2 Q3) (par P2 Q3)

Subgoal 2.3.2.2 is:
 bisim_up_to refl_t (par Q3 P2) (par P2 Q3) +

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < search.
Subgoal 2.3.2.2:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (up X) P2
H3 : one P (dn X) Q3
============================
 bisim_up_to refl_t (par Q3 P2) (par P2 Q3) +

Subgoal 2.4 is:
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < backchain CH.
Subgoal 2.4:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (dn X) P2
H3 : one P (up X) Q3
============================
 exists P1, one (par P Q) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < witness par Q3 P2.
Subgoal 2.4:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (dn X) P2
H3 : one P (up X) Q3
============================
 one (par P Q) tau (par Q3 P2) /\
   (exists P3 Q2, refl_t (par Q3 P2) P3 (par P2 Q3) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_comm < split.
Subgoal 2.4.1:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (dn X) P2
H3 : one P (up X) Q3
============================
 one (par P Q) tau (par Q3 P2)

Subgoal 2.4.2 is:
 exists P3 Q2, refl_t (par Q3 P2) P3 (par P2 Q3) Q2 /\
   bisim_up_to refl_t P3 Q2 +

bisim_par_comm < search.
Subgoal 2.4.2:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (dn X) P2
H3 : one P (up X) Q3
============================
 exists P3 Q2, refl_t (par Q3 P2) P3 (par P2 Q3) Q2 /\
   bisim_up_to refl_t P3 Q2 +

bisim_par_comm < witness par Q3 P2.
Subgoal 2.4.2:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (dn X) P2
H3 : one P (up X) Q3
============================
 exists Q2, refl_t (par Q3 P2) (par Q3 P2) (par P2 Q3) Q2 /\
   bisim_up_to refl_t (par Q3 P2) Q2 +

bisim_par_comm < witness par P2 Q3.
Subgoal 2.4.2:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (dn X) P2
H3 : one P (up X) Q3
============================
 refl_t (par Q3 P2) (par Q3 P2) (par P2 Q3) (par P2 Q3) /\
   bisim_up_to refl_t (par Q3 P2) (par P2 Q3) +

bisim_par_comm < split.
Subgoal 2.4.2.1:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (dn X) P2
H3 : one P (up X) Q3
============================
 refl_t (par Q3 P2) (par Q3 P2) (par P2 Q3) (par P2 Q3)

Subgoal 2.4.2.2 is:
 bisim_up_to refl_t (par Q3 P2) (par P2 Q3) +

bisim_par_comm < search.
Subgoal 2.4.2.2:

Variables: P Q X Q3 P2
CH : forall P Q, bisim_up_to refl_t (par P Q) (par Q P) +
H2 : one Q (dn X) P2
H3 : one P (up X) Q3
============================
 bisim_up_to refl_t (par Q3 P2) (par P2 Q3) +

bisim_par_comm < backchain CH.
Proof completed.
Abella < Theorem bisim_par_assoc : 
forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)).

============================
 forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))

bisim_par_assoc < coinduction.

CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
============================
 forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) #

bisim_par_assoc < intros.

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
============================
 bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) #

bisim_par_assoc < unfold.
Subgoal 1:

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
============================
 forall A P1, one (par (par P Q) R) A P1 ->
   (exists Q1, one (par P (par Q R)) A Q1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < intros.
Subgoal 1:

Variables: P Q R A P1
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H1 : one (par (par P Q) R) A P1
============================
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < case H1.
Subgoal 1.1:

Variables: P Q R A P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one (par P Q) A P3
============================
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q2, refl_t (par P3 R) P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < case H2.
Subgoal 1.1.1:

Variables: P Q R A P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P A P4
============================
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q2, refl_t (par (par P4 Q) R) P2 Q1 Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 1.1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q R).
Subgoal 1.1.1:

Variables: P Q R A P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P A P4
============================
 one (par P (par Q R)) A (par P4 (par Q R)) /\
   (exists P2 Q2, refl_t (par (par P4 Q) R) P2 (par P4 (par Q R)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 1.1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.1.1.1:

Variables: P Q R A P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P A P4
============================
 one (par P (par Q R)) A (par P4 (par Q R))

Subgoal 1.1.1.2 is:
 exists P2 Q2, refl_t (par (par P4 Q) R) P2 (par P4 (par Q R)) Q2 /\
   bisim_up_to refl_t P2 Q2 +

Subgoal 1.1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.1.1.2:

Variables: P Q R A P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P A P4
============================
 exists P2 Q2, refl_t (par (par P4 Q) R) P2 (par P4 (par Q R)) Q2 /\
   bisim_up_to refl_t P2 Q2 +

Subgoal 1.1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par (par P4 Q) R.
Subgoal 1.1.1.2:

Variables: P Q R A P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P A P4
============================
 exists Q2, refl_t (par (par P4 Q) R) (par (par P4 Q) R) (par P4 (par Q R))
              Q2 /\
   bisim_up_to refl_t (par (par P4 Q) R) Q2 +

Subgoal 1.1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q R).
Subgoal 1.1.1.2:

Variables: P Q R A P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P A P4
============================
 refl_t (par (par P4 Q) R) (par (par P4 Q) R) (par P4 (par Q R))
   (par P4 (par Q R)) /\
   bisim_up_to refl_t (par (par P4 Q) R) (par P4 (par Q R)) +

Subgoal 1.1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.1.1.2.1:

Variables: P Q R A P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P A P4
============================
 refl_t (par (par P4 Q) R) (par (par P4 Q) R) (par P4 (par Q R))
   (par P4 (par Q R))

Subgoal 1.1.1.2.2 is:
 bisim_up_to refl_t (par (par P4 Q) R) (par P4 (par Q R)) +

Subgoal 1.1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.1.1.2.2:

Variables: P Q R A P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P A P4
============================
 bisim_up_to refl_t (par (par P4 Q) R) (par P4 (par Q R)) +

Subgoal 1.1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < backchain CH.
Subgoal 1.1.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A Q2
============================
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P (par Q2 R).
Subgoal 1.1.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A Q2
============================
 one (par P (par Q R)) A (par P (par Q2 R)) /\
   (exists P2 Q3, refl_t (par (par P Q2) R) P2 (par P (par Q2 R)) Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.1.2.1:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A Q2
============================
 one (par P (par Q R)) A (par P (par Q2 R))

Subgoal 1.1.2.2 is:
 exists P2 Q3, refl_t (par (par P Q2) R) P2 (par P (par Q2 R)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.1.2.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A Q2
============================
 exists P2 Q3, refl_t (par (par P Q2) R) P2 (par P (par Q2 R)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par (par P Q2) R.
Subgoal 1.1.2.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A Q2
============================
 exists Q3, refl_t (par (par P Q2) R) (par (par P Q2) R) (par P (par Q2 R))
              Q3 /\
   bisim_up_to refl_t (par (par P Q2) R) Q3 +

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P (par Q2 R).
Subgoal 1.1.2.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A Q2
============================
 refl_t (par (par P Q2) R) (par (par P Q2) R) (par P (par Q2 R))
   (par P (par Q2 R)) /\
   bisim_up_to refl_t (par (par P Q2) R) (par P (par Q2 R)) +

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.1.2.2.1:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A Q2
============================
 refl_t (par (par P Q2) R) (par (par P Q2) R) (par P (par Q2 R))
   (par P (par Q2 R))

Subgoal 1.1.2.2.2 is:
 bisim_up_to refl_t (par (par P Q2) R) (par P (par Q2 R)) +

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.1.2.2.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A Q2
============================
 bisim_up_to refl_t (par (par P Q2) R) (par P (par Q2 R)) +

Subgoal 1.1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < backchain CH.
Subgoal 1.1.3:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (up X) P4
H4 : one Q (dn X) Q2
============================
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q2 R).
Subgoal 1.1.3:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (up X) P4
H4 : one Q (dn X) Q2
============================
 one (par P (par Q R)) tau (par P4 (par Q2 R)) /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 (par P4 (par Q2 R)) Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.1.3.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (up X) P4
H4 : one Q (dn X) Q2
============================
 one (par P (par Q R)) tau (par P4 (par Q2 R))

Subgoal 1.1.3.2 is:
 exists P2 Q3, refl_t (par (par P4 Q2) R) P2 (par P4 (par Q2 R)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.1.3.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (up X) P4
H4 : one Q (dn X) Q2
============================
 exists P2 Q3, refl_t (par (par P4 Q2) R) P2 (par P4 (par Q2 R)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par (par P4 Q2) R.
Subgoal 1.1.3.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (up X) P4
H4 : one Q (dn X) Q2
============================
 exists Q3, refl_t (par (par P4 Q2) R) (par (par P4 Q2) R)
              (par P4 (par Q2 R)) Q3 /\
   bisim_up_to refl_t (par (par P4 Q2) R) Q3 +

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q2 R).
Subgoal 1.1.3.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (up X) P4
H4 : one Q (dn X) Q2
============================
 refl_t (par (par P4 Q2) R) (par (par P4 Q2) R) (par P4 (par Q2 R))
   (par P4 (par Q2 R)) /\
   bisim_up_to refl_t (par (par P4 Q2) R) (par P4 (par Q2 R)) +

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.1.3.2.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (up X) P4
H4 : one Q (dn X) Q2
============================
 refl_t (par (par P4 Q2) R) (par (par P4 Q2) R) (par P4 (par Q2 R))
   (par P4 (par Q2 R))

Subgoal 1.1.3.2.2 is:
 bisim_up_to refl_t (par (par P4 Q2) R) (par P4 (par Q2 R)) +

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.1.3.2.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (up X) P4
H4 : one Q (dn X) Q2
============================
 bisim_up_to refl_t (par (par P4 Q2) R) (par P4 (par Q2 R)) +

Subgoal 1.1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < backchain CH.
Subgoal 1.1.4:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (dn X) P4
H4 : one Q (up X) Q2
============================
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q2 R).
Subgoal 1.1.4:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (dn X) P4
H4 : one Q (up X) Q2
============================
 one (par P (par Q R)) tau (par P4 (par Q2 R)) /\
   (exists P2 Q3, refl_t (par (par P4 Q2) R) P2 (par P4 (par Q2 R)) Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.1.4.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (dn X) P4
H4 : one Q (up X) Q2
============================
 one (par P (par Q R)) tau (par P4 (par Q2 R))

Subgoal 1.1.4.2 is:
 exists P2 Q3, refl_t (par (par P4 Q2) R) P2 (par P4 (par Q2 R)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.1.4.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (dn X) P4
H4 : one Q (up X) Q2
============================
 exists P2 Q3, refl_t (par (par P4 Q2) R) P2 (par P4 (par Q2 R)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par (par P4 Q2) R.
Subgoal 1.1.4.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (dn X) P4
H4 : one Q (up X) Q2
============================
 exists Q3, refl_t (par (par P4 Q2) R) (par (par P4 Q2) R)
              (par P4 (par Q2 R)) Q3 /\
   bisim_up_to refl_t (par (par P4 Q2) R) Q3 +

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q2 R).
Subgoal 1.1.4.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (dn X) P4
H4 : one Q (up X) Q2
============================
 refl_t (par (par P4 Q2) R) (par (par P4 Q2) R) (par P4 (par Q2 R))
   (par P4 (par Q2 R)) /\
   bisim_up_to refl_t (par (par P4 Q2) R) (par P4 (par Q2 R)) +

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.1.4.2.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (dn X) P4
H4 : one Q (up X) Q2
============================
 refl_t (par (par P4 Q2) R) (par (par P4 Q2) R) (par P4 (par Q2 R))
   (par P4 (par Q2 R))

Subgoal 1.1.4.2.2 is:
 bisim_up_to refl_t (par (par P4 Q2) R) (par P4 (par Q2 R)) +

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.1.4.2.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one P (dn X) P4
H4 : one Q (up X) Q2
============================
 bisim_up_to refl_t (par (par P4 Q2) R) (par P4 (par Q2 R)) +

Subgoal 1.2 is:
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < backchain CH.
Subgoal 1.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one R A Q2
============================
 exists Q1, one (par P (par Q R)) A Q1 /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P (par Q Q2).
Subgoal 1.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one R A Q2
============================
 one (par P (par Q R)) A (par P (par Q Q2)) /\
   (exists P2 Q3, refl_t (par (par P Q) Q2) P2 (par P (par Q Q2)) Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.2.1:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one R A Q2
============================
 one (par P (par Q R)) A (par P (par Q Q2))

Subgoal 1.2.2 is:
 exists P2 Q3, refl_t (par (par P Q) Q2) P2 (par P (par Q Q2)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.2.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one R A Q2
============================
 exists P2 Q3, refl_t (par (par P Q) Q2) P2 (par P (par Q Q2)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par (par P Q) Q2.
Subgoal 1.2.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one R A Q2
============================
 exists Q3, refl_t (par (par P Q) Q2) (par (par P Q) Q2) (par P (par Q Q2))
              Q3 /\
   bisim_up_to refl_t (par (par P Q) Q2) Q3 +

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P (par Q Q2).
Subgoal 1.2.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one R A Q2
============================
 refl_t (par (par P Q) Q2) (par (par P Q) Q2) (par P (par Q Q2))
   (par P (par Q Q2)) /\
   bisim_up_to refl_t (par (par P Q) Q2) (par P (par Q Q2)) +

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.2.2.1:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one R A Q2
============================
 refl_t (par (par P Q) Q2) (par (par P Q) Q2) (par P (par Q Q2))
   (par P (par Q Q2))

Subgoal 1.2.2.2 is:
 bisim_up_to refl_t (par (par P Q) Q2) (par P (par Q Q2)) +

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.2.2.2:

Variables: P Q R A Q2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one R A Q2
============================
 bisim_up_to refl_t (par (par P Q) Q2) (par P (par Q Q2)) +

Subgoal 1.3 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < backchain CH.
Subgoal 1.3:

Variables: P Q R X Q2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one (par P Q) (up X) P3
H3 : one R (dn X) Q2
============================
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < case H2.
Subgoal 1.3.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one P (up X) P4
============================
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q Q2).
Subgoal 1.3.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one P (up X) P4
============================
 one (par P (par Q R)) tau (par P4 (par Q Q2)) /\
   (exists P2 Q3, refl_t (par (par P4 Q) Q2) P2 (par P4 (par Q Q2)) Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.3.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.3.1.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one P (up X) P4
============================
 one (par P (par Q R)) tau (par P4 (par Q Q2))

Subgoal 1.3.1.2 is:
 exists P2 Q3, refl_t (par (par P4 Q) Q2) P2 (par P4 (par Q Q2)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.3.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.3.1.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one P (up X) P4
============================
 exists P2 Q3, refl_t (par (par P4 Q) Q2) P2 (par P4 (par Q Q2)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.3.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par (par P4 Q) Q2.
Subgoal 1.3.1.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one P (up X) P4
============================
 exists Q3, refl_t (par (par P4 Q) Q2) (par (par P4 Q) Q2)
              (par P4 (par Q Q2)) Q3 /\
   bisim_up_to refl_t (par (par P4 Q) Q2) Q3 +

Subgoal 1.3.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q Q2).
Subgoal 1.3.1.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one P (up X) P4
============================
 refl_t (par (par P4 Q) Q2) (par (par P4 Q) Q2) (par P4 (par Q Q2))
   (par P4 (par Q Q2)) /\
   bisim_up_to refl_t (par (par P4 Q) Q2) (par P4 (par Q Q2)) +

Subgoal 1.3.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.3.1.2.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one P (up X) P4
============================
 refl_t (par (par P4 Q) Q2) (par (par P4 Q) Q2) (par P4 (par Q Q2))
   (par P4 (par Q Q2))

Subgoal 1.3.1.2.2 is:
 bisim_up_to refl_t (par (par P4 Q) Q2) (par P4 (par Q Q2)) +

Subgoal 1.3.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.3.1.2.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one P (up X) P4
============================
 bisim_up_to refl_t (par (par P4 Q) Q2) (par P4 (par Q Q2)) +

Subgoal 1.3.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < backchain CH.
Subgoal 1.3.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one Q (up X) Q3
============================
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P (par Q3 Q2).
Subgoal 1.3.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one Q (up X) Q3
============================
 one (par P (par Q R)) tau (par P (par Q3 Q2)) /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 (par P (par Q3 Q2)) Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.3.2.1:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one Q (up X) Q3
============================
 one (par P (par Q R)) tau (par P (par Q3 Q2))

Subgoal 1.3.2.2 is:
 exists P2 Q4, refl_t (par (par P Q3) Q2) P2 (par P (par Q3 Q2)) Q4 /\
   bisim_up_to refl_t P2 Q4 +

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.3.2.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one Q (up X) Q3
============================
 exists P2 Q4, refl_t (par (par P Q3) Q2) P2 (par P (par Q3 Q2)) Q4 /\
   bisim_up_to refl_t P2 Q4 +

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par (par P Q3) Q2.
Subgoal 1.3.2.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one Q (up X) Q3
============================
 exists Q4, refl_t (par (par P Q3) Q2) (par (par P Q3) Q2)
              (par P (par Q3 Q2)) Q4 /\
   bisim_up_to refl_t (par (par P Q3) Q2) Q4 +

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P (par Q3 Q2).
Subgoal 1.3.2.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one Q (up X) Q3
============================
 refl_t (par (par P Q3) Q2) (par (par P Q3) Q2) (par P (par Q3 Q2))
   (par P (par Q3 Q2)) /\
   bisim_up_to refl_t (par (par P Q3) Q2) (par P (par Q3 Q2)) +

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.3.2.2.1:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one Q (up X) Q3
============================
 refl_t (par (par P Q3) Q2) (par (par P Q3) Q2) (par P (par Q3 Q2))
   (par P (par Q3 Q2))

Subgoal 1.3.2.2.2 is:
 bisim_up_to refl_t (par (par P Q3) Q2) (par P (par Q3 Q2)) +

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.3.2.2.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (dn X) Q2
H4 : one Q (up X) Q3
============================
 bisim_up_to refl_t (par (par P Q3) Q2) (par P (par Q3 Q2)) +

Subgoal 1.4 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < backchain CH.
Subgoal 1.4:

Variables: P Q R X Q2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one (par P Q) (dn X) P3
H3 : one R (up X) Q2
============================
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par P3 Q2) P2 Q1 Q3 /\ bisim_up_to refl_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < case H2.
Subgoal 1.4.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one P (dn X) P4
============================
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q3, refl_t (par (par P4 Q) Q2) P2 Q1 Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q Q2).
Subgoal 1.4.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one P (dn X) P4
============================
 one (par P (par Q R)) tau (par P4 (par Q Q2)) /\
   (exists P2 Q3, refl_t (par (par P4 Q) Q2) P2 (par P4 (par Q Q2)) Q3 /\
      bisim_up_to refl_t P2 Q3 +)

Subgoal 1.4.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.4.1.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one P (dn X) P4
============================
 one (par P (par Q R)) tau (par P4 (par Q Q2))

Subgoal 1.4.1.2 is:
 exists P2 Q3, refl_t (par (par P4 Q) Q2) P2 (par P4 (par Q Q2)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.4.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.4.1.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one P (dn X) P4
============================
 exists P2 Q3, refl_t (par (par P4 Q) Q2) P2 (par P4 (par Q Q2)) Q3 /\
   bisim_up_to refl_t P2 Q3 +

Subgoal 1.4.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par (par P4 Q) Q2.
Subgoal 1.4.1.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one P (dn X) P4
============================
 exists Q3, refl_t (par (par P4 Q) Q2) (par (par P4 Q) Q2)
              (par P4 (par Q Q2)) Q3 /\
   bisim_up_to refl_t (par (par P4 Q) Q2) Q3 +

Subgoal 1.4.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P4 (par Q Q2).
Subgoal 1.4.1.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one P (dn X) P4
============================
 refl_t (par (par P4 Q) Q2) (par (par P4 Q) Q2) (par P4 (par Q Q2))
   (par P4 (par Q Q2)) /\
   bisim_up_to refl_t (par (par P4 Q) Q2) (par P4 (par Q Q2)) +

Subgoal 1.4.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.4.1.2.1:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one P (dn X) P4
============================
 refl_t (par (par P4 Q) Q2) (par (par P4 Q) Q2) (par P4 (par Q Q2))
   (par P4 (par Q Q2))

Subgoal 1.4.1.2.2 is:
 bisim_up_to refl_t (par (par P4 Q) Q2) (par P4 (par Q Q2)) +

Subgoal 1.4.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.4.1.2.2:

Variables: P Q R X Q2 P4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one P (dn X) P4
============================
 bisim_up_to refl_t (par (par P4 Q) Q2) (par P4 (par Q Q2)) +

Subgoal 1.4.2 is:
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < backchain CH.
Subgoal 1.4.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one Q (dn X) Q3
============================
 exists Q1, one (par P (par Q R)) tau Q1 /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 Q1 Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P (par Q3 Q2).
Subgoal 1.4.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one Q (dn X) Q3
============================
 one (par P (par Q R)) tau (par P (par Q3 Q2)) /\
   (exists P2 Q4, refl_t (par (par P Q3) Q2) P2 (par P (par Q3 Q2)) Q4 /\
      bisim_up_to refl_t P2 Q4 +)

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.4.2.1:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one Q (dn X) Q3
============================
 one (par P (par Q R)) tau (par P (par Q3 Q2))

Subgoal 1.4.2.2 is:
 exists P2 Q4, refl_t (par (par P Q3) Q2) P2 (par P (par Q3 Q2)) Q4 /\
   bisim_up_to refl_t P2 Q4 +

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.4.2.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one Q (dn X) Q3
============================
 exists P2 Q4, refl_t (par (par P Q3) Q2) P2 (par P (par Q3 Q2)) Q4 /\
   bisim_up_to refl_t P2 Q4 +

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par (par P Q3) Q2.
Subgoal 1.4.2.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one Q (dn X) Q3
============================
 exists Q4, refl_t (par (par P Q3) Q2) (par (par P Q3) Q2)
              (par P (par Q3 Q2)) Q4 /\
   bisim_up_to refl_t (par (par P Q3) Q2) Q4 +

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < witness par P (par Q3 Q2).
Subgoal 1.4.2.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one Q (dn X) Q3
============================
 refl_t (par (par P Q3) Q2) (par (par P Q3) Q2) (par P (par Q3 Q2))
   (par P (par Q3 Q2)) /\
   bisim_up_to refl_t (par (par P Q3) Q2) (par P (par Q3 Q2)) +

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < split.
Subgoal 1.4.2.2.1:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one Q (dn X) Q3
============================
 refl_t (par (par P Q3) Q2) (par (par P Q3) Q2) (par P (par Q3 Q2))
   (par P (par Q3 Q2))

Subgoal 1.4.2.2.2 is:
 bisim_up_to refl_t (par (par P Q3) Q2) (par P (par Q3 Q2)) +

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < search.
Subgoal 1.4.2.2.2:

Variables: P Q R X Q2 Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R (up X) Q2
H4 : one Q (dn X) Q3
============================
 bisim_up_to refl_t (par (par P Q3) Q2) (par P (par Q3 Q2)) +

Subgoal 2 is:
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < backchain CH.
Subgoal 2:

Variables: P Q R
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
============================
 forall A Q1, one (par P (par Q R)) A Q1 ->
   (exists P1, one (par (par P Q) R) A P1 /\
      (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +))

bisim_par_assoc < intros.
Subgoal 2:

Variables: P Q R A Q1
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H1 : one (par P (par Q R)) A Q1
============================
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 Q1 Q2 /\ bisim_up_to refl_t P2 Q2 +)

bisim_par_assoc < case H1.
Subgoal 2.1:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P A P2
============================
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q R)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P2 Q) R.
Subgoal 2.1:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P A P2
============================
 one (par (par P Q) R) A (par (par P2 Q) R) /\
   (exists P3 Q2, refl_t (par (par P2 Q) R) P3 (par P2 (par Q R)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.1.1:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P A P2
============================
 one (par (par P Q) R) A (par (par P2 Q) R)

Subgoal 2.1.2 is:
 exists P3 Q2, refl_t (par (par P2 Q) R) P3 (par P2 (par Q R)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.1.2:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P A P2
============================
 exists P3 Q2, refl_t (par (par P2 Q) R) P3 (par P2 (par Q R)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P2 Q) R.
Subgoal 2.1.2:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P A P2
============================
 exists Q2, refl_t (par (par P2 Q) R) (par (par P2 Q) R) (par P2 (par Q R))
              Q2 /\
   bisim_up_to refl_t (par (par P2 Q) R) Q2 +

Subgoal 2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par P2 (par Q R).
Subgoal 2.1.2:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P A P2
============================
 refl_t (par (par P2 Q) R) (par (par P2 Q) R) (par P2 (par Q R))
   (par P2 (par Q R)) /\
   bisim_up_to refl_t (par (par P2 Q) R) (par P2 (par Q R)) +

Subgoal 2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.1.2.1:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P A P2
============================
 refl_t (par (par P2 Q) R) (par (par P2 Q) R) (par P2 (par Q R))
   (par P2 (par Q R))

Subgoal 2.1.2.2 is:
 bisim_up_to refl_t (par (par P2 Q) R) (par P2 (par Q R)) +

Subgoal 2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.1.2.2:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P A P2
============================
 bisim_up_to refl_t (par (par P2 Q) R) (par P2 (par Q R)) +

Subgoal 2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < backchain CH.
Subgoal 2.2:

Variables: P Q R A Q3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one (par Q R) A Q3
============================
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P Q3) Q2 /\ bisim_up_to refl_t P2 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < case H2.
Subgoal 2.2.1:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A P2
============================
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 R)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P P2) R.
Subgoal 2.2.1:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A P2
============================
 one (par (par P Q) R) A (par (par P P2) R) /\
   (exists P3 Q2, refl_t (par (par P P2) R) P3 (par P (par P2 R)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.2.1.1:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A P2
============================
 one (par (par P Q) R) A (par (par P P2) R)

Subgoal 2.2.1.2 is:
 exists P3 Q2, refl_t (par (par P P2) R) P3 (par P (par P2 R)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.2.1.2:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A P2
============================
 exists P3 Q2, refl_t (par (par P P2) R) P3 (par P (par P2 R)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P P2) R.
Subgoal 2.2.1.2:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A P2
============================
 exists Q2, refl_t (par (par P P2) R) (par (par P P2) R) (par P (par P2 R))
              Q2 /\
   bisim_up_to refl_t (par (par P P2) R) Q2 +

Subgoal 2.2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par P (par P2 R).
Subgoal 2.2.1.2:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A P2
============================
 refl_t (par (par P P2) R) (par (par P P2) R) (par P (par P2 R))
   (par P (par P2 R)) /\
   bisim_up_to refl_t (par (par P P2) R) (par P (par P2 R)) +

Subgoal 2.2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.2.1.2.1:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A P2
============================
 refl_t (par (par P P2) R) (par (par P P2) R) (par P (par P2 R))
   (par P (par P2 R))

Subgoal 2.2.1.2.2 is:
 bisim_up_to refl_t (par (par P P2) R) (par P (par P2 R)) +

Subgoal 2.2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.2.1.2.2:

Variables: P Q R A P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q A P2
============================
 bisim_up_to refl_t (par (par P P2) R) (par P (par P2 R)) +

Subgoal 2.2.2 is:
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < backchain CH.
Subgoal 2.2.2:

Variables: P Q R A Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R A Q4
============================
 exists P1, one (par (par P Q) R) A P1 /\
   (exists P2 Q2, refl_t P1 P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P Q) Q4.
Subgoal 2.2.2:

Variables: P Q R A Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R A Q4
============================
 one (par (par P Q) R) A (par (par P Q) Q4) /\
   (exists P2 Q2, refl_t (par (par P Q) Q4) P2 (par P (par Q Q4)) Q2 /\
      bisim_up_to refl_t P2 Q2 +)

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.2.2.1:

Variables: P Q R A Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R A Q4
============================
 one (par (par P Q) R) A (par (par P Q) Q4)

Subgoal 2.2.2.2 is:
 exists P2 Q2, refl_t (par (par P Q) Q4) P2 (par P (par Q Q4)) Q2 /\
   bisim_up_to refl_t P2 Q2 +

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.2.2.2:

Variables: P Q R A Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R A Q4
============================
 exists P2 Q2, refl_t (par (par P Q) Q4) P2 (par P (par Q Q4)) Q2 /\
   bisim_up_to refl_t P2 Q2 +

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P Q) Q4.
Subgoal 2.2.2.2:

Variables: P Q R A Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R A Q4
============================
 exists Q2, refl_t (par (par P Q) Q4) (par (par P Q) Q4) (par P (par Q Q4))
              Q2 /\
   bisim_up_to refl_t (par (par P Q) Q4) Q2 +

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par P (par Q Q4).
Subgoal 2.2.2.2:

Variables: P Q R A Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R A Q4
============================
 refl_t (par (par P Q) Q4) (par (par P Q) Q4) (par P (par Q Q4))
   (par P (par Q Q4)) /\
   bisim_up_to refl_t (par (par P Q) Q4) (par P (par Q Q4)) +

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.2.2.2.1:

Variables: P Q R A Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R A Q4
============================
 refl_t (par (par P Q) Q4) (par (par P Q) Q4) (par P (par Q Q4))
   (par P (par Q Q4))

Subgoal 2.2.2.2.2 is:
 bisim_up_to refl_t (par (par P Q) Q4) (par P (par Q Q4)) +

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.2.2.2.2:

Variables: P Q R A Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one R A Q4
============================
 bisim_up_to refl_t (par (par P Q) Q4) (par P (par Q Q4)) +

Subgoal 2.2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < backchain CH.
Subgoal 2.2.3:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (up X) P2
H4 : one R (dn X) Q4
============================
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P P2) Q4.
Subgoal 2.2.3:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (up X) P2
H4 : one R (dn X) Q4
============================
 one (par (par P Q) R) tau (par (par P P2) Q4) /\
   (exists P3 Q2, refl_t (par (par P P2) Q4) P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.2.3.1:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (up X) P2
H4 : one R (dn X) Q4
============================
 one (par (par P Q) R) tau (par (par P P2) Q4)

Subgoal 2.2.3.2 is:
 exists P3 Q2, refl_t (par (par P P2) Q4) P3 (par P (par P2 Q4)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.2.3.2:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (up X) P2
H4 : one R (dn X) Q4
============================
 exists P3 Q2, refl_t (par (par P P2) Q4) P3 (par P (par P2 Q4)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P P2) Q4.
Subgoal 2.2.3.2:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (up X) P2
H4 : one R (dn X) Q4
============================
 exists Q2, refl_t (par (par P P2) Q4) (par (par P P2) Q4)
              (par P (par P2 Q4)) Q2 /\
   bisim_up_to refl_t (par (par P P2) Q4) Q2 +

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par P (par P2 Q4).
Subgoal 2.2.3.2:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (up X) P2
H4 : one R (dn X) Q4
============================
 refl_t (par (par P P2) Q4) (par (par P P2) Q4) (par P (par P2 Q4))
   (par P (par P2 Q4)) /\
   bisim_up_to refl_t (par (par P P2) Q4) (par P (par P2 Q4)) +

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.2.3.2.1:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (up X) P2
H4 : one R (dn X) Q4
============================
 refl_t (par (par P P2) Q4) (par (par P P2) Q4) (par P (par P2 Q4))
   (par P (par P2 Q4))

Subgoal 2.2.3.2.2 is:
 bisim_up_to refl_t (par (par P P2) Q4) (par P (par P2 Q4)) +

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.2.3.2.2:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (up X) P2
H4 : one R (dn X) Q4
============================
 bisim_up_to refl_t (par (par P P2) Q4) (par P (par P2 Q4)) +

Subgoal 2.2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < backchain CH.
Subgoal 2.2.4:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (dn X) P2
H4 : one R (up X) Q4
============================
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P P2) Q4.
Subgoal 2.2.4:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (dn X) P2
H4 : one R (up X) Q4
============================
 one (par (par P Q) R) tau (par (par P P2) Q4) /\
   (exists P3 Q2, refl_t (par (par P P2) Q4) P3 (par P (par P2 Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.2.4.1:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (dn X) P2
H4 : one R (up X) Q4
============================
 one (par (par P Q) R) tau (par (par P P2) Q4)

Subgoal 2.2.4.2 is:
 exists P3 Q2, refl_t (par (par P P2) Q4) P3 (par P (par P2 Q4)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.2.4.2:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (dn X) P2
H4 : one R (up X) Q4
============================
 exists P3 Q2, refl_t (par (par P P2) Q4) P3 (par P (par P2 Q4)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P P2) Q4.
Subgoal 2.2.4.2:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (dn X) P2
H4 : one R (up X) Q4
============================
 exists Q2, refl_t (par (par P P2) Q4) (par (par P P2) Q4)
              (par P (par P2 Q4)) Q2 /\
   bisim_up_to refl_t (par (par P P2) Q4) Q2 +

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par P (par P2 Q4).
Subgoal 2.2.4.2:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (dn X) P2
H4 : one R (up X) Q4
============================
 refl_t (par (par P P2) Q4) (par (par P P2) Q4) (par P (par P2 Q4))
   (par P (par P2 Q4)) /\
   bisim_up_to refl_t (par (par P P2) Q4) (par P (par P2 Q4)) +

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.2.4.2.1:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (dn X) P2
H4 : one R (up X) Q4
============================
 refl_t (par (par P P2) Q4) (par (par P P2) Q4) (par P (par P2 Q4))
   (par P (par P2 Q4))

Subgoal 2.2.4.2.2 is:
 bisim_up_to refl_t (par (par P P2) Q4) (par P (par P2 Q4)) +

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.2.4.2.2:

Variables: P Q R X Q4 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H3 : one Q (dn X) P2
H4 : one R (up X) Q4
============================
 bisim_up_to refl_t (par (par P P2) Q4) (par P (par P2 Q4)) +

Subgoal 2.3 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < backchain CH.
Subgoal 2.3:

Variables: P Q R X Q3 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H3 : one (par Q R) (dn X) Q3
============================
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < case H3.
Subgoal 2.3.1:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one Q (dn X) P3
============================
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P4 Q2, refl_t P1 P4 (par P2 (par P3 R)) Q2 /\
      bisim_up_to refl_t P4 Q2 +)

Subgoal 2.3.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P2 P3) R.
Subgoal 2.3.1:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one Q (dn X) P3
============================
 one (par (par P Q) R) tau (par (par P2 P3) R) /\
   (exists P4 Q2, refl_t (par (par P2 P3) R) P4 (par P2 (par P3 R)) Q2 /\
      bisim_up_to refl_t P4 Q2 +)

Subgoal 2.3.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.3.1.1:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one Q (dn X) P3
============================
 one (par (par P Q) R) tau (par (par P2 P3) R)

Subgoal 2.3.1.2 is:
 exists P4 Q2, refl_t (par (par P2 P3) R) P4 (par P2 (par P3 R)) Q2 /\
   bisim_up_to refl_t P4 Q2 +

Subgoal 2.3.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.3.1.2:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one Q (dn X) P3
============================
 exists P4 Q2, refl_t (par (par P2 P3) R) P4 (par P2 (par P3 R)) Q2 /\
   bisim_up_to refl_t P4 Q2 +

Subgoal 2.3.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P2 P3) R.
Subgoal 2.3.1.2:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one Q (dn X) P3
============================
 exists Q2, refl_t (par (par P2 P3) R) (par (par P2 P3) R)
              (par P2 (par P3 R)) Q2 /\
   bisim_up_to refl_t (par (par P2 P3) R) Q2 +

Subgoal 2.3.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par P2 (par P3 R).
Subgoal 2.3.1.2:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one Q (dn X) P3
============================
 refl_t (par (par P2 P3) R) (par (par P2 P3) R) (par P2 (par P3 R))
   (par P2 (par P3 R)) /\
   bisim_up_to refl_t (par (par P2 P3) R) (par P2 (par P3 R)) +

Subgoal 2.3.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.3.1.2.1:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one Q (dn X) P3
============================
 refl_t (par (par P2 P3) R) (par (par P2 P3) R) (par P2 (par P3 R))
   (par P2 (par P3 R))

Subgoal 2.3.1.2.2 is:
 bisim_up_to refl_t (par (par P2 P3) R) (par P2 (par P3 R)) +

Subgoal 2.3.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.3.1.2.2:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one Q (dn X) P3
============================
 bisim_up_to refl_t (par (par P2 P3) R) (par P2 (par P3 R)) +

Subgoal 2.3.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < backchain CH.
Subgoal 2.3.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one R (dn X) Q4
============================
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P2 Q) Q4.
Subgoal 2.3.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one R (dn X) Q4
============================
 one (par (par P Q) R) tau (par (par P2 Q) Q4) /\
   (exists P3 Q2, refl_t (par (par P2 Q) Q4) P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.3.2.1:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one R (dn X) Q4
============================
 one (par (par P Q) R) tau (par (par P2 Q) Q4)

Subgoal 2.3.2.2 is:
 exists P3 Q2, refl_t (par (par P2 Q) Q4) P3 (par P2 (par Q Q4)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.3.2.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one R (dn X) Q4
============================
 exists P3 Q2, refl_t (par (par P2 Q) Q4) P3 (par P2 (par Q Q4)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P2 Q) Q4.
Subgoal 2.3.2.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one R (dn X) Q4
============================
 exists Q2, refl_t (par (par P2 Q) Q4) (par (par P2 Q) Q4)
              (par P2 (par Q Q4)) Q2 /\
   bisim_up_to refl_t (par (par P2 Q) Q4) Q2 +

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par P2 (par Q Q4).
Subgoal 2.3.2.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one R (dn X) Q4
============================
 refl_t (par (par P2 Q) Q4) (par (par P2 Q) Q4) (par P2 (par Q Q4))
   (par P2 (par Q Q4)) /\
   bisim_up_to refl_t (par (par P2 Q) Q4) (par P2 (par Q Q4)) +

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.3.2.2.1:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one R (dn X) Q4
============================
 refl_t (par (par P2 Q) Q4) (par (par P2 Q) Q4) (par P2 (par Q Q4))
   (par P2 (par Q Q4))

Subgoal 2.3.2.2.2 is:
 bisim_up_to refl_t (par (par P2 Q) Q4) (par P2 (par Q Q4)) +

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.3.2.2.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (up X) P2
H4 : one R (dn X) Q4
============================
 bisim_up_to refl_t (par (par P2 Q) Q4) (par P2 (par Q Q4)) +

Subgoal 2.4 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < backchain CH.
Subgoal 2.4:

Variables: P Q R X Q3 P2
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H3 : one (par Q R) (up X) Q3
============================
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 Q3) Q2 /\ bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < case H3.
Subgoal 2.4.1:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one Q (up X) P3
============================
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P4 Q2, refl_t P1 P4 (par P2 (par P3 R)) Q2 /\
      bisim_up_to refl_t P4 Q2 +)

Subgoal 2.4.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P2 P3) R.
Subgoal 2.4.1:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one Q (up X) P3
============================
 one (par (par P Q) R) tau (par (par P2 P3) R) /\
   (exists P4 Q2, refl_t (par (par P2 P3) R) P4 (par P2 (par P3 R)) Q2 /\
      bisim_up_to refl_t P4 Q2 +)

Subgoal 2.4.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.4.1.1:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one Q (up X) P3
============================
 one (par (par P Q) R) tau (par (par P2 P3) R)

Subgoal 2.4.1.2 is:
 exists P4 Q2, refl_t (par (par P2 P3) R) P4 (par P2 (par P3 R)) Q2 /\
   bisim_up_to refl_t P4 Q2 +

Subgoal 2.4.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.4.1.2:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one Q (up X) P3
============================
 exists P4 Q2, refl_t (par (par P2 P3) R) P4 (par P2 (par P3 R)) Q2 /\
   bisim_up_to refl_t P4 Q2 +

Subgoal 2.4.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P2 P3) R.
Subgoal 2.4.1.2:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one Q (up X) P3
============================
 exists Q2, refl_t (par (par P2 P3) R) (par (par P2 P3) R)
              (par P2 (par P3 R)) Q2 /\
   bisim_up_to refl_t (par (par P2 P3) R) Q2 +

Subgoal 2.4.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par P2 (par P3 R).
Subgoal 2.4.1.2:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one Q (up X) P3
============================
 refl_t (par (par P2 P3) R) (par (par P2 P3) R) (par P2 (par P3 R))
   (par P2 (par P3 R)) /\
   bisim_up_to refl_t (par (par P2 P3) R) (par P2 (par P3 R)) +

Subgoal 2.4.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.4.1.2.1:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one Q (up X) P3
============================
 refl_t (par (par P2 P3) R) (par (par P2 P3) R) (par P2 (par P3 R))
   (par P2 (par P3 R))

Subgoal 2.4.1.2.2 is:
 bisim_up_to refl_t (par (par P2 P3) R) (par P2 (par P3 R)) +

Subgoal 2.4.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < search.
Subgoal 2.4.1.2.2:

Variables: P Q R X P2 P3
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one Q (up X) P3
============================
 bisim_up_to refl_t (par (par P2 P3) R) (par P2 (par P3 R)) +

Subgoal 2.4.2 is:
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < backchain CH.
Subgoal 2.4.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one R (up X) Q4
============================
 exists P1, one (par (par P Q) R) tau P1 /\
   (exists P3 Q2, refl_t P1 P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < witness par (par P2 Q) Q4.
Subgoal 2.4.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one R (up X) Q4
============================
 one (par (par P Q) R) tau (par (par P2 Q) Q4) /\
   (exists P3 Q2, refl_t (par (par P2 Q) Q4) P3 (par P2 (par Q Q4)) Q2 /\
      bisim_up_to refl_t P3 Q2 +)

bisim_par_assoc < split.
Subgoal 2.4.2.1:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one R (up X) Q4
============================
 one (par (par P Q) R) tau (par (par P2 Q) Q4)

Subgoal 2.4.2.2 is:
 exists P3 Q2, refl_t (par (par P2 Q) Q4) P3 (par P2 (par Q Q4)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

bisim_par_assoc < search.
Subgoal 2.4.2.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one R (up X) Q4
============================
 exists P3 Q2, refl_t (par (par P2 Q) Q4) P3 (par P2 (par Q Q4)) Q2 /\
   bisim_up_to refl_t P3 Q2 +

bisim_par_assoc < witness par (par P2 Q) Q4.
Subgoal 2.4.2.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one R (up X) Q4
============================
 exists Q2, refl_t (par (par P2 Q) Q4) (par (par P2 Q) Q4)
              (par P2 (par Q Q4)) Q2 /\
   bisim_up_to refl_t (par (par P2 Q) Q4) Q2 +

bisim_par_assoc < witness par P2 (par Q Q4).
Subgoal 2.4.2.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one R (up X) Q4
============================
 refl_t (par (par P2 Q) Q4) (par (par P2 Q) Q4) (par P2 (par Q Q4))
   (par P2 (par Q Q4)) /\
   bisim_up_to refl_t (par (par P2 Q) Q4) (par P2 (par Q Q4)) +

bisim_par_assoc < split.
Subgoal 2.4.2.2.1:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one R (up X) Q4
============================
 refl_t (par (par P2 Q) Q4) (par (par P2 Q) Q4) (par P2 (par Q Q4))
   (par P2 (par Q Q4))

Subgoal 2.4.2.2.2 is:
 bisim_up_to refl_t (par (par P2 Q) Q4) (par P2 (par Q Q4)) +

bisim_par_assoc < search.
Subgoal 2.4.2.2.2:

Variables: P Q R X P2 Q4
CH : forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par P (par Q R)) +
H2 : one P (dn X) P2
H4 : one R (up X) Q4
============================
 bisim_up_to refl_t (par (par P2 Q) Q4) (par P2 (par Q Q4)) +

bisim_par_assoc < backchain CH.
Proof completed.
Abella < Theorem bisim_par_assoc_left : 
forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q).

============================
 forall P Q R, bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < intros.

Variables: P Q R
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < apply bisim_reflexive_ with P = par (par P Q) R.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < apply bisim_par_assoc with P = P, Q = Q, R = R.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < apply bisim_par_comm with P = P, Q = par Q R.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < apply bisim_par_assoc with P = Q, Q = R, R = P.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < apply bisim_par_comm with P = Q, Q = par R P.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
H5 : bisim_up_to refl_t (par Q (par R P)) (par (par R P) Q)
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < assert bisim_up_to refl_t (par R P) (par P R).
Subgoal 1:

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
H5 : bisim_up_to refl_t (par Q (par R P)) (par (par R P) Q)
============================
 bisim_up_to refl_t (par R P) (par P R)

Subgoal is:
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < backchain bisim_par_comm.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
H5 : bisim_up_to refl_t (par Q (par R P)) (par (par R P) Q)
H6 : bisim_up_to refl_t (par R P) (par P R)
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < apply bisim_par_subst_1 to H6 with R = Q.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
H5 : bisim_up_to refl_t (par Q (par R P)) (par (par R P) Q)
H6 : bisim_up_to refl_t (par R P) (par P R)
H7 : bisim_up_to refl_t (par (par R P) Q) (par (par P R) Q)
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < Acc : apply bisim_transitive_ to H1 H2.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
H5 : bisim_up_to refl_t (par Q (par R P)) (par (par R P) Q)
H6 : bisim_up_to refl_t (par R P) (par P R)
H7 : bisim_up_to refl_t (par (par R P) Q) (par (par P R) Q)
Acc : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < Acc : apply bisim_transitive_ to Acc H3.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
H5 : bisim_up_to refl_t (par Q (par R P)) (par (par R P) Q)
H6 : bisim_up_to refl_t (par R P) (par P R)
H7 : bisim_up_to refl_t (par (par R P) Q) (par (par P R) Q)
Acc : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
Acc1 : bisim_up_to refl_t (par (par P Q) R) (par (par Q R) P)
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < Acc : apply bisim_transitive_ to Acc1 H4.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
H5 : bisim_up_to refl_t (par Q (par R P)) (par (par R P) Q)
H6 : bisim_up_to refl_t (par R P) (par P R)
H7 : bisim_up_to refl_t (par (par R P) Q) (par (par P R) Q)
Acc : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
Acc1 : bisim_up_to refl_t (par (par P Q) R) (par (par Q R) P)
Acc2 : bisim_up_to refl_t (par (par P Q) R) (par Q (par R P))
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < Acc : apply bisim_transitive_ to Acc2 H5.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
H5 : bisim_up_to refl_t (par Q (par R P)) (par (par R P) Q)
H6 : bisim_up_to refl_t (par R P) (par P R)
H7 : bisim_up_to refl_t (par (par R P) Q) (par (par P R) Q)
Acc : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
Acc1 : bisim_up_to refl_t (par (par P Q) R) (par (par Q R) P)
Acc2 : bisim_up_to refl_t (par (par P Q) R) (par Q (par R P))
Acc3 : bisim_up_to refl_t (par (par P Q) R) (par (par R P) Q)
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < Acc : apply bisim_transitive_ to Acc3 H7.

Variables: P Q R
H1 : bisim_up_to refl_t (par (par P Q) R) (par (par P Q) R)
H2 : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
H3 : bisim_up_to refl_t (par P (par Q R)) (par (par Q R) P)
H4 : bisim_up_to refl_t (par (par Q R) P) (par Q (par R P))
H5 : bisim_up_to refl_t (par Q (par R P)) (par (par R P) Q)
H6 : bisim_up_to refl_t (par R P) (par P R)
H7 : bisim_up_to refl_t (par (par R P) Q) (par (par P R) Q)
Acc : bisim_up_to refl_t (par (par P Q) R) (par P (par Q R))
Acc1 : bisim_up_to refl_t (par (par P Q) R) (par (par Q R) P)
Acc2 : bisim_up_to refl_t (par (par P Q) R) (par Q (par R P))
Acc3 : bisim_up_to refl_t (par (par P Q) R) (par (par R P) Q)
Acc4 : bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)
============================
 bisim_up_to refl_t (par (par P Q) R) (par (par P R) Q)

bisim_par_assoc_left < search.
Proof completed.
Abella < Goodbye.