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

Abella < Import "ccs_bisim_context".
Importing from "ccs_bisim_context".
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 ->)
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 "Tech" occurs to the left of ->)
Warning: Definition can be used to defeat stratification
 (higher-order argument "Tech" occurs to the left of ->)

Abella < Import "ccs_ctx".
Ignoring import: /home/kaustuv/work/abella/examples/process-calculi/ccs/./ccs_ctx has already been imported.

Abella < Import "ccs_bisim_examples_helper".
Importing from "ccs_bisim_examples_helper".

Abella < Theorem bisim_context_reflexive_ : 
forall P, bisim_up_to bisim_context_t P P.


============================
 forall P, bisim_up_to bisim_context_t P P

bisim_context_reflexive_ < coinduction.

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

bisim_context_reflexive_ < intros.

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

bisim_context_reflexive_ < unfold.
Subgoal 1:

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

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

bisim_context_reflexive_ < intros.
Subgoal 1:

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

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

bisim_context_reflexive_ < witness P1.
Subgoal 1:

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

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

bisim_context_reflexive_ < split.
Subgoal 1.1:

Variables: P A P1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A P1
============================
 one P A P1

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

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

bisim_context_reflexive_ < search.
Subgoal 1.2:

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

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

bisim_context_reflexive_ < witness P1.
Subgoal 1.2:

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

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

bisim_context_reflexive_ < witness P1.
Subgoal 1.2:

Variables: P A P1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A P1
============================
 bisim_context_t P1 P1 P1 P1 /\ bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < split.
Subgoal 1.2.1:

Variables: P A P1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A P1
============================
 bisim_context_t P1 P1 P1 P1

Subgoal 1.2.2 is:
 bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < unfold.
Subgoal 1.2.1:

Variables: P A P1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A P1
============================
 exists P2 Q2, bisim_t P1 P2 P1 Q2 /\ context_t P2 P1 Q2 P1

Subgoal 1.2.2 is:
 bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < witness P1.
Subgoal 1.2.1:

Variables: P A P1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A P1
============================
 exists Q2, bisim_t P1 P1 P1 Q2 /\ context_t P1 P1 Q2 P1

Subgoal 1.2.2 is:
 bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < witness P1.
Subgoal 1.2.1:

Variables: P A P1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A P1
============================
 bisim_t P1 P1 P1 P1 /\ context_t P1 P1 P1 P1

Subgoal 1.2.2 is:
 bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < split.
Subgoal 1.2.1.1:

Variables: P A P1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A P1
============================
 bisim_t P1 P1 P1 P1

Subgoal 1.2.1.2 is:
 context_t P1 P1 P1 P1

Subgoal 1.2.2 is:
 bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < unfold.
Subgoal 1.2.1.1.1:

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

Subgoal 1.2.1.1.2 is:
 bisim_up_to refl_t P1 P1

Subgoal 1.2.1.2 is:
 context_t P1 P1 P1 P1

Subgoal 1.2.2 is:
 bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < backchain bisim_reflexive_.
Subgoal 1.2.1.1.2:

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

Subgoal 1.2.1.2 is:
 context_t P1 P1 P1 P1

Subgoal 1.2.2 is:
 bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < backchain bisim_reflexive_.
Subgoal 1.2.1.2:

Variables: P A P1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A P1
============================
 context_t P1 P1 P1 P1

Subgoal 1.2.2 is:
 bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < search.
Subgoal 1.2.2:

Variables: P A P1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A P1
============================
 bisim_up_to bisim_context_t P1 P1 +

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

bisim_context_reflexive_ < backchain CH.
Subgoal 2:

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

bisim_context_reflexive_ < intros.
Subgoal 2:

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

bisim_context_reflexive_ < witness Q1.
Subgoal 2:

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

bisim_context_reflexive_ < split.
Subgoal 2.1:

Variables: P A Q1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A Q1
============================
 one P A Q1

Subgoal 2.2 is:
 exists P2 Q2, bisim_context_t Q1 P2 Q1 Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

bisim_context_reflexive_ < search.
Subgoal 2.2:

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

bisim_context_reflexive_ < witness Q1.
Subgoal 2.2:

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

bisim_context_reflexive_ < witness Q1.
Subgoal 2.2:

Variables: P A Q1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A Q1
============================
 bisim_context_t Q1 Q1 Q1 Q1 /\ bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < split.
Subgoal 2.2.1:

Variables: P A Q1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A Q1
============================
 bisim_context_t Q1 Q1 Q1 Q1

Subgoal 2.2.2 is:
 bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < unfold.
Subgoal 2.2.1:

Variables: P A Q1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A Q1
============================
 exists P2 Q2, bisim_t Q1 P2 Q1 Q2 /\ context_t P2 Q1 Q2 Q1

Subgoal 2.2.2 is:
 bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < witness Q1.
Subgoal 2.2.1:

Variables: P A Q1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A Q1
============================
 exists Q2, bisim_t Q1 Q1 Q1 Q2 /\ context_t Q1 Q1 Q2 Q1

Subgoal 2.2.2 is:
 bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < witness Q1.
Subgoal 2.2.1:

Variables: P A Q1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A Q1
============================
 bisim_t Q1 Q1 Q1 Q1 /\ context_t Q1 Q1 Q1 Q1

Subgoal 2.2.2 is:
 bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < split.
Subgoal 2.2.1.1:

Variables: P A Q1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A Q1
============================
 bisim_t Q1 Q1 Q1 Q1

Subgoal 2.2.1.2 is:
 context_t Q1 Q1 Q1 Q1

Subgoal 2.2.2 is:
 bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < unfold.
Subgoal 2.2.1.1.1:

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

Subgoal 2.2.1.1.2 is:
 bisim_up_to refl_t Q1 Q1

Subgoal 2.2.1.2 is:
 context_t Q1 Q1 Q1 Q1

Subgoal 2.2.2 is:
 bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < backchain bisim_reflexive_.
Subgoal 2.2.1.1.2:

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

Subgoal 2.2.1.2 is:
 context_t Q1 Q1 Q1 Q1

Subgoal 2.2.2 is:
 bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < backchain bisim_reflexive_.
Subgoal 2.2.1.2:

Variables: P A Q1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A Q1
============================
 context_t Q1 Q1 Q1 Q1

Subgoal 2.2.2 is:
 bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < search.
Subgoal 2.2.2:

Variables: P A Q1
CH : forall P, bisim_up_to bisim_context_t P P +
H1 : one P A Q1
============================
 bisim_up_to bisim_context_t Q1 Q1 +

bisim_context_reflexive_ < backchain CH.
Proof completed.
Abella < Theorem bisim_repl_absorb : 
forall P, bisim_up_to refl_t (par (repl P) P) (repl P).


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

bisim_repl_absorb < Sound : apply bisim_context_sound.

Sound : is_sound bisim_context_t
============================
 forall P, bisim_up_to refl_t (par (repl P) P) (repl P)

bisim_repl_absorb < Sound : case Sound.

Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 forall P, bisim_up_to refl_t (par (repl P) P) (repl P)

bisim_repl_absorb < intros.

Variables: P
Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 bisim_up_to refl_t (par (repl P) P) (repl P)

bisim_repl_absorb < backchain Sound.

Variables: P
Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 bisim_up_to bisim_context_t (par (repl P) P) (repl P)

bisim_repl_absorb < clear Sound.

Variables: P
============================
 bisim_up_to bisim_context_t (par (repl P) P) (repl P)

bisim_repl_absorb < coinduction.

Variables: P
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
============================
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) #

bisim_repl_absorb < intros.

Variables: P
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
============================
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) #

bisim_repl_absorb < unfold.
Subgoal 1:

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

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

bisim_repl_absorb < intros.
Subgoal 1:

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

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

bisim_repl_absorb < case H1.
Subgoal 1.1:

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

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

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

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

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

bisim_repl_absorb < case H2.
Subgoal 1.1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 exists Q1, one (repl P) A Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) Q) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < witness par (repl P) Q.
Subgoal 1.1.1:

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

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < split.
Subgoal 1.1.1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 one (repl P) A (par (repl P) Q)

Subgoal 1.1.1.2 is:
 exists P2 Q2, bisim_context_t (par (par (repl P) Q) P) P2 (par (repl P) Q)
                 Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < search.
Subgoal 1.1.1.2:

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

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < witness par (repl P) P.
Subgoal 1.1.1.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 exists Q2, bisim_context_t (par (par (repl P) Q) P) (par (repl P) P)
              (par (repl P) Q) Q2 /\
   bisim_up_to bisim_context_t (par (repl P) P) Q2 +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < witness repl P.
Subgoal 1.1.1.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 bisim_context_t (par (par (repl P) Q) P) (par (repl P) P) (par (repl P) Q)
   (repl P) /\ bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < split.
Subgoal 1.1.1.2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 bisim_context_t (par (par (repl P) Q) P) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < unfold.
Subgoal 1.1.1.2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 exists P2 Q2, bisim_t (par (par (repl P) Q) P) P2 (par (repl P) Q) Q2 /\
   context_t P2 (par (repl P) P) Q2 (repl P)

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < witness par (par (repl P) P) Q.
Subgoal 1.1.1.2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 exists Q2, bisim_t (par (par (repl P) Q) P) (par (par (repl P) P) Q)
              (par (repl P) Q) Q2 /\
   context_t (par (par (repl P) P) Q) (par (repl P) P) Q2 (repl P)

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < witness par (repl P) Q.
Subgoal 1.1.1.2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 bisim_t (par (par (repl P) Q) P) (par (par (repl P) P) Q) (par (repl P) Q)
   (par (repl P) Q) /\
   context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
     (repl P)

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < split.
Subgoal 1.1.1.2.1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 bisim_t (par (par (repl P) Q) P) (par (par (repl P) P) Q) (par (repl P) Q)
   (par (repl P) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < unfold.
Subgoal 1.1.1.2.1.1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 bisim_up_to refl_t (par (par (repl P) Q) P) (par (par (repl P) P) Q)

Subgoal 1.1.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) Q) (par (repl P) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < backchain bisim_par_assoc_left.
Subgoal 1.1.1.2.1.1.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 bisim_up_to refl_t (par (repl P) Q) (par (repl P) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < backchain bisim_reflexive_.
Subgoal 1.1.1.2.1.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < search.
Subgoal 1.1.1.2.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P A Q
============================
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 1.1.2 is:
 exists Q1, one (repl P) tau Q1 /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

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

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

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

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

bisim_repl_absorb < backchain CH.
Subgoal 1.1.2:

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

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

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

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

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

bisim_repl_absorb < witness par (repl P) (par Q R).
Subgoal 1.1.2:

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

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

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

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

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

bisim_repl_absorb < split.
Subgoal 1.1.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 one (repl P) tau (par (repl P) (par Q R))

Subgoal 1.1.2.2 is:
 exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2
                 (par (repl P) (par Q R)) Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

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

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

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

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

bisim_repl_absorb < search.
Subgoal 1.1.2.2:

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

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

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

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

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

bisim_repl_absorb < witness par (repl P) P.
Subgoal 1.1.2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 exists Q2, bisim_context_t (par (par (repl P) (par Q R)) P) (par (repl P) P)
              (par (repl P) (par Q R)) Q2 /\
   bisim_up_to bisim_context_t (par (repl P) P) Q2 +

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

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

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

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

bisim_repl_absorb < witness repl P.
Subgoal 1.1.2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 bisim_context_t (par (par (repl P) (par Q R)) P) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P) /\
   bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < split.
Subgoal 1.1.2.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 bisim_context_t (par (par (repl P) (par Q R)) P) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < unfold.
Subgoal 1.1.2.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 exists P2 Q2, bisim_t (par (par (repl P) (par Q R)) P) P2
                 (par (repl P) (par Q R)) Q2 /\
   context_t P2 (par (repl P) P) Q2 (repl P)

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < witness par (par (repl P) P) (par Q R).
Subgoal 1.1.2.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 exists Q2, bisim_t (par (par (repl P) (par Q R)) P)
              (par (par (repl P) P) (par Q R)) (par (repl P) (par Q R)) Q2 /\
   context_t (par (par (repl P) P) (par Q R)) (par (repl P) P) Q2 (repl P)

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < witness par (repl P) (par Q R).
Subgoal 1.1.2.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 bisim_t (par (par (repl P) (par Q R)) P) (par (par (repl P) P) (par Q R))
   (par (repl P) (par Q R)) (par (repl P) (par Q R)) /\
   context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
     (par (repl P) (par Q R)) (repl P)

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < split.
Subgoal 1.1.2.2.1.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 bisim_t (par (par (repl P) (par Q R)) P) (par (par (repl P) P) (par Q R))
   (par (repl P) (par Q R)) (par (repl P) (par Q R))

Subgoal 1.1.2.2.1.2 is:
 context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < unfold.
Subgoal 1.1.2.2.1.1.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 bisim_up_to refl_t (par (par (repl P) (par Q R)) P)
   (par (par (repl P) P) (par Q R))

Subgoal 1.1.2.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) (par Q R)) (par (repl P) (par Q R))

Subgoal 1.1.2.2.1.2 is:
 context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < backchain bisim_par_assoc_left.
Subgoal 1.1.2.2.1.1.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 bisim_up_to refl_t (par (repl P) (par Q R)) (par (repl P) (par Q R))

Subgoal 1.1.2.2.1.2 is:
 context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < backchain bisim_reflexive_.
Subgoal 1.1.2.2.1.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < search.
Subgoal 1.1.2.2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q
H4 : one P (dn X) R
============================
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

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

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

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

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

bisim_repl_absorb < backchain CH.
Subgoal 1.2:

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

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

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

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

bisim_repl_absorb < witness par (repl P) Q1.
Subgoal 1.2:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 one (repl P) A (par (repl P) Q1) /\
   (exists P2 Q3, bisim_context_t (par (repl P) Q1) P2 (par (repl P) Q1) Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

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

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

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

bisim_repl_absorb < split.
Subgoal 1.2.1:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 one (repl P) A (par (repl P) Q1)

Subgoal 1.2.2 is:
 exists P2 Q3, bisim_context_t (par (repl P) Q1) P2 (par (repl P) Q1) Q3 /\
   bisim_up_to bisim_context_t P2 Q3 +

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

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

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

bisim_repl_absorb < search.
Subgoal 1.2.2:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 exists P2 Q3, bisim_context_t (par (repl P) Q1) P2 (par (repl P) Q1) Q3 /\
   bisim_up_to bisim_context_t P2 Q3 +

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

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

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

bisim_repl_absorb < witness par (repl P) Q1.
Subgoal 1.2.2:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 exists Q3, bisim_context_t (par (repl P) Q1) (par (repl P) Q1)
              (par (repl P) Q1) Q3 /\
   bisim_up_to bisim_context_t (par (repl P) Q1) Q3 +

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

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

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

bisim_repl_absorb < witness par (repl P) Q1.
Subgoal 1.2.2:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 bisim_context_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1)
   (par (repl P) Q1) /\
   bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < split.
Subgoal 1.2.2.1:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 bisim_context_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1)
   (par (repl P) Q1)

Subgoal 1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < unfold.
Subgoal 1.2.2.1:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 exists P2 Q2, bisim_t (par (repl P) Q1) P2 (par (repl P) Q1) Q2 /\
   context_t P2 (par (repl P) Q1) Q2 (par (repl P) Q1)

Subgoal 1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < witness par (repl P) Q1.
Subgoal 1.2.2.1:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 exists Q2, bisim_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1) Q2 /\
   context_t (par (repl P) Q1) (par (repl P) Q1) Q2 (par (repl P) Q1)

Subgoal 1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < witness par (repl P) Q1.
Subgoal 1.2.2.1:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 bisim_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1)
   (par (repl P) Q1) /\
   context_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1)
     (par (repl P) Q1)

Subgoal 1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < split.
Subgoal 1.2.2.1.1:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 bisim_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1)
   (par (repl P) Q1)

Subgoal 1.2.2.1.2 is:
 context_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1)
   (par (repl P) Q1)

Subgoal 1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < unfold.
Subgoal 1.2.2.1.1.1:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 bisim_up_to refl_t (par (repl P) Q1) (par (repl P) Q1)

Subgoal 1.2.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) Q1) (par (repl P) Q1)

Subgoal 1.2.2.1.2 is:
 context_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1)
   (par (repl P) Q1)

Subgoal 1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < backchain bisim_reflexive_.
Subgoal 1.2.2.1.1.2:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 bisim_up_to refl_t (par (repl P) Q1) (par (repl P) Q1)

Subgoal 1.2.2.1.2 is:
 context_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1)
   (par (repl P) Q1)

Subgoal 1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < backchain bisim_reflexive_.
Subgoal 1.2.2.1.2:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 context_t (par (repl P) Q1) (par (repl P) Q1) (par (repl P) Q1)
   (par (repl P) Q1)

Subgoal 1.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < search.
Subgoal 1.2.2.2:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q1
============================
 bisim_up_to bisim_context_t (par (repl P) Q1) (par (repl P) Q1) +

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

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

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

bisim_repl_absorb < backchain bisim_context_reflexive_.
Subgoal 1.3:

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

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

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

bisim_repl_absorb < case H2.
Subgoal 1.3:

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

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

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

bisim_repl_absorb < witness par (repl P) (par Q Q1).
Subgoal 1.3:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 one (repl P) tau (par (repl P) (par Q Q1)) /\
   (exists P2 Q3, bisim_context_t (par (par (repl P) Q) Q1) P2
                    (par (repl P) (par Q Q1)) Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

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

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

bisim_repl_absorb < split.
Subgoal 1.3.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 one (repl P) tau (par (repl P) (par Q Q1))

Subgoal 1.3.2 is:
 exists P2 Q3, bisim_context_t (par (par (repl P) Q) Q1) P2
                 (par (repl P) (par Q Q1)) Q3 /\
   bisim_up_to bisim_context_t P2 Q3 +

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

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

bisim_repl_absorb < search.
Subgoal 1.3.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 exists P2 Q3, bisim_context_t (par (par (repl P) Q) Q1) P2
                 (par (repl P) (par Q Q1)) Q3 /\
   bisim_up_to bisim_context_t P2 Q3 +

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

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

bisim_repl_absorb < witness par (repl P) (par Q Q1).
Subgoal 1.3.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 exists Q3, bisim_context_t (par (par (repl P) Q) Q1)
              (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1)) Q3 /\
   bisim_up_to bisim_context_t (par (repl P) (par Q Q1)) Q3 +

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

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

bisim_repl_absorb < witness par (repl P) (par Q Q1).
Subgoal 1.3.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 bisim_context_t (par (par (repl P) Q) Q1) (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1)) /\
   bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
     (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < split.
Subgoal 1.3.2.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 bisim_context_t (par (par (repl P) Q) Q1) (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))

Subgoal 1.3.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < unfold.
Subgoal 1.3.2.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 exists P2 Q2, bisim_t (par (par (repl P) Q) Q1) P2 (par (repl P) (par Q Q1))
                 Q2 /\
   context_t P2 (par (repl P) (par Q Q1)) Q2 (par (repl P) (par Q Q1))

Subgoal 1.3.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < witness par (repl P) (par Q Q1).
Subgoal 1.3.2.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 exists Q2, bisim_t (par (par (repl P) Q) Q1) (par (repl P) (par Q Q1))
              (par (repl P) (par Q Q1)) Q2 /\
   context_t (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1)) Q2
     (par (repl P) (par Q Q1))

Subgoal 1.3.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < witness par (repl P) (par Q Q1).
Subgoal 1.3.2.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 bisim_t (par (par (repl P) Q) Q1) (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1)) /\
   context_t (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))
     (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))

Subgoal 1.3.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < split.
Subgoal 1.3.2.1.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 bisim_t (par (par (repl P) Q) Q1) (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))

Subgoal 1.3.2.1.2 is:
 context_t (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))

Subgoal 1.3.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < unfold.
Subgoal 1.3.2.1.1.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 bisim_up_to refl_t (par (par (repl P) Q) Q1) (par (repl P) (par Q Q1))

Subgoal 1.3.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))

Subgoal 1.3.2.1.2 is:
 context_t (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))

Subgoal 1.3.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < backchain bisim_par_assoc.
Subgoal 1.3.2.1.1.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 bisim_up_to refl_t (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))

Subgoal 1.3.2.1.2 is:
 context_t (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))

Subgoal 1.3.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < backchain bisim_reflexive_.
Subgoal 1.3.2.1.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 context_t (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) (par (repl P) (par Q Q1))

Subgoal 1.3.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < search.
Subgoal 1.3.2.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (dn X) Q1
H4 : one P (up X) Q
============================
 bisim_up_to bisim_context_t (par (repl P) (par Q Q1))
   (par (repl P) (par Q Q1)) +

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

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

bisim_repl_absorb < backchain bisim_context_reflexive_.
Subgoal 1.4:

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

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

bisim_repl_absorb < case H2.
Subgoal 1.4:

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

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

bisim_repl_absorb < witness par (repl P) (par Q1 Q).
Subgoal 1.4:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 one (repl P) tau (par (repl P) (par Q1 Q)) /\
   (exists P2 Q3, bisim_context_t (par (par (repl P) Q) Q1) P2
                    (par (repl P) (par Q1 Q)) Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

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

bisim_repl_absorb < split.
Subgoal 1.4.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 one (repl P) tau (par (repl P) (par Q1 Q))

Subgoal 1.4.2 is:
 exists P2 Q3, bisim_context_t (par (par (repl P) Q) Q1) P2
                 (par (repl P) (par Q1 Q)) Q3 /\
   bisim_up_to bisim_context_t P2 Q3 +

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

bisim_repl_absorb < search.
Subgoal 1.4.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 exists P2 Q3, bisim_context_t (par (par (repl P) Q) Q1) P2
                 (par (repl P) (par Q1 Q)) Q3 /\
   bisim_up_to bisim_context_t P2 Q3 +

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

bisim_repl_absorb < witness par (repl P) (par Q1 Q).
Subgoal 1.4.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 exists Q3, bisim_context_t (par (par (repl P) Q) Q1)
              (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q)) Q3 /\
   bisim_up_to bisim_context_t (par (repl P) (par Q1 Q)) Q3 +

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

bisim_repl_absorb < witness par (repl P) (par Q1 Q).
Subgoal 1.4.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 bisim_context_t (par (par (repl P) Q) Q1) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q)) /\
   bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
     (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < split.
Subgoal 1.4.2.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 bisim_context_t (par (par (repl P) Q) Q1) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < unfold.
Subgoal 1.4.2.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 exists P2 Q2, bisim_t (par (par (repl P) Q) Q1) P2 (par (repl P) (par Q1 Q))
                 Q2 /\
   context_t P2 (par (repl P) (par Q1 Q)) Q2 (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < witness par (repl P) (par Q1 Q).
Subgoal 1.4.2.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 exists Q2, bisim_t (par (par (repl P) Q) Q1) (par (repl P) (par Q1 Q))
              (par (repl P) (par Q1 Q)) Q2 /\
   context_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q)) Q2
     (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < witness par (repl P) (par Q1 Q).
Subgoal 1.4.2.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 bisim_t (par (par (repl P) Q) Q1) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q)) /\
   context_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))
     (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < split.
Subgoal 1.4.2.1.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 bisim_t (par (par (repl P) Q) Q1) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.2 is:
 context_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < unfold.
Subgoal 1.4.2.1.1.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 bisim_up_to refl_t (par (par (repl P) Q) Q1) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.2 is:
 context_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < apply bisim_par_comm with P = Q, Q = Q1.
Subgoal 1.4.2.1.1.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
H5 : bisim_up_to refl_t (par Q Q1) (par Q1 Q)
============================
 bisim_up_to refl_t (par (par (repl P) Q) Q1) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.2 is:
 context_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < apply bisim_par_subst_2 to H5 with R = repl P.
Subgoal 1.4.2.1.1.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
H5 : bisim_up_to refl_t (par Q Q1) (par Q1 Q)
H6 : bisim_up_to refl_t (par (repl P) (par Q Q1)) (par (repl P) (par Q1 Q))
============================
 bisim_up_to refl_t (par (par (repl P) Q) Q1) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.2 is:
 context_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < apply bisim_par_assoc with P = repl P, Q = Q, R = Q1.
Subgoal 1.4.2.1.1.1:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
H5 : bisim_up_to refl_t (par Q Q1) (par Q1 Q)
H6 : bisim_up_to refl_t (par (repl P) (par Q Q1)) (par (repl P) (par Q1 Q))
H7 : bisim_up_to refl_t (par (par (repl P) Q) Q1) (par (repl P) (par Q Q1))
============================
 bisim_up_to refl_t (par (par (repl P) Q) Q1) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.2 is:
 context_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < backchain bisim_transitive_.
Subgoal 1.4.2.1.1.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 bisim_up_to refl_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.1.2 is:
 context_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < backchain bisim_reflexive_.
Subgoal 1.4.2.1.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 context_t (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) (par (repl P) (par Q1 Q))

Subgoal 1.4.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < search.
Subgoal 1.4.2.2:

Variables: P X Q1 Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H3 : one P (up X) Q1
H4 : one P (dn X) Q
============================
 bisim_up_to bisim_context_t (par (repl P) (par Q1 Q))
   (par (repl P) (par Q1 Q)) +

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

bisim_repl_absorb < backchain bisim_context_reflexive_.
Subgoal 2:

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

bisim_repl_absorb < intros.
Subgoal 2:

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

bisim_repl_absorb < case H1.
Subgoal 2.1:

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

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < witness par (par (repl P) Q) P.
Subgoal 2.1:

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

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < split.
Subgoal 2.1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 one (par (repl P) P) A (par (par (repl P) Q) P)

Subgoal 2.1.2 is:
 exists P2 Q2, bisim_context_t (par (par (repl P) Q) P) P2 (par (repl P) Q)
                 Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < search.
Subgoal 2.1.2:

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

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < witness par (repl P) P.
Subgoal 2.1.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 exists Q2, bisim_context_t (par (par (repl P) Q) P) (par (repl P) P)
              (par (repl P) Q) Q2 /\
   bisim_up_to bisim_context_t (par (repl P) P) Q2 +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < witness repl P.
Subgoal 2.1.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 bisim_context_t (par (par (repl P) Q) P) (par (repl P) P) (par (repl P) Q)
   (repl P) /\ bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < split.
Subgoal 2.1.2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 bisim_context_t (par (par (repl P) Q) P) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < unfold.
Subgoal 2.1.2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 exists P2 Q2, bisim_t (par (par (repl P) Q) P) P2 (par (repl P) Q) Q2 /\
   context_t P2 (par (repl P) P) Q2 (repl P)

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < witness par (par (repl P) P) Q.
Subgoal 2.1.2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 exists Q2, bisim_t (par (par (repl P) Q) P) (par (par (repl P) P) Q)
              (par (repl P) Q) Q2 /\
   context_t (par (par (repl P) P) Q) (par (repl P) P) Q2 (repl P)

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < witness par (repl P) Q.
Subgoal 2.1.2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 bisim_t (par (par (repl P) Q) P) (par (par (repl P) P) Q) (par (repl P) Q)
   (par (repl P) Q) /\
   context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
     (repl P)

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < split.
Subgoal 2.1.2.1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 bisim_t (par (par (repl P) Q) P) (par (par (repl P) P) Q) (par (repl P) Q)
   (par (repl P) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < unfold.
Subgoal 2.1.2.1.1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 bisim_up_to refl_t (par (par (repl P) Q) P) (par (par (repl P) P) Q)

Subgoal 2.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) Q) (par (repl P) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < backchain bisim_par_assoc_left.
Subgoal 2.1.2.1.1.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 bisim_up_to refl_t (par (repl P) Q) (par (repl P) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < backchain bisim_reflexive_.
Subgoal 2.1.2.1.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 context_t (par (par (repl P) P) Q) (par (repl P) P) (par (repl P) Q)
   (repl P)

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < search.
Subgoal 2.1.2.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P A Q
============================
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

Subgoal 2.2 is:
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < backchain CH.
Subgoal 2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 exists P1, one (par (repl P) P) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < witness par (par (repl P) (par Q R)) P.
Subgoal 2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 one (par (repl P) P) tau (par (par (repl P) (par Q R)) P) /\
   (exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2
                    (par (repl P) (par Q R)) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

bisim_repl_absorb < split.
Subgoal 2.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 one (par (repl P) P) tau (par (par (repl P) (par Q R)) P)

Subgoal 2.2.2 is:
 exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2
                 (par (repl P) (par Q R)) Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

bisim_repl_absorb < search.
Subgoal 2.2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 exists P2 Q2, bisim_context_t (par (par (repl P) (par Q R)) P) P2
                 (par (repl P) (par Q R)) Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

bisim_repl_absorb < witness par (repl P) P.
Subgoal 2.2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 exists Q2, bisim_context_t (par (par (repl P) (par Q R)) P) (par (repl P) P)
              (par (repl P) (par Q R)) Q2 /\
   bisim_up_to bisim_context_t (par (repl P) P) Q2 +

bisim_repl_absorb < witness repl P.
Subgoal 2.2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 bisim_context_t (par (par (repl P) (par Q R)) P) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P) /\
   bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < split.
Subgoal 2.2.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 bisim_context_t (par (par (repl P) (par Q R)) P) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 2.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < unfold.
Subgoal 2.2.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 exists P2 Q2, bisim_t (par (par (repl P) (par Q R)) P) P2
                 (par (repl P) (par Q R)) Q2 /\
   context_t P2 (par (repl P) P) Q2 (repl P)

Subgoal 2.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < witness par (par (repl P) P) (par Q R).
Subgoal 2.2.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 exists Q2, bisim_t (par (par (repl P) (par Q R)) P)
              (par (par (repl P) P) (par Q R)) (par (repl P) (par Q R)) Q2 /\
   context_t (par (par (repl P) P) (par Q R)) (par (repl P) P) Q2 (repl P)

Subgoal 2.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < witness par (repl P) (par Q R).
Subgoal 2.2.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 bisim_t (par (par (repl P) (par Q R)) P) (par (par (repl P) P) (par Q R))
   (par (repl P) (par Q R)) (par (repl P) (par Q R)) /\
   context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
     (par (repl P) (par Q R)) (repl P)

Subgoal 2.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < split.
Subgoal 2.2.2.1.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 bisim_t (par (par (repl P) (par Q R)) P) (par (par (repl P) P) (par Q R))
   (par (repl P) (par Q R)) (par (repl P) (par Q R))

Subgoal 2.2.2.1.2 is:
 context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 2.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < unfold.
Subgoal 2.2.2.1.1.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 bisim_up_to refl_t (par (par (repl P) (par Q R)) P)
   (par (par (repl P) P) (par Q R))

Subgoal 2.2.2.1.1.2 is:
 bisim_up_to refl_t (par (repl P) (par Q R)) (par (repl P) (par Q R))

Subgoal 2.2.2.1.2 is:
 context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 2.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < backchain bisim_par_assoc_left.
Subgoal 2.2.2.1.1.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 bisim_up_to refl_t (par (repl P) (par Q R)) (par (repl P) (par Q R))

Subgoal 2.2.2.1.2 is:
 context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 2.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < backchain bisim_reflexive_.
Subgoal 2.2.2.1.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 context_t (par (par (repl P) P) (par Q R)) (par (repl P) P)
   (par (repl P) (par Q R)) (repl P)

Subgoal 2.2.2.2 is:
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < search.
Subgoal 2.2.2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (par (repl P) P) (repl P) +
H2 : one P (up X) Q
H3 : one P (dn X) R
============================
 bisim_up_to bisim_context_t (par (repl P) P) (repl P) +

bisim_repl_absorb < backchain CH.
Proof completed.
Abella < Theorem ex_bang_plus_ctx : 
forall P, bisim (repl (plus (act (dn a) P) (act (dn b) P)))
            (par (repl (act (dn a) P)) (repl (act (dn b) P))).


============================
 forall P, bisim (repl (plus (act (dn a) P) (act (dn b) P)))
             (par (repl (act (dn a) P)) (repl (act (dn b) P)))

ex_bang_plus_ctx < Sound : apply bisim_context_sound.

Sound : is_sound bisim_context_t
============================
 forall P, bisim (repl (plus (act (dn a) P) (act (dn b) P)))
             (par (repl (act (dn a) P)) (repl (act (dn b) P)))

ex_bang_plus_ctx < Sound : case Sound.

Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 forall P, bisim (repl (plus (act (dn a) P) (act (dn b) P)))
             (par (repl (act (dn a) P)) (repl (act (dn b) P)))

ex_bang_plus_ctx < intros.

Variables: P
Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 bisim (repl (plus (act (dn a) P) (act (dn b) P)))
   (par (repl (act (dn a) P)) (repl (act (dn b) P)))

ex_bang_plus_ctx < unfold.

Variables: P
Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 bisim_up_to refl_t (repl (plus (act (dn a) P) (act (dn b) P)))
   (par (repl (act (dn a) P)) (repl (act (dn b) P)))

ex_bang_plus_ctx < backchain Sound.

Variables: P
Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
   (par (repl (act (dn a) P)) (repl (act (dn b) P)))

ex_bang_plus_ctx < clear Sound.

Variables: P
============================
 bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
   (par (repl (act (dn a) P)) (repl (act (dn b) P)))

ex_bang_plus_ctx < coinduction.

Variables: P
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
============================
 bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
   (par (repl (act (dn a) P)) (repl (act (dn b) P))) #

ex_bang_plus_ctx < intros.

Variables: P
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
============================
 bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
   (par (repl (act (dn a) P)) (repl (act (dn b) P))) #

ex_bang_plus_ctx < unfold.
Subgoal 1:

Variables: P
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
============================
 forall A P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 ->
   (exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < intros.
Subgoal 1:

Variables: P A P1
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H1 : one (repl (plus (act (dn a) P) (act (dn b) P))) A P1
============================
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < case H1.
Subgoal 1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H2 : one (plus (act (dn a) P) (act (dn b) P)) A Q
============================
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < case H2.
Subgoal 1.1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H3 : one (act (dn a) P) A Q
============================
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < case H3.
Subgoal 1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q1, one (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) (dn a) Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness par (par (repl (act (dn a) P)) P) (repl (act (dn b) P)).
Subgoal 1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 one (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) (dn a)
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                    (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < split.
Subgoal 1.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 one (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) (dn a)
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))

Subgoal 1.1.1.2 is:
 exists P2 Q2, bisim_context_t
                 (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < search.
Subgoal 1.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P2 Q2, bisim_context_t
                 (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness repl (plus (act (dn a) P) (act (dn b) P)).
Subgoal 1.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q2, bisim_context_t
              (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (repl (plus (act (dn a) Q) (act (dn b) Q)))
              (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2 +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness par (repl (act (dn a) P)) (repl (act (dn b) P)).
Subgoal 1.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) /\
   bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < split.
Subgoal 1.1.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < unfold.
Subgoal 1.1.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P2 Q2, bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   context_t P2 (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness par (repl (plus (act (dn a) P) (act (dn b) P))) P.
Subgoal 1.1.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q2, bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
     (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness par (par (repl (act (dn a) P)) (repl (act (dn b) P))) P.
Subgoal 1.1.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q) /\
   context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
     (repl (plus (act (dn a) Q) (act (dn b) Q)))
     (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < split.
Subgoal 1.1.1.2.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < unfold.
Subgoal 1.1.1.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to refl_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.1.2 is:
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < backchain bisim_reflexive_.
Subgoal 1.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < apply bisim_par_comm with P = P, Q = repl (act (dn b) Q).
Subgoal 1.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < apply bisim_par_subst_2 to H4 with R = repl (act (dn a) Q).
Subgoal 1.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < apply bisim_par_assoc with P = repl (act (dn a) Q), Q = P, R = repl (act (dn b) Q).
Subgoal 1.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < apply bisim_par_assoc with P = repl (act (dn a) Q), Q = repl (act (dn b) Q), R = P.
Subgoal 1.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
H7 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < apply bisim_transitive_ to H6 H5.
Subgoal 1.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
H7 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H8 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < apply bisim_symmetric_ to H7.
Subgoal 1.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
H7 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H8 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H9 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < apply bisim_transitive_ to H8 H9.
Subgoal 1.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
H7 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H8 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H9 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
H10 : bisim_up_to refl_t
        (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
        (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < search.
Subgoal 1.1.1.2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < search.
Subgoal 1.1.1.2.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < backchain CH.
Subgoal 1.1.2:

Variables: P A Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H3 : one (act (dn b) P) A Q
============================
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < case H3.
Subgoal 1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q1, one (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) (dn b) Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness par (repl (act (dn a) P)) (par (repl (act (dn b) P)) P).
Subgoal 1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 one (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) (dn b)
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                    (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < split.
Subgoal 1.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 one (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) (dn b)
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))

Subgoal 1.1.2.2 is:
 exists P2 Q2, bisim_context_t
                 (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < search.
Subgoal 1.1.2.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P2 Q2, bisim_context_t
                 (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness repl (plus (act (dn a) P) (act (dn b) P)).
Subgoal 1.1.2.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q2, bisim_context_t
              (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (repl (plus (act (dn a) Q) (act (dn b) Q)))
              (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q2 /\
   bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2 +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness par (repl (act (dn a) P)) (repl (act (dn b) P)).
Subgoal 1.1.2.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) /\
   bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < split.
Subgoal 1.1.2.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < unfold.
Subgoal 1.1.2.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P2 Q2, bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q2 /\
   context_t P2 (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness par (repl (plus (act (dn a) P) (act (dn b) P))) P.
Subgoal 1.1.2.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q2, bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q2 /\
   context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
     (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < witness par (par (repl (act (dn a) P)) (repl (act (dn b) P))) P.
Subgoal 1.1.2.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q) /\
   context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
     (repl (plus (act (dn a) Q) (act (dn b) Q)))
     (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < split.
Subgoal 1.1.2.2.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.2.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < unfold.
Subgoal 1.1.2.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to refl_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)

Subgoal 1.1.2.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.2.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < backchain bisim_reflexive_.
Subgoal 1.1.2.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to refl_t (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.2.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < apply bisim_par_assoc with P = repl (act (dn a) Q), Q = repl (act (dn b) Q), R = Q.
Subgoal 1.1.2.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
============================
 bisim_up_to refl_t (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 1.1.2.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < backchain bisim_symmetric_.
Subgoal 1.1.2.2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 1.1.2.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < search.
Subgoal 1.1.2.2.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 1.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < backchain CH.
Subgoal 1.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H2 : one (plus (act (dn a) P) (act (dn b) P)) (up X) Q
H3 : one (plus (act (dn a) P) (act (dn b) P)) (dn X) R
============================
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < case H2.
Subgoal 1.2.1:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H3 : one (plus (act (dn a) P) (act (dn b) P)) (dn X) R
H4 : one (act (dn a) P) (up X) Q
============================
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2.2 is:
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < case H4.
Subgoal 1.2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H3 : one (plus (act (dn a) P) (act (dn b) P)) (dn X) R
H4 : one (act (dn b) P) (up X) Q
============================
 exists Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) P) (act (dn b) P)))
                       (par Q R))
                    P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < case H4.
Subgoal 2:

Variables: P
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
============================
 forall A Q1, one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1 ->
   (exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_plus_ctx < intros.
Subgoal 2:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H1 : one (par (repl (act (dn a) P)) (repl (act (dn b) P))) A Q1
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_plus_ctx < case H1.
Subgoal 2.1:

Variables: P A P2
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H2 : one (repl (act (dn a) P)) A P2
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P3 Q2, bisim_context_t P1 P3 (par P2 (repl (act (dn b) P))) Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H2.
Subgoal 2.1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H3 : one (act (dn a) P) A Q
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) Q) (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H3.
Subgoal 2.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P1, one (repl (plus (act (dn a) Q) (act (dn b) Q))) (dn a) P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness par (repl (plus (act (dn a) P) (act (dn b) P))) P.
Subgoal 2.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 one (repl (plus (act (dn a) Q) (act (dn b) Q))) (dn a)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) /\
   (exists P3 Q2, bisim_context_t
                    (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P3
                    (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < split.
Subgoal 2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 one (repl (plus (act (dn a) Q) (act (dn b) Q))) (dn a)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)

Subgoal 2.1.1.2 is:
 exists P3 Q2, bisim_context_t
                 (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P3
                 (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   bisim_up_to bisim_context_t P3 Q2 +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < search.
Subgoal 2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P3 Q2, bisim_context_t
                 (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P3
                 (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   bisim_up_to bisim_context_t P3 Q2 +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness repl (plus (act (dn a) P) (act (dn b) P)).
Subgoal 2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q2, bisim_context_t
              (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (repl (plus (act (dn a) Q) (act (dn b) Q)))
              (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2 +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness par (repl (act (dn a) P)) (repl (act (dn b) P)).
Subgoal 2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) /\
   bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < split.
Subgoal 2.1.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < unfold.
Subgoal 2.1.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P2 Q2, bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   context_t P2 (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness par (repl (plus (act (dn a) P) (act (dn b) P))) P.
Subgoal 2.1.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q2, bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q))) Q2 /\
   context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
     (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness par (par (repl (act (dn a) P)) (repl (act (dn b) P))) P.
Subgoal 2.1.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q) /\
   context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
     (repl (plus (act (dn a) Q) (act (dn b) Q)))
     (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < split.
Subgoal 2.1.1.2.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < unfold.
Subgoal 2.1.1.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to refl_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.1.2 is:
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < backchain bisim_reflexive_.
Subgoal 2.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < apply bisim_par_comm with P = Q, Q = repl (act (dn b) Q).
Subgoal 2.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < apply bisim_par_subst_2 to H4 with R = repl (act (dn a) Q).
Subgoal 2.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < apply bisim_par_assoc with P = repl (act (dn a) Q), Q = Q, R = repl (act (dn b) Q).
Subgoal 2.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < apply bisim_par_assoc with P = repl (act (dn a) Q), Q = repl (act (dn b) Q), R = Q.
Subgoal 2.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
H7 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < apply bisim_transitive_ to H6 H5.
Subgoal 2.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
H7 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H8 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < apply bisim_symmetric_ to H7.
Subgoal 2.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
H7 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H8 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H9 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < apply bisim_transitive_ to H8 H9.
Subgoal 2.1.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t (par Q (repl (act (dn b) Q)))
       (par (repl (act (dn b) Q)) Q)
H5 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H6 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par Q (repl (act (dn b) Q))))
H7 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H8 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
H9 : bisim_up_to refl_t
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
H10 : bisim_up_to refl_t
        (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
        (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
============================
 bisim_up_to refl_t (par (par (repl (act (dn a) Q)) Q) (repl (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.1.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < search.
Subgoal 2.1.1.2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < search.
Subgoal 2.1.1.2.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.1.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < backchain CH.
Subgoal 2.1.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H3 : one (act (dn a) P) (up X) Q
H4 : one (act (dn a) P) (dn X) R
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q2, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) (par Q R))
                       (repl (act (dn b) P)))
                    Q2 /\
        bisim_up_to bisim_context_t P3 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H3.
Subgoal 2.2:

Variables: P A Q2
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H2 : one (repl (act (dn b) P)) A Q2
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q2) Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H2.
Subgoal 2.2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H3 : one (act (dn b) P) A Q
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) A P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P)) (par (repl (act (dn b) P)) Q))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H3.
Subgoal 2.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P1, one (repl (plus (act (dn a) Q) (act (dn b) Q))) (dn b) P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness par (repl (plus (act (dn a) P) (act (dn b) P))) P.
Subgoal 2.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 one (repl (plus (act (dn a) Q) (act (dn b) Q))) (dn b)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) /\
   (exists P2 Q1, bisim_context_t
                    (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                    (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < split.
Subgoal 2.2.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 one (repl (plus (act (dn a) Q) (act (dn b) Q))) (dn b)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)

Subgoal 2.2.1.2 is:
 exists P2 Q1, bisim_context_t
                 (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q1 /\
   bisim_up_to bisim_context_t P2 Q1 +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < search.
Subgoal 2.2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P2 Q1, bisim_context_t
                 (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q1 /\
   bisim_up_to bisim_context_t P2 Q1 +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness repl (plus (act (dn a) P) (act (dn b) P)).
Subgoal 2.2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q1, bisim_context_t
              (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (repl (plus (act (dn a) Q) (act (dn b) Q)))
              (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q1 /\
   bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q))) Q1 +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness par (repl (act (dn a) P)) (repl (act (dn b) P)).
Subgoal 2.2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) /\
   bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < split.
Subgoal 2.2.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < unfold.
Subgoal 2.2.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists P2 Q2, bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q) P2
                 (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q2 /\
   context_t P2 (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness par (repl (plus (act (dn a) P) (act (dn b) P))) Q.
Subgoal 2.2.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 exists Q2, bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
              (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q)) Q2 /\
   context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
     (repl (plus (act (dn a) Q) (act (dn b) Q))) Q2
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < witness par (par (repl (act (dn a) P)) (repl (act (dn b) P))) Q.
Subgoal 2.2.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q) /\
   context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
     (repl (plus (act (dn a) Q) (act (dn b) Q)))
     (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
     (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < split.
Subgoal 2.2.1.2.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.2.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < unfold.
Subgoal 2.2.1.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to refl_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)

Subgoal 2.2.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.2.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < backchain bisim_reflexive_.
Subgoal 2.2.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to refl_t (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.2.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < apply bisim_par_assoc with P = repl (act (dn a) P), Q = repl (act (dn b) P), R = Q.
Subgoal 2.2.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
H4 : bisim_up_to refl_t
       (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
       (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
============================
 bisim_up_to refl_t (par (repl (act (dn a) Q)) (par (repl (act (dn b) Q)) Q))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)

Subgoal 2.2.1.2.1.2 is:
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < backchain bisim_symmetric_.
Subgoal 2.2.1.2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 context_t (par (repl (plus (act (dn a) Q) (act (dn b) Q))) Q)
   (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) Q)
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q)))

Subgoal 2.2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < search.
Subgoal 2.2.1.2.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
       (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +
============================
 bisim_up_to bisim_context_t (repl (plus (act (dn a) Q) (act (dn b) Q)))
   (par (repl (act (dn a) Q)) (repl (act (dn b) Q))) +

Subgoal 2.2.2 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < backchain CH.
Subgoal 2.2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H3 : one (act (dn b) P) (up X) Q
H4 : one (act (dn b) P) (dn X) R
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P2 Q1, bisim_context_t P1 P2
                    (par (repl (act (dn a) P))
                       (par (repl (act (dn b) P)) (par Q R)))
                    Q1 /\
        bisim_up_to bisim_context_t P2 Q1 +)

Subgoal 2.3 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H3.
Subgoal 2.3:

Variables: P X Q2 P2
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H2 : one (repl (act (dn a) P)) (up X) P2
H3 : one (repl (act (dn b) P)) (dn X) Q2
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H2.
Subgoal 2.3:

Variables: P X Q2 Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H3 : one (repl (act (dn b) P)) (dn X) Q2
H4 : one (act (dn a) P) (up X) Q
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3
                    (par (par (repl (act (dn a) P)) Q) Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

Subgoal 2.4 is:
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H4.
Subgoal 2.4:

Variables: P X Q2 P2
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H2 : one (repl (act (dn a) P)) (dn X) P2
H3 : one (repl (act (dn b) P)) (up X) Q2
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3 (par P2 Q2) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H3.
Subgoal 2.4:

Variables: P X P2 Q
CH : bisim_up_to bisim_context_t (repl (plus (act (dn a) P) (act (dn b) P)))
       (par (repl (act (dn a) P)) (repl (act (dn b) P))) +
H2 : one (repl (act (dn a) P)) (dn X) P2
H4 : one (act (dn b) P) (up X) Q
============================
 exists P1, one (repl (plus (act (dn a) P) (act (dn b) P))) tau P1 /\
   (exists P3 Q1, bisim_context_t P1 P3
                    (par P2 (par (repl (act (dn b) P)) Q)) Q1 /\
        bisim_up_to bisim_context_t P3 Q1 +)

ex_bang_plus_ctx < case H4.
Proof completed.
Abella < Theorem ex_bang_bang_ctx : 
forall P, bisim (repl (repl (act (dn a) P))) (repl (act (dn a) P)).


============================
 forall P, bisim (repl (repl (act (dn a) P))) (repl (act (dn a) P))

ex_bang_bang_ctx < Sound : apply bisim_context_sound.

Sound : is_sound bisim_context_t
============================
 forall P, bisim (repl (repl (act (dn a) P))) (repl (act (dn a) P))

ex_bang_bang_ctx < Sound : case Sound.

Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 forall P, bisim (repl (repl (act (dn a) P))) (repl (act (dn a) P))

ex_bang_bang_ctx < intros.

Variables: P
Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 bisim (repl (repl (act (dn a) P))) (repl (act (dn a) P))

ex_bang_bang_ctx < unfold.

Variables: P
Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 bisim_up_to refl_t (repl (repl (act (dn a) P))) (repl (act (dn a) P))

ex_bang_bang_ctx < backchain Sound.

Variables: P
Sound : forall P Q, bisim_up_to bisim_context_t P Q -> bisim_up_to refl_t P Q
============================
 bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
   (repl (act (dn a) P))

ex_bang_bang_ctx < clear Sound.

Variables: P
============================
 bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
   (repl (act (dn a) P))

ex_bang_bang_ctx < coinduction.

Variables: P
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
============================
 bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
   (repl (act (dn a) P)) #

ex_bang_bang_ctx < intros.

Variables: P
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
============================
 bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
   (repl (act (dn a) P)) #

ex_bang_bang_ctx < unfold.
Subgoal 1:

Variables: P
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
============================
 forall A P1, one (repl (repl (act (dn a) P))) A P1 ->
   (exists Q1, one (repl (act (dn a) P)) A Q1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < intros.
Subgoal 1:

Variables: P A P1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
H1 : one (repl (repl (act (dn a) P))) A P1
============================
 exists Q1, one (repl (act (dn a) P)) A Q1 /\
   (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < case H1.
Subgoal 1.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
H2 : one (repl (act (dn a) P)) A Q
============================
 exists Q1, one (repl (act (dn a) P)) A Q1 /\
   (exists P2 Q2, bisim_context_t (par (repl (repl (act (dn a) P))) Q) P2 Q1
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < case H2.
Subgoal 1.1.1:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
H3 : one (act (dn a) P) A Q1
============================
 exists Q2, one (repl (act (dn a) P)) A Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) Q1))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < case H3.
Subgoal 1.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 exists Q2, one (repl (act (dn a) Q1)) (dn a) Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) Q1)))
                       (par (repl (act (dn a) Q1)) Q1))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < witness par (repl (act (dn a) P)) P.
Subgoal 1.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 one (repl (act (dn a) Q1)) (dn a) (par (repl (act (dn a) Q1)) Q1) /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) Q1)))
                       (par (repl (act (dn a) Q1)) Q1))
                    P2 (par (repl (act (dn a) Q1)) Q1) Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < split.
Subgoal 1.1.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 one (repl (act (dn a) Q1)) (dn a) (par (repl (act (dn a) Q1)) Q1)

Subgoal 1.1.1.2 is:
 exists P2 Q3, bisim_context_t
                 (par (repl (repl (act (dn a) Q1)))
                    (par (repl (act (dn a) Q1)) Q1))
                 P2 (par (repl (act (dn a) Q1)) Q1) Q3 /\
   bisim_up_to bisim_context_t P2 Q3 +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < search.
Subgoal 1.1.1.2:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 exists P2 Q3, bisim_context_t
                 (par (repl (repl (act (dn a) Q1)))
                    (par (repl (act (dn a) Q1)) Q1))
                 P2 (par (repl (act (dn a) Q1)) Q1) Q3 /\
   bisim_up_to bisim_context_t P2 Q3 +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < witness repl (repl (act (dn a) P)).
Subgoal 1.1.1.2:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 exists Q3, bisim_context_t
              (par (repl (repl (act (dn a) Q1)))
                 (par (repl (act (dn a) Q1)) Q1))
              (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
              Q3 /\
   bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1))) Q3 +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < witness repl (act (dn a) P).
Subgoal 1.1.1.2:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 bisim_context_t
   (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1)) /\
   bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
     (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < split.
Subgoal 1.1.1.2.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 bisim_context_t
   (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < unfold.
Subgoal 1.1.1.2.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 exists P2 Q2, bisim_t
                 (par (repl (repl (act (dn a) Q1)))
                    (par (repl (act (dn a) Q1)) Q1))
                 P2 (par (repl (act (dn a) Q1)) Q1) Q2 /\
   context_t P2 (repl (repl (act (dn a) Q1))) Q2 (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < witness par (repl (repl (act (dn a) P))) P.
Subgoal 1.1.1.2.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 exists Q2, bisim_t
              (par (repl (repl (act (dn a) Q1)))
                 (par (repl (act (dn a) Q1)) Q1))
              (par (repl (repl (act (dn a) Q1))) Q1)
              (par (repl (act (dn a) Q1)) Q1) Q2 /\
   context_t (par (repl (repl (act (dn a) Q1))) Q1)
     (repl (repl (act (dn a) Q1))) Q2 (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < witness par (repl (act (dn a) P)) P.
Subgoal 1.1.1.2.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 bisim_t (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (par (repl (repl (act (dn a) Q1))) Q1) (par (repl (act (dn a) Q1)) Q1)
   (par (repl (act (dn a) Q1)) Q1) /\
   context_t (par (repl (repl (act (dn a) Q1))) Q1)
     (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
     (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < split.
Subgoal 1.1.1.2.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 bisim_t (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (par (repl (repl (act (dn a) Q1))) Q1) (par (repl (act (dn a) Q1)) Q1)
   (par (repl (act (dn a) Q1)) Q1)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q1))) Q1)
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < unfold.
Subgoal 1.1.1.2.1.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (par (repl (repl (act (dn a) Q1))) Q1)

Subgoal 1.1.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q1)) Q1)
   (par (repl (act (dn a) Q1)) Q1)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q1))) Q1)
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < apply bisim_repl_absorb with P = repl (act (dn a) P).
Subgoal 1.1.1.2.1.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
H4 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1)))
       (repl (repl (act (dn a) Q1)))
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (par (repl (repl (act (dn a) Q1))) Q1)

Subgoal 1.1.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q1)) Q1)
   (par (repl (act (dn a) Q1)) Q1)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q1))) Q1)
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < apply bisim_par_subst_1 to H4 with R = P.
Subgoal 1.1.1.2.1.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
H4 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1)))
       (repl (repl (act (dn a) Q1)))
H5 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1))) Q1)
       (par (repl (repl (act (dn a) Q1))) Q1)
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (par (repl (repl (act (dn a) Q1))) Q1)

Subgoal 1.1.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q1)) Q1)
   (par (repl (act (dn a) Q1)) Q1)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q1))) Q1)
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < apply bisim_par_assoc with P = repl (repl (act (dn a) P)), Q = repl (act (dn a) P), R = P.
Subgoal 1.1.1.2.1.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
H4 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1)))
       (repl (repl (act (dn a) Q1)))
H5 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1))) Q1)
       (par (repl (repl (act (dn a) Q1))) Q1)
H6 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1))) Q1)
       (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (par (repl (repl (act (dn a) Q1))) Q1)

Subgoal 1.1.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q1)) Q1)
   (par (repl (act (dn a) Q1)) Q1)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q1))) Q1)
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < apply bisim_symmetric_ to H6.
Subgoal 1.1.1.2.1.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
H4 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1)))
       (repl (repl (act (dn a) Q1)))
H5 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1))) Q1)
       (par (repl (repl (act (dn a) Q1))) Q1)
H6 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1))) Q1)
       (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
H7 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
       (par (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1))) Q1)
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (par (repl (repl (act (dn a) Q1))) Q1)

Subgoal 1.1.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q1)) Q1)
   (par (repl (act (dn a) Q1)) Q1)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q1))) Q1)
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < apply bisim_transitive_ to H7 H5.
Subgoal 1.1.1.2.1.1.1:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
H4 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1)))
       (repl (repl (act (dn a) Q1)))
H5 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1))) Q1)
       (par (repl (repl (act (dn a) Q1))) Q1)
H6 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1))) Q1)
       (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
H7 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
       (par (par (repl (repl (act (dn a) Q1))) (repl (act (dn a) Q1))) Q1)
H8 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
       (par (repl (repl (act (dn a) Q1))) Q1)
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1))
   (par (repl (repl (act (dn a) Q1))) Q1)

Subgoal 1.1.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q1)) Q1)
   (par (repl (act (dn a) Q1)) Q1)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q1))) Q1)
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < search.
Subgoal 1.1.1.2.1.1.2:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 bisim_up_to refl_t (par (repl (act (dn a) Q1)) Q1)
   (par (repl (act (dn a) Q1)) Q1)

Subgoal 1.1.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q1))) Q1)
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < backchain bisim_reflexive_.
Subgoal 1.1.1.2.1.2:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 context_t (par (repl (repl (act (dn a) Q1))) Q1)
   (repl (repl (act (dn a) Q1))) (par (repl (act (dn a) Q1)) Q1)
   (repl (act (dn a) Q1))

Subgoal 1.1.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < search.
Subgoal 1.1.1.2.2:

Variables: Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
       (repl (act (dn a) Q1)) +
============================
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q1)))
   (repl (act (dn a) Q1)) +

Subgoal 1.1.2 is:
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < backchain CH.
Subgoal 1.1.2:

Variables: P X R Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
H3 : one (act (dn a) P) (up X) Q1
H4 : one (act (dn a) P) (dn X) R
============================
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (repl (act (dn a) P)) (par Q1 R)))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 1.2 is:
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < case H3.
Subgoal 1.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
H2 : one (repl (act (dn a) P)) (up X) Q
H3 : one (repl (act (dn a) P)) (dn X) R
============================
 exists Q1, one (repl (act (dn a) P)) tau Q1 /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) P))) (par Q R)) P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < case H2.
Subgoal 1.2:

Variables: P X R Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
H3 : one (repl (act (dn a) P)) (dn X) R
H4 : one (act (dn a) P) (up X) Q1
============================
 exists Q2, one (repl (act (dn a) P)) tau Q2 /\
   (exists P2 Q3, bisim_context_t
                    (par (repl (repl (act (dn a) P)))
                       (par (par (repl (act (dn a) P)) Q1) R))
                    P2 Q2 Q3 /\
        bisim_up_to bisim_context_t P2 Q3 +)

Subgoal 2 is:
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < case H4.
Subgoal 2:

Variables: P
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
============================
 forall A Q1, one (repl (act (dn a) P)) A Q1 ->
   (exists P1, one (repl (repl (act (dn a) P))) A P1 /\
        (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
             bisim_up_to bisim_context_t P2 Q2 +))

ex_bang_bang_ctx < intros.
Subgoal 2:

Variables: P A Q1
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
H1 : one (repl (act (dn a) P)) A Q1
============================
 exists P1, one (repl (repl (act (dn a) P))) A P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 Q1 Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < case H1.
Subgoal 2.1:

Variables: P A Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
H2 : one (act (dn a) P) A Q
============================
 exists P1, one (repl (repl (act (dn a) P))) A P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) Q) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < case H2.
Subgoal 2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 exists P1, one (repl (repl (act (dn a) Q))) (dn a) P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) Q)) Q) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < witness par (repl (repl (act (dn a) P))) (par (repl (act (dn a) P)) P).
Subgoal 2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 one (repl (repl (act (dn a) Q))) (dn a)
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q)) /\
   (exists P2 Q2, bisim_context_t
                    (par (repl (repl (act (dn a) Q)))
                       (par (repl (act (dn a) Q)) Q))
                    P2 (par (repl (act (dn a) Q)) Q) Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < split.
Subgoal 2.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 one (repl (repl (act (dn a) Q))) (dn a)
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))

Subgoal 2.1.2 is:
 exists P2 Q2, bisim_context_t
                 (par (repl (repl (act (dn a) Q)))
                    (par (repl (act (dn a) Q)) Q))
                 P2 (par (repl (act (dn a) Q)) Q) Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < search.
Subgoal 2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 exists P2 Q2, bisim_context_t
                 (par (repl (repl (act (dn a) Q)))
                    (par (repl (act (dn a) Q)) Q))
                 P2 (par (repl (act (dn a) Q)) Q) Q2 /\
   bisim_up_to bisim_context_t P2 Q2 +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < witness repl (repl (act (dn a) P)).
Subgoal 2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 exists Q2, bisim_context_t
              (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
              (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q) Q2 /\
   bisim_up_to bisim_context_t (repl (repl (act (dn a) Q))) Q2 +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < witness repl (act (dn a) P).
Subgoal 2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 bisim_context_t
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q)
   (repl (act (dn a) Q)) /\
   bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
     (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < split.
Subgoal 2.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 bisim_context_t
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q)
   (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < unfold.
Subgoal 2.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 exists P2 Q2, bisim_t
                 (par (repl (repl (act (dn a) Q)))
                    (par (repl (act (dn a) Q)) Q))
                 P2 (par (repl (act (dn a) Q)) Q) Q2 /\
   context_t P2 (repl (repl (act (dn a) Q))) Q2 (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < witness par (repl (repl (act (dn a) P))) P.
Subgoal 2.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 exists Q2, bisim_t
              (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
              (par (repl (repl (act (dn a) Q))) Q)
              (par (repl (act (dn a) Q)) Q) Q2 /\
   context_t (par (repl (repl (act (dn a) Q))) Q)
     (repl (repl (act (dn a) Q))) Q2 (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < witness par (repl (act (dn a) P)) P.
Subgoal 2.1.2.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 bisim_t (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (par (repl (repl (act (dn a) Q))) Q) (par (repl (act (dn a) Q)) Q)
   (par (repl (act (dn a) Q)) Q) /\
   context_t (par (repl (repl (act (dn a) Q))) Q)
     (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q)
     (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < split.
Subgoal 2.1.2.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 bisim_t (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (par (repl (repl (act (dn a) Q))) Q) (par (repl (act (dn a) Q)) Q)
   (par (repl (act (dn a) Q)) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q))) Q) (repl (repl (act (dn a) Q)))
   (par (repl (act (dn a) Q)) Q) (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < unfold.
Subgoal 2.1.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (par (repl (repl (act (dn a) Q))) Q)

Subgoal 2.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q)) Q)
   (par (repl (act (dn a) Q)) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q))) Q) (repl (repl (act (dn a) Q)))
   (par (repl (act (dn a) Q)) Q) (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < apply bisim_repl_absorb with P = repl (act (dn a) P).
Subgoal 2.1.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
H3 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q)))
       (repl (repl (act (dn a) Q)))
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (par (repl (repl (act (dn a) Q))) Q)

Subgoal 2.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q)) Q)
   (par (repl (act (dn a) Q)) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q))) Q) (repl (repl (act (dn a) Q)))
   (par (repl (act (dn a) Q)) Q) (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < apply bisim_par_subst_1 to H3 with R = P.
Subgoal 2.1.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
H3 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q)))
       (repl (repl (act (dn a) Q)))
H4 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q))) Q)
       (par (repl (repl (act (dn a) Q))) Q)
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (par (repl (repl (act (dn a) Q))) Q)

Subgoal 2.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q)) Q)
   (par (repl (act (dn a) Q)) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q))) Q) (repl (repl (act (dn a) Q)))
   (par (repl (act (dn a) Q)) Q) (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < apply bisim_par_assoc with P = repl (repl (act (dn a) P)), Q = repl (act (dn a) P), R = P.
Subgoal 2.1.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
H3 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q)))
       (repl (repl (act (dn a) Q)))
H4 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q))) Q)
       (par (repl (repl (act (dn a) Q))) Q)
H5 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q))) Q)
       (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (par (repl (repl (act (dn a) Q))) Q)

Subgoal 2.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q)) Q)
   (par (repl (act (dn a) Q)) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q))) Q) (repl (repl (act (dn a) Q)))
   (par (repl (act (dn a) Q)) Q) (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < apply bisim_symmetric_ to H5.
Subgoal 2.1.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
H3 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q)))
       (repl (repl (act (dn a) Q)))
H4 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q))) Q)
       (par (repl (repl (act (dn a) Q))) Q)
H5 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q))) Q)
       (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
H6 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
       (par (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q))) Q)
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (par (repl (repl (act (dn a) Q))) Q)

Subgoal 2.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q)) Q)
   (par (repl (act (dn a) Q)) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q))) Q) (repl (repl (act (dn a) Q)))
   (par (repl (act (dn a) Q)) Q) (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < apply bisim_transitive_ to H6 H4.
Subgoal 2.1.2.1.1.1:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
H3 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q)))
       (repl (repl (act (dn a) Q)))
H4 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q))) Q)
       (par (repl (repl (act (dn a) Q))) Q)
H5 : bisim_up_to refl_t
       (par (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q))) Q)
       (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
H6 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
       (par (par (repl (repl (act (dn a) Q))) (repl (act (dn a) Q))) Q)
H7 : bisim_up_to refl_t
       (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
       (par (repl (repl (act (dn a) Q))) Q)
============================
 bisim_up_to refl_t
   (par (repl (repl (act (dn a) Q))) (par (repl (act (dn a) Q)) Q))
   (par (repl (repl (act (dn a) Q))) Q)

Subgoal 2.1.2.1.1.2 is:
 bisim_up_to refl_t (par (repl (act (dn a) Q)) Q)
   (par (repl (act (dn a) Q)) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q))) Q) (repl (repl (act (dn a) Q)))
   (par (repl (act (dn a) Q)) Q) (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < search.
Subgoal 2.1.2.1.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 bisim_up_to refl_t (par (repl (act (dn a) Q)) Q)
   (par (repl (act (dn a) Q)) Q)

Subgoal 2.1.2.1.2 is:
 context_t (par (repl (repl (act (dn a) Q))) Q) (repl (repl (act (dn a) Q)))
   (par (repl (act (dn a) Q)) Q) (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < backchain bisim_reflexive_.
Subgoal 2.1.2.1.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 context_t (par (repl (repl (act (dn a) Q))) Q) (repl (repl (act (dn a) Q)))
   (par (repl (act (dn a) Q)) Q) (repl (act (dn a) Q))

Subgoal 2.1.2.2 is:
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < search.
Subgoal 2.1.2.2:

Variables: Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
       (repl (act (dn a) Q)) +
============================
 bisim_up_to bisim_context_t (repl (repl (act (dn a) Q)))
   (repl (act (dn a) Q)) +

Subgoal 2.2 is:
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < backchain CH.
Subgoal 2.2:

Variables: P X R Q
CH : bisim_up_to bisim_context_t (repl (repl (act (dn a) P)))
       (repl (act (dn a) P)) +
H2 : one (act (dn a) P) (up X) Q
H3 : one (act (dn a) P) (dn X) R
============================
 exists P1, one (repl (repl (act (dn a) P))) tau P1 /\
   (exists P2 Q2, bisim_context_t P1 P2 (par (repl (act (dn a) P)) (par Q R))
                    Q2 /\
        bisim_up_to bisim_context_t P2 Q2 +)

ex_bang_bang_ctx < case H2.
Proof completed.
Abella <