Welcome to Abella 2.0.5-dev.
Abella < Specification "processes_terms".
Reading specification "processes_terms".

Abella < Import "picalc".
Importing from "picalc".

Abella < Theorem red_ker_tensor_str_eq_left_of_par : 
forall P1 P2 Q R2, str_eq P2 P1 -> red_ker_tensor P2 Q R2 ->
  (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1).


============================
 forall P1 P2 Q R2, str_eq P2 P1 -> red_ker_tensor P2 Q R2 ->
   (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)

red_ker_tensor_str_eq_left_of_par < induction on 1.

IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
============================
 forall P1 P2 Q R2, str_eq P2 P1 @ -> red_ker_tensor P2 Q R2 ->
   (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)

red_ker_tensor_str_eq_left_of_par < intros.

Variables: P1 P2 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H1 : str_eq P2 P1 @
H2 : red_ker_tensor P2 Q R2
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H1.
Subgoal 1:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor P1 Q R2
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2:

Variables: P1 P2 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor P2 Q R2
H3 : str_ker P2 P1 *
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H3.
Subgoal 2.1:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P1 null) Q R2
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_tensor (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H2.
Subgoal 2.1:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P1 null) Q R2
H4 : (exists T, red_ker_tensor P1 Q T /\ str_eq R2 (par T null)) \/
       (exists T, red_ker_tensor null Q T /\ str_eq R2 (par P1 T))
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_tensor (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H4.
Subgoal 2.1.1:

Variables: P1 Q R2 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P1 null) Q R2
H5 : red_ker_tensor P1 Q T
H6 : str_eq R2 (par T null)
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.1.2 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_tensor (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.1.2:

Variables: P1 Q R2 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P1 null) Q R2
H5 : red_ker_tensor null Q T
H6 : str_eq R2 (par P1 T)
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_tensor (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_null_cases to H5.
Subgoal 2.2:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par null P1) Q R2
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_tensor (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H2.
Subgoal 2.2:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par null P1) Q R2
H4 : (exists T, red_ker_tensor null Q T /\ str_eq R2 (par T P1)) \/
       (exists T, red_ker_tensor P1 Q T /\ str_eq R2 (par null T))
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_tensor (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H4.
Subgoal 2.2.1:

Variables: P1 Q R2 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par null P1) Q R2
H5 : red_ker_tensor null Q T
H6 : str_eq R2 (par T P1)
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2.2 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_tensor (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_null_cases to H5.
Subgoal 2.2.2:

Variables: P1 Q R2 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par null P1) Q R2
H5 : red_ker_tensor P1 Q T
H6 : str_eq R2 (par null T)
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_tensor (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.3:

Variables: P2 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor P2 Q R2
============================
 exists R1, red_ker_tensor (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.4:

Variables: P2 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor P2 Q R2
============================
 exists R1, red_ker_tensor (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.5:

Variables: Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu x\null) Q R2
============================
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_nu_cases to H2.
Subgoal 2.5:

Variables: Q R2 S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu x\null) Q R2
H4 : red_ker_tensor null Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_tensor null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_null_cases to H4.
Subgoal 2.6:

Variables: Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor null Q R2
============================
 exists R1, red_ker_tensor (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_null_cases to H2.
Subgoal 2.7:

Variables: Q R2 P Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P Q1) Q R2
============================
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H2.
Subgoal 2.7:

Variables: Q R2 P Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P Q1) Q R2
H4 : (exists T, red_ker_tensor P Q T /\ str_eq R2 (par T Q1)) \/
       (exists T, red_ker_tensor Q1 Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H4.
Subgoal 2.7.1:

Variables: Q R2 P Q1 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P Q1) Q R2
H5 : red_ker_tensor P Q T
H6 : str_eq R2 (par T Q1)
============================
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.7.2 is:
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.7.2:

Variables: Q R2 P Q1 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P Q1) Q R2
H5 : red_ker_tensor Q1 Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_tensor (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.8:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (par P Q1) R) Q R2
============================
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H2.
Subgoal 2.8:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (par P Q1) R) Q R2
H4 : (exists T, red_ker_tensor (par P Q1) Q T /\ str_eq R2 (par T R)) \/
       (exists T, red_ker_tensor R Q T /\ str_eq R2 (par (par P Q1) T))
============================
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H4.
Subgoal 2.8.1:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (par P Q1) R) Q R2
H5 : red_ker_tensor (par P Q1) Q T
H6 : str_eq R2 (par T R)
============================
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.2 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H5.
Subgoal 2.8.1:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (par P Q1) R) Q R2
H5 : red_ker_tensor (par P Q1) Q T
H6 : str_eq R2 (par T R)
H7 : (exists T1, red_ker_tensor P Q T1 /\ str_eq T (par T1 Q1)) \/
       (exists T1, red_ker_tensor Q1 Q T1 /\ str_eq T (par P T1))
============================
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.2 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H7.
Subgoal 2.8.1.1:

Variables: Q R2 R Q1 P T T1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (par P Q1) R) Q R2
H5 : red_ker_tensor (par P Q1) Q T
H6 : str_eq R2 (par T R)
H8 : red_ker_tensor P Q T1
H9 : str_eq T (par T1 Q1)
============================
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.1.2 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.2 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.8.1.2:

Variables: Q R2 R Q1 P T T1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (par P Q1) R) Q R2
H5 : red_ker_tensor (par P Q1) Q T
H6 : str_eq R2 (par T R)
H8 : red_ker_tensor Q1 Q T1
H9 : str_eq T (par P T1)
============================
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.2 is:
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.8.2:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (par P Q1) R) Q R2
H5 : red_ker_tensor R Q T
H6 : str_eq R2 (par (par P Q1) T)
============================
 exists R1, red_ker_tensor (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.9:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (par Q1 R)) Q R2
============================
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H2.
Subgoal 2.9:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (par Q1 R)) Q R2
H4 : (exists T, red_ker_tensor P Q T /\ str_eq R2 (par T (par Q1 R))) \/
       (exists T, red_ker_tensor (par Q1 R) Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H4.
Subgoal 2.9.1:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (par Q1 R)) Q R2
H5 : red_ker_tensor P Q T
H6 : str_eq R2 (par T (par Q1 R))
============================
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.9.2 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.9.2:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (par Q1 R)) Q R2
H5 : red_ker_tensor (par Q1 R) Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H5.
Subgoal 2.9.2:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (par Q1 R)) Q R2
H5 : red_ker_tensor (par Q1 R) Q T
H6 : str_eq R2 (par P T)
H7 : (exists T1, red_ker_tensor Q1 Q T1 /\ str_eq T (par T1 R)) \/
       (exists T1, red_ker_tensor R Q T1 /\ str_eq T (par Q1 T1))
============================
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H7.
Subgoal 2.9.2.1:

Variables: Q R2 R Q1 P T T1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (par Q1 R)) Q R2
H5 : red_ker_tensor (par Q1 R) Q T
H6 : str_eq R2 (par P T)
H8 : red_ker_tensor Q1 Q T1
H9 : str_eq T (par T1 R)
============================
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.9.2.2 is:
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.9.2.2:

Variables: Q R2 R Q1 P T T1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (par Q1 R)) Q R2
H5 : red_ker_tensor (par Q1 R) Q T
H6 : str_eq R2 (par P T)
H8 : red_ker_tensor R Q T1
H9 : str_eq T (par Q1 T1)
============================
 exists R1, red_ker_tensor (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.10:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par P (Q1 x))) Q R2
============================
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_nu_cases to H2.
Subgoal 2.10:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_tensor (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H4.
Subgoal 2.10:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_tensor (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H6 : (exists T, red_ker_tensor P Q T /\ str_eq (S n1) (par T (Q1 n1))) \/
       (exists T, red_ker_tensor (Q1 n1) Q T /\ str_eq (S n1) (par P T))
============================
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H6.
Subgoal 2.10.1:

Variables: Q R2 Q1 P S T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_tensor (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_tensor P Q (T n1)
H8 : str_eq (S n1) (par (T n1) (Q1 n1))
============================
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.10.2 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_no_new_names to H7.
Subgoal 2.10.1:

Variables: Q R2 Q1 P S S1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_tensor (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_tensor P Q S1
H8 : str_eq (S n1) (par S1 (Q1 n1))
============================
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.10.2 is:
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.10.2:

Variables: Q R2 Q1 P S T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_tensor (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_tensor (Q1 n1) Q (T n1)
H8 : str_eq (S n1) (par P (T n1))
============================
 exists R1, red_ker_tensor (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.11:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par (P x) Q1)) Q R2
============================
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_nu_cases to H2.
Subgoal 2.11:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_tensor (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H4.
Subgoal 2.11:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_tensor (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
H6 : (exists T, red_ker_tensor (P n1) Q T /\ str_eq (S n1) (par T Q1)) \/
       (exists T, red_ker_tensor Q1 Q T /\ str_eq (S n1) (par (P n1) T))
============================
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H6.
Subgoal 2.11.1:

Variables: Q R2 Q1 P S T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_tensor (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_tensor (P n1) Q (T n1)
H8 : str_eq (S n1) (par (T n1) Q1)
============================
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.11.2 is:
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.11.2:

Variables: Q R2 Q1 P S T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_tensor (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_tensor Q1 Q (T n1)
H8 : str_eq (S n1) (par (P n1) (T n1))
============================
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_no_new_names to H7.
Subgoal 2.11.2:

Variables: Q R2 Q1 P S S1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_tensor (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_tensor Q1 Q S1
H8 : str_eq (S n1) (par (P n1) S1)
============================
 exists R1, red_ker_tensor (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.12:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (nu Q1)) Q R2
============================
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H2.
Subgoal 2.12:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (nu Q1)) Q R2
H4 : (exists T, red_ker_tensor P Q T /\ str_eq R2 (par T (nu Q1))) \/
       (exists T, red_ker_tensor (nu Q1) Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H4.
Subgoal 2.12.1:

Variables: Q R2 Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (nu Q1)) Q R2
H5 : red_ker_tensor P Q T
H6 : str_eq R2 (par T (nu Q1))
============================
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.12.2 is:
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.12.2:

Variables: Q R2 Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (nu Q1)) Q R2
H5 : red_ker_tensor (nu Q1) Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_nu_cases to H5.
Subgoal 2.12.2:

Variables: Q R2 Q1 P T S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P (nu Q1)) Q R2
H5 : red_ker_tensor (nu Q1) Q T
H6 : str_eq R2 (par P T)
H7 : red_ker_tensor (Q1 n1) Q (S n1)
H8 : str_eq T (nu S)
============================
 exists R1, red_ker_tensor (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.13:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (nu P) Q1) Q R2
============================
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H2.
Subgoal 2.13:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (nu P) Q1) Q R2
H4 : (exists T, red_ker_tensor (nu P) Q T /\ str_eq R2 (par T Q1)) \/
       (exists T, red_ker_tensor Q1 Q T /\ str_eq R2 (par (nu P) T))
============================
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H4.
Subgoal 2.13.1:

Variables: Q R2 Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (nu P) Q1) Q R2
H5 : red_ker_tensor (nu P) Q T
H6 : str_eq R2 (par T Q1)
============================
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.13.2 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_nu_cases to H5.
Subgoal 2.13.1:

Variables: Q R2 Q1 P T S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (nu P) Q1) Q R2
H5 : red_ker_tensor (nu P) Q T
H6 : str_eq R2 (par T Q1)
H7 : red_ker_tensor (P n1) Q (S n1)
H8 : str_eq T (nu S)
============================
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.13.2 is:
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.13.2:

Variables: Q R2 Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par (nu P) Q1) Q R2
H5 : red_ker_tensor Q1 Q T
H6 : str_eq R2 (par (nu P) T)
============================
 exists R1, red_ker_tensor (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 2.14:

Variables: Q R2 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\nu (P x))) Q R2
============================
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_nu_cases to H2.
Subgoal 2.14:

Variables: Q R2 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\nu (P x))) Q R2
H4 : red_ker_tensor (nu (P n1)) Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_nu_cases to H4.
Subgoal 2.14:

Variables: Q R2 P S S1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu (x\nu (P x))) Q R2
H4 : red_ker_tensor (nu (P n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H6 : red_ker_tensor (P n1 n2) Q (S1 n1 n2)
H7 : str_eq (S n1) (nu (S1 n1))
============================
 exists R1, red_ker_tensor (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 3:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu P) Q R2
H3 : str_eq (P n1) (Q1 n1) *
============================
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_nu_cases to H2.
Subgoal 3:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu P) Q R2
H3 : str_eq (P n1) (Q1 n1) *
H4 : red_ker_tensor (P n1) Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply IH to H3 H4.
Subgoal 3:

Variables: Q R2 Q1 P S R1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (nu P) Q R2
H3 : str_eq (P n1) (Q1 n1) *
H4 : red_ker_tensor (P n1) Q (S n1)
H5 : str_eq R2 (nu S)
H6 : red_ker_tensor (Q1 n1) Q (R1 n1)
H7 : str_eq (S n1) (R1 n1)
============================
 exists R1, red_ker_tensor (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 4:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P R) Q R2
H3 : str_eq P Q1 *
============================
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H2.
Subgoal 4:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P R) Q R2
H3 : str_eq P Q1 *
H4 : (exists T, red_ker_tensor P Q T /\ str_eq R2 (par T R)) \/
       (exists T, red_ker_tensor R Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H4.
Subgoal 4.1:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P R) Q R2
H3 : str_eq P Q1 *
H5 : red_ker_tensor P Q T
H6 : str_eq R2 (par T R)
============================
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 4.2 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply IH to H3 H5.
Subgoal 4.1:

Variables: Q R2 R Q1 P T R1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P R) Q R2
H3 : str_eq P Q1 *
H5 : red_ker_tensor P Q T
H6 : str_eq R2 (par T R)
H7 : red_ker_tensor Q1 Q R1
H8 : str_eq T R1
============================
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 4.2 is:
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 4.2:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P R) Q R2
H3 : str_eq P Q1 *
H5 : red_ker_tensor R Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_tensor (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 5:

Variables: Q R2 R P Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P Q1) Q R2
H3 : str_eq Q1 R *
============================
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply red_ker_tensor_par_cases to H2.
Subgoal 5:

Variables: Q R2 R P Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P Q1) Q R2
H3 : str_eq Q1 R *
H4 : (exists T, red_ker_tensor P Q T /\ str_eq R2 (par T Q1)) \/
       (exists T, red_ker_tensor Q1 Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < case H4.
Subgoal 5.1:

Variables: Q R2 R P Q1 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P Q1) Q R2
H3 : str_eq Q1 R *
H5 : red_ker_tensor P Q T
H6 : str_eq R2 (par T Q1)
============================
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 5.2 is:
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 5.2:

Variables: Q R2 R P Q1 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P Q1) Q R2
H3 : str_eq Q1 R *
H5 : red_ker_tensor Q1 Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply IH to H3 H5.
Subgoal 5.2:

Variables: Q R2 R P Q1 T R1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor (par P Q1) Q R2
H3 : str_eq Q1 R *
H5 : red_ker_tensor Q1 Q T
H6 : str_eq R2 (par P T)
H7 : red_ker_tensor R Q R1
H8 : str_eq T R1
============================
 exists R1, red_ker_tensor (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Subgoal 6:

Variables: P1 P2 Q R2 Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor P2 Q R2
H3 : str_eq P2 Q1 *
H4 : str_eq Q1 P1 *
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply IH to H3 H2.
Subgoal 6:

Variables: P1 P2 Q R2 Q1 R1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor P2 Q R2
H3 : str_eq P2 Q1 *
H4 : str_eq Q1 P1 *
H5 : red_ker_tensor Q1 Q R1
H6 : str_eq R2 R1
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < apply IH to H4 H5.
Subgoal 6:

Variables: P1 P2 Q R2 Q1 R1 R3
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_tensor P2 Q R2 ->
       (exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_tensor P2 Q R2
H3 : str_eq P2 Q1 *
H4 : str_eq Q1 P1 *
H5 : red_ker_tensor Q1 Q R1
H6 : str_eq R2 R1
H7 : red_ker_tensor P1 Q R3
H8 : str_eq R1 R3
============================
 exists R1, red_ker_tensor P1 Q R1 /\ str_eq R2 R1

red_ker_tensor_str_eq_left_of_par < search.
Proof completed.
Abella < Theorem red_str_eq_delay_tensor : 
forall P1 P2 Q2, str_eq P2 P1 -> red_tensor P2 Q2 ->
  (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1).


============================
 forall P1 P2 Q2, str_eq P2 P1 -> red_tensor P2 Q2 ->
   (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)

red_str_eq_delay_tensor < induction on 1.

IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
============================
 forall P1 P2 Q2, str_eq P2 P1 @ -> red_tensor P2 Q2 ->
   (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)

red_str_eq_delay_tensor < intros.

Variables: P1 P2 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H1 : str_eq P2 P1 @
H2 : red_tensor P2 Q2
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H1.
Subgoal 1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor P1 Q2
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2:

Variables: P1 P2 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor P2 Q2
H3 : str_ker P2 P1 *
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H3.
Subgoal 2.1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (par P1 null) Q2
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.2 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.1.1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P1 null Q2
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.1.2 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq (par P4 null) Q1

Subgoal 2.1.3 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq (par P1 Q3) Q1

Subgoal 2.2 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_sym to H4.
Subgoal 2.1.1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P1 null Q2
H5 : red_ker_tensor null P1 Q2
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.1.2 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq (par P4 null) Q1

Subgoal 2.1.3 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq (par P1 Q3) Q1

Subgoal 2.2 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_null_cases to H5.
Subgoal 2.1.2:

Variables: P1 P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor P1 P4
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq (par P4 null) Q1

Subgoal 2.1.3 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq (par P1 Q3) Q1

Subgoal 2.2 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.1.3:

Variables: P1 Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor null Q3
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq (par P1 Q3) Q1

Subgoal 2.2 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.2:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (par null P1) Q2
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.2.1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor null P1 Q2
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.2.2 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq (par P4 P1) Q1

Subgoal 2.2.3 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq (par null Q3) Q1

Subgoal 2.3 is:
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_null_cases to H4.
Subgoal 2.2.2:

Variables: P1 P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor null P4
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq (par P4 P1) Q1

Subgoal 2.2.3 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq (par null Q3) Q1

Subgoal 2.3 is:
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.2.3:

Variables: P1 Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor P1 Q3
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq (par null Q3) Q1

Subgoal 2.3 is:
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.3:

Variables: P2 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor P2 Q2
============================
 exists Q1, red_tensor (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.4:

Variables: P2 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor P2 Q2
============================
 exists Q1, red_tensor (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.5:

Variables: Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (nu x\null) Q2
============================
 exists Q1, red_tensor null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.5:

Variables: P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor null (P4 n1)
============================
 exists Q1, red_tensor null Q1 /\ str_eq (nu P4) Q1

Subgoal 2.6 is:
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.6:

Variables: Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor null Q2
============================
 exists Q1, red_tensor (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.7:

Variables: Q2 P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (par P Q) Q2
============================
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.7.1:

Variables: Q2 P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P Q Q2
============================
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.7.2 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.7.3 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_sym to H4.
Subgoal 2.7.1:

Variables: Q2 P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P Q Q2
H5 : red_ker_tensor Q P Q2
============================
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.7.2 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.7.3 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.7.2:

Variables: P Q P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor P P4
============================
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.7.3 is:
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.7.3:

Variables: P Q Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor Q Q3
============================
 exists Q1, red_tensor (par Q P) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.8 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.8:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (par (par P Q) R) Q2
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.8.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor (par P Q) R Q2
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.2 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_cases to H4.
Subgoal 2.8.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor (par P Q) R Q2
H5 : (exists T, red_ker_tensor P R T /\ str_eq Q2 (par T Q)) \/
       (exists T, red_ker_tensor Q R T /\ str_eq Q2 (par P T))
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.2 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H5.
Subgoal 2.8.1.1:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor (par P Q) R Q2
H6 : red_ker_tensor P R T
H7 : str_eq Q2 (par T Q)
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.1.2 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.2 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.8.1.2:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor (par P Q) R Q2
H6 : red_ker_tensor Q R T
H7 : str_eq Q2 (par P T)
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.2 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.8.2:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor (par P Q) P4
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.8.2.1:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_ker_tensor P Q P4
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.2.2 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P5 Q) R) Q1

Subgoal 2.8.2.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q3) R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.8.2.2:

Variables: R Q P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor P P5
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P5 Q) R) Q1

Subgoal 2.8.2.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q3) R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.8.2.3:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor Q Q3
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q3) R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.8.3:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor R Q3
============================
 exists Q1, red_tensor (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.9:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (par P (par Q R)) Q2
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.9.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (par Q R) Q2
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_sym to H4.
Subgoal 2.9.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (par Q R) Q2
H5 : red_ker_tensor (par Q R) P Q2
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_cases to H5.
Subgoal 2.9.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (par Q R) Q2
H5 : red_ker_tensor (par Q R) P Q2
H6 : (exists T, red_ker_tensor Q P T /\ str_eq Q2 (par T R)) \/
       (exists T, red_ker_tensor R P T /\ str_eq Q2 (par Q T))
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H6.
Subgoal 2.9.1.1:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (par Q R) Q2
H5 : red_ker_tensor (par Q R) P Q2
H7 : red_ker_tensor Q P T
H8 : str_eq Q2 (par T R)
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.1.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_sym to H7.
Subgoal 2.9.1.1:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (par Q R) Q2
H5 : red_ker_tensor (par Q R) P Q2
H7 : red_ker_tensor Q P T
H8 : str_eq Q2 (par T R)
H9 : red_ker_tensor P Q T
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.1.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.9.1.2:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (par Q R) Q2
H5 : red_ker_tensor (par Q R) P Q2
H7 : red_ker_tensor R P T
H8 : str_eq Q2 (par Q T)
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_sym to H7.
Subgoal 2.9.1.2:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (par Q R) Q2
H5 : red_ker_tensor (par Q R) P Q2
H7 : red_ker_tensor R P T
H8 : str_eq Q2 (par Q T)
H9 : red_ker_tensor P R T
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.9.2:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor P P4
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.9.3:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor (par Q R) Q3
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.9.3.1:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_ker_tensor Q R Q3
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.9.3.2 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P (par P4 R)) Q1

Subgoal 2.9.3.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P (par Q Q4)) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.9.3.2:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor Q P4
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P (par P4 R)) Q1

Subgoal 2.9.3.3 is:
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P (par Q Q4)) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.9.3.3:

Variables: R Q P Q4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor R Q4
============================
 exists Q1, red_tensor (par (par P Q) R) Q1 /\ str_eq (par P (par Q Q4)) Q1

Subgoal 2.10 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.10:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (nu (x\par P (Q x))) Q2
============================
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.10:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor (par P (Q n1)) (P4 n1)
============================
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq (nu P4) Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.10.1:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_ker_tensor P (Q n1) (P4 n1)
============================
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq (nu P4) Q1

Subgoal 2.10.2 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\
   str_eq (nu (z1\par (P5 z1) (Q z1))) Q1

Subgoal 2.10.3 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq (nu (z1\par P (Q3 z1))) Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.10.2:

Variables: Q P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor P (P5 n1)
============================
 exists Q1, red_tensor (par P (nu Q)) Q1 /\
   str_eq (nu (z1\par (P5 z1) (Q z1))) Q1

Subgoal 2.10.3 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq (nu (z1\par P (Q3 z1))) Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_tensor_no_new_names to H5.
Subgoal 2.10.2:

Variables: Q P R
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor P R
============================
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq (nu (z1\par R (Q z1))) Q1

Subgoal 2.10.3 is:
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq (nu (z1\par P (Q3 z1))) Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.10.3:

Variables: Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor (Q n1) (Q3 n1)
============================
 exists Q1, red_tensor (par P (nu Q)) Q1 /\ str_eq (nu (z1\par P (Q3 z1))) Q1

Subgoal 2.11 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.11:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (nu (x\par (P x) Q)) Q2
============================
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.11:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor (par (P n1) Q) (P4 n1)
============================
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq (nu P4) Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.11.1:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_ker_tensor (P n1) Q (P4 n1)
============================
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq (nu P4) Q1

Subgoal 2.11.2 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq (nu (z1\par (P5 z1) Q)) Q1

Subgoal 2.11.3 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\
   str_eq (nu (z1\par (P z1) (Q3 z1))) Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.11.2:

Variables: Q P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor (P n1) (P5 n1)
============================
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq (nu (z1\par (P5 z1) Q)) Q1

Subgoal 2.11.3 is:
 exists Q1, red_tensor (par (nu P) Q) Q1 /\
   str_eq (nu (z1\par (P z1) (Q3 z1))) Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.11.3:

Variables: Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor Q (Q3 n1)
============================
 exists Q1, red_tensor (par (nu P) Q) Q1 /\
   str_eq (nu (z1\par (P z1) (Q3 z1))) Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_tensor_no_new_names to H5.
Subgoal 2.11.3:

Variables: Q P R
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor Q R
============================
 exists Q1, red_tensor (par (nu P) Q) Q1 /\ str_eq (nu (z1\par (P z1) R)) Q1

Subgoal 2.12 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.12:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (par P (nu Q)) Q2
============================
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.12.1:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (nu Q) Q2
============================
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.12.2 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_sym to H4.
Subgoal 2.12.1:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (nu Q) Q2
H5 : red_ker_tensor (nu Q) P Q2
============================
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.12.2 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_nu_cases to H5.
Subgoal 2.12.1:

Variables: Q2 Q P S
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (nu Q) Q2
H5 : red_ker_tensor (nu Q) P Q2
H6 : red_ker_tensor (Q n1) P (S n1)
H7 : str_eq Q2 (nu S)
============================
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.12.2 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_sym to H6.
Subgoal 2.12.1:

Variables: Q2 Q P S
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor P (nu Q) Q2
H5 : red_ker_tensor (nu Q) P Q2
H6 : red_ker_tensor (Q n1) P (S n1)
H7 : str_eq Q2 (nu S)
H8 : red_ker_tensor P (Q n1) (S n1)
============================
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.12.2 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.12.2:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor P P4
============================
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.12.3:

Variables: Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor (nu Q) Q3
============================
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.12.3:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor (Q n1) (P4 n1)
============================
 exists Q1, red_tensor (nu (x\par P (Q x))) Q1 /\ str_eq (par P (nu P4)) Q1

Subgoal 2.13 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.13:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (par (nu P) Q) Q2
============================
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.13.1:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor (nu P) Q Q2
============================
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.13.2 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.13.3 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_nu_cases to H4.
Subgoal 2.13.1:

Variables: Q2 Q P S
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_tensor (nu P) Q Q2
H5 : red_ker_tensor (P n1) Q (S n1)
H6 : str_eq Q2 (nu S)
============================
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.13.2 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.13.3 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.13.2:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor (nu P) P4
============================
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.13.3 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.13.2:

Variables: Q P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor (P n1) (P5 n1)
============================
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P5) Q) Q1

Subgoal 2.13.3 is:
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.13.3:

Variables: Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor Q Q3
============================
 exists Q1, red_tensor (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 2.14:

Variables: Q2 P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (nu (x\nu (P x))) Q2
============================
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 2.14:

Variables: P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H4 : red_tensor (nu (P n1)) (P4 n1)
============================
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\ str_eq (nu P4) Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H4.
Subgoal 2.14:

Variables: P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H5 : red_tensor (P n1 n2) (P5 n1 n2)
============================
 exists Q1, red_tensor (nu (y\nu (x\P x y))) Q1 /\
   str_eq (nu (z1\nu (P5 z1))) Q1

Subgoal 3 is:
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 3:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (nu P) Q2
H3 : str_eq (P n1) (Q n1) *
============================
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 3:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq (P n1) (Q n1) *
H4 : red_tensor (P n1) (P4 n1)
============================
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq (nu P4) Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply IH to H3 H4.
Subgoal 3:

Variables: Q P P4 Q1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq (P n1) (Q n1) *
H4 : red_tensor (P n1) (P4 n1)
H5 : red_tensor (Q n1) (Q1 n1)
H6 : str_eq (P4 n1) (Q1 n1)
============================
 exists Q1, red_tensor (nu Q) Q1 /\ str_eq (nu P4) Q1

Subgoal 4 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 4:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (par P R) Q2
H3 : str_eq P Q *
============================
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 4.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_ker_tensor P R Q2
============================
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 4.2 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq (par P4 R) Q1

Subgoal 4.3 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_str_eq_left_of_par to H3 H4.
Subgoal 4.1:

Variables: Q2 R Q P R1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_ker_tensor P R Q2
H5 : red_ker_tensor Q R R1
H6 : str_eq Q2 R1
============================
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 4.2 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq (par P4 R) Q1

Subgoal 4.3 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 4.2:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_tensor P P4
============================
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq (par P4 R) Q1

Subgoal 4.3 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply IH to H3 H4.
Subgoal 4.2:

Variables: R Q P P4 Q1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_tensor P P4
H5 : red_tensor Q Q1
H6 : str_eq P4 Q1
============================
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq (par P4 R) Q1

Subgoal 4.3 is:
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 4.3:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_tensor R Q3
============================
 exists Q1, red_tensor (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 5:

Variables: Q2 R P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor (par P Q) Q2
H3 : str_eq Q R *
============================
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < case H2.
Subgoal 5.1:

Variables: Q2 R P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_ker_tensor P Q Q2
============================
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 5.2 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_sym to H4.
Subgoal 5.1:

Variables: Q2 R P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_ker_tensor P Q Q2
H5 : red_ker_tensor Q P Q2
============================
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 5.2 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_str_eq_left_of_par to H3 H5.
Subgoal 5.1:

Variables: Q2 R P Q R1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_ker_tensor P Q Q2
H5 : red_ker_tensor Q P Q2
H6 : red_ker_tensor R P R1
H7 : str_eq Q2 R1
============================
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 5.2 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply red_ker_tensor_par_sym to H6.
Subgoal 5.1:

Variables: Q2 R P Q R1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_ker_tensor P Q Q2
H5 : red_ker_tensor Q P Q2
H6 : red_ker_tensor R P R1
H7 : str_eq Q2 R1
H8 : red_ker_tensor P R R1
============================
 exists Q1, red_tensor (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 5.2 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 5.2:

Variables: R P Q P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_tensor P P4
============================
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 5.3:

Variables: R P Q Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_tensor Q Q3
============================
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply IH to H3 H4.
Subgoal 5.3:

Variables: R P Q Q3 Q1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_tensor Q Q3
H5 : red_tensor R Q1
H6 : str_eq Q3 Q1
============================
 exists Q1, red_tensor (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Subgoal 6:

Variables: P1 P2 Q2 Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor P2 Q2
H3 : str_eq P2 Q *
H4 : str_eq Q P1 *
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply IH to H3 H2.
Subgoal 6:

Variables: P1 P2 Q2 Q Q1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor P2 Q2
H3 : str_eq P2 Q *
H4 : str_eq Q P1 *
H5 : red_tensor Q Q1
H6 : str_eq Q2 Q1
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < apply IH to H4 H5.
Subgoal 6:

Variables: P1 P2 Q2 Q Q1 Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_tensor P2 Q2 ->
       (exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1)
H2 : red_tensor P2 Q2
H3 : str_eq P2 Q *
H4 : str_eq Q P1 *
H5 : red_tensor Q Q1
H6 : str_eq Q2 Q1
H7 : red_tensor P1 Q3
H8 : str_eq Q1 Q3
============================
 exists Q1, red_tensor P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_tensor < search.
Proof completed.
Abella < Theorem red_ker_exp_str_eq_left_of_par : 
forall P1 P2 Q R2, str_eq P2 P1 -> red_ker_exp P2 Q R2 ->
  (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1).


============================
 forall P1 P2 Q R2, str_eq P2 P1 -> red_ker_exp P2 Q R2 ->
   (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)

red_ker_exp_str_eq_left_of_par < induction on 1.

IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
============================
 forall P1 P2 Q R2, str_eq P2 P1 @ -> red_ker_exp P2 Q R2 ->
   (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)

red_ker_exp_str_eq_left_of_par < intros.

Variables: P1 P2 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H1 : str_eq P2 P1 @
H2 : red_ker_exp P2 Q R2
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H1.
Subgoal 1:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp P1 Q R2
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2:

Variables: P1 P2 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp P2 Q R2
H3 : str_ker P2 P1 *
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H3.
Subgoal 2.1:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P1 null) Q R2
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_exp (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H2.
Subgoal 2.1:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P1 null) Q R2
H4 : (exists T, red_ker_exp P1 Q T /\ str_eq R2 (par T null)) \/
       (exists T, red_ker_exp null Q T /\ str_eq R2 (par P1 T))
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_exp (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H4.
Subgoal 2.1.1:

Variables: P1 Q R2 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P1 null) Q R2
H5 : red_ker_exp P1 Q T
H6 : str_eq R2 (par T null)
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.1.2 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_exp (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.1.2:

Variables: P1 Q R2 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P1 null) Q R2
H5 : red_ker_exp null Q T
H6 : str_eq R2 (par P1 T)
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_exp (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_null_cases to H5.
Subgoal 2.2:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par null P1) Q R2
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_exp (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H2.
Subgoal 2.2:

Variables: P1 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par null P1) Q R2
H4 : (exists T, red_ker_exp null Q T /\ str_eq R2 (par T P1)) \/
       (exists T, red_ker_exp P1 Q T /\ str_eq R2 (par null T))
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_exp (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H4.
Subgoal 2.2.1:

Variables: P1 Q R2 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par null P1) Q R2
H5 : red_ker_exp null Q T
H6 : str_eq R2 (par T P1)
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.2.2 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_exp (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_null_cases to H5.
Subgoal 2.2.2:

Variables: P1 Q R2 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par null P1) Q R2
H5 : red_ker_exp P1 Q T
H6 : str_eq R2 (par null T)
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

Subgoal 2.3 is:
 exists R1, red_ker_exp (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.3:

Variables: P2 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp P2 Q R2
============================
 exists R1, red_ker_exp (par P2 null) Q R1 /\ str_eq R2 R1

Subgoal 2.4 is:
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.4:

Variables: P2 Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp P2 Q R2
============================
 exists R1, red_ker_exp (par null P2) Q R1 /\ str_eq R2 R1

Subgoal 2.5 is:
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.5:

Variables: Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu x\null) Q R2
============================
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_nu_cases to H2.
Subgoal 2.5:

Variables: Q R2 S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu x\null) Q R2
H4 : red_ker_exp null Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_exp null Q R1 /\ str_eq R2 R1

Subgoal 2.6 is:
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_null_cases to H4.
Subgoal 2.6:

Variables: Q R2
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp null Q R2
============================
 exists R1, red_ker_exp (nu x\null) Q R1 /\ str_eq R2 R1

Subgoal 2.7 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_null_cases to H2.
Subgoal 2.7:

Variables: Q R2 P Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P Q1) Q R2
============================
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H2.
Subgoal 2.7:

Variables: Q R2 P Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P Q1) Q R2
H4 : (exists T, red_ker_exp P Q T /\ str_eq R2 (par T Q1)) \/
       (exists T, red_ker_exp Q1 Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H4.
Subgoal 2.7.1:

Variables: Q R2 P Q1 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P Q1) Q R2
H5 : red_ker_exp P Q T
H6 : str_eq R2 (par T Q1)
============================
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.7.2 is:
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.7.2:

Variables: Q R2 P Q1 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P Q1) Q R2
H5 : red_ker_exp Q1 Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_exp (par Q1 P) Q R1 /\ str_eq R2 R1

Subgoal 2.8 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.8:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (par P Q1) R) Q R2
============================
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H2.
Subgoal 2.8:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (par P Q1) R) Q R2
H4 : (exists T, red_ker_exp (par P Q1) Q T /\ str_eq R2 (par T R)) \/
       (exists T, red_ker_exp R Q T /\ str_eq R2 (par (par P Q1) T))
============================
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H4.
Subgoal 2.8.1:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (par P Q1) R) Q R2
H5 : red_ker_exp (par P Q1) Q T
H6 : str_eq R2 (par T R)
============================
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.2 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H5.
Subgoal 2.8.1:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (par P Q1) R) Q R2
H5 : red_ker_exp (par P Q1) Q T
H6 : str_eq R2 (par T R)
H7 : (exists T1, red_ker_exp P Q T1 /\ str_eq T (par T1 Q1)) \/
       (exists T1, red_ker_exp Q1 Q T1 /\ str_eq T (par P T1))
============================
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.2 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H7.
Subgoal 2.8.1.1:

Variables: Q R2 R Q1 P T T1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (par P Q1) R) Q R2
H5 : red_ker_exp (par P Q1) Q T
H6 : str_eq R2 (par T R)
H8 : red_ker_exp P Q T1
H9 : str_eq T (par T1 Q1)
============================
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.1.2 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.2 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.8.1.2:

Variables: Q R2 R Q1 P T T1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (par P Q1) R) Q R2
H5 : red_ker_exp (par P Q1) Q T
H6 : str_eq R2 (par T R)
H8 : red_ker_exp Q1 Q T1
H9 : str_eq T (par P T1)
============================
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.8.2 is:
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.8.2:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (par P Q1) R) Q R2
H5 : red_ker_exp R Q T
H6 : str_eq R2 (par (par P Q1) T)
============================
 exists R1, red_ker_exp (par P (par Q1 R)) Q R1 /\ str_eq R2 R1

Subgoal 2.9 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.9:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (par Q1 R)) Q R2
============================
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H2.
Subgoal 2.9:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (par Q1 R)) Q R2
H4 : (exists T, red_ker_exp P Q T /\ str_eq R2 (par T (par Q1 R))) \/
       (exists T, red_ker_exp (par Q1 R) Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H4.
Subgoal 2.9.1:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (par Q1 R)) Q R2
H5 : red_ker_exp P Q T
H6 : str_eq R2 (par T (par Q1 R))
============================
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.9.2 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.9.2:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (par Q1 R)) Q R2
H5 : red_ker_exp (par Q1 R) Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H5.
Subgoal 2.9.2:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (par Q1 R)) Q R2
H5 : red_ker_exp (par Q1 R) Q T
H6 : str_eq R2 (par P T)
H7 : (exists T1, red_ker_exp Q1 Q T1 /\ str_eq T (par T1 R)) \/
       (exists T1, red_ker_exp R Q T1 /\ str_eq T (par Q1 T1))
============================
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H7.
Subgoal 2.9.2.1:

Variables: Q R2 R Q1 P T T1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (par Q1 R)) Q R2
H5 : red_ker_exp (par Q1 R) Q T
H6 : str_eq R2 (par P T)
H8 : red_ker_exp Q1 Q T1
H9 : str_eq T (par T1 R)
============================
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.9.2.2 is:
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.9.2.2:

Variables: Q R2 R Q1 P T T1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (par Q1 R)) Q R2
H5 : red_ker_exp (par Q1 R) Q T
H6 : str_eq R2 (par P T)
H8 : red_ker_exp R Q T1
H9 : str_eq T (par Q1 T1)
============================
 exists R1, red_ker_exp (par (par P Q1) R) Q R1 /\ str_eq R2 R1

Subgoal 2.10 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.10:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par P (Q1 x))) Q R2
============================
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_nu_cases to H2.
Subgoal 2.10:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_exp (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H4.
Subgoal 2.10:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_exp (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H6 : (exists T, red_ker_exp P Q T /\ str_eq (S n1) (par T (Q1 n1))) \/
       (exists T, red_ker_exp (Q1 n1) Q T /\ str_eq (S n1) (par P T))
============================
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H6.
Subgoal 2.10.1:

Variables: Q R2 Q1 P S T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_exp (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_exp P Q (T n1)
H8 : str_eq (S n1) (par (T n1) (Q1 n1))
============================
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.10.2 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_no_new_names to H7.
Subgoal 2.10.1:

Variables: Q R2 Q1 P S S1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_exp (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_exp P Q S1
H8 : str_eq (S n1) (par S1 (Q1 n1))
============================
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.10.2 is:
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.10.2:

Variables: Q R2 Q1 P S T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par P (Q1 x))) Q R2
H4 : red_ker_exp (par P (Q1 n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_exp (Q1 n1) Q (T n1)
H8 : str_eq (S n1) (par P (T n1))
============================
 exists R1, red_ker_exp (par P (nu Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.11 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.11:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par (P x) Q1)) Q R2
============================
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_nu_cases to H2.
Subgoal 2.11:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_exp (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H4.
Subgoal 2.11:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_exp (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
H6 : (exists T, red_ker_exp (P n1) Q T /\ str_eq (S n1) (par T Q1)) \/
       (exists T, red_ker_exp Q1 Q T /\ str_eq (S n1) (par (P n1) T))
============================
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H6.
Subgoal 2.11.1:

Variables: Q R2 Q1 P S T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_exp (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_exp (P n1) Q (T n1)
H8 : str_eq (S n1) (par (T n1) Q1)
============================
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.11.2 is:
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.11.2:

Variables: Q R2 Q1 P S T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_exp (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_exp Q1 Q (T n1)
H8 : str_eq (S n1) (par (P n1) (T n1))
============================
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_no_new_names to H7.
Subgoal 2.11.2:

Variables: Q R2 Q1 P S S1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\par (P x) Q1)) Q R2
H4 : red_ker_exp (par (P n1) Q1) Q (S n1)
H5 : str_eq R2 (nu S)
H7 : red_ker_exp Q1 Q S1
H8 : str_eq (S n1) (par (P n1) S1)
============================
 exists R1, red_ker_exp (par (nu P) Q1) Q R1 /\ str_eq R2 R1

Subgoal 2.12 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.12:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (nu Q1)) Q R2
============================
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H2.
Subgoal 2.12:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (nu Q1)) Q R2
H4 : (exists T, red_ker_exp P Q T /\ str_eq R2 (par T (nu Q1))) \/
       (exists T, red_ker_exp (nu Q1) Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H4.
Subgoal 2.12.1:

Variables: Q R2 Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (nu Q1)) Q R2
H5 : red_ker_exp P Q T
H6 : str_eq R2 (par T (nu Q1))
============================
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.12.2 is:
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.12.2:

Variables: Q R2 Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (nu Q1)) Q R2
H5 : red_ker_exp (nu Q1) Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_nu_cases to H5.
Subgoal 2.12.2:

Variables: Q R2 Q1 P T S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P (nu Q1)) Q R2
H5 : red_ker_exp (nu Q1) Q T
H6 : str_eq R2 (par P T)
H7 : red_ker_exp (Q1 n1) Q (S n1)
H8 : str_eq T (nu S)
============================
 exists R1, red_ker_exp (nu (x\par P (Q1 x))) Q R1 /\ str_eq R2 R1

Subgoal 2.13 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.13:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (nu P) Q1) Q R2
============================
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H2.
Subgoal 2.13:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (nu P) Q1) Q R2
H4 : (exists T, red_ker_exp (nu P) Q T /\ str_eq R2 (par T Q1)) \/
       (exists T, red_ker_exp Q1 Q T /\ str_eq R2 (par (nu P) T))
============================
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H4.
Subgoal 2.13.1:

Variables: Q R2 Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (nu P) Q1) Q R2
H5 : red_ker_exp (nu P) Q T
H6 : str_eq R2 (par T Q1)
============================
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.13.2 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_nu_cases to H5.
Subgoal 2.13.1:

Variables: Q R2 Q1 P T S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (nu P) Q1) Q R2
H5 : red_ker_exp (nu P) Q T
H6 : str_eq R2 (par T Q1)
H7 : red_ker_exp (P n1) Q (S n1)
H8 : str_eq T (nu S)
============================
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.13.2 is:
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.13.2:

Variables: Q R2 Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par (nu P) Q1) Q R2
H5 : red_ker_exp Q1 Q T
H6 : str_eq R2 (par (nu P) T)
============================
 exists R1, red_ker_exp (nu (x\par (P x) Q1)) Q R1 /\ str_eq R2 R1

Subgoal 2.14 is:
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 2.14:

Variables: Q R2 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\nu (P x))) Q R2
============================
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_nu_cases to H2.
Subgoal 2.14:

Variables: Q R2 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\nu (P x))) Q R2
H4 : red_ker_exp (nu (P n1)) Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_nu_cases to H4.
Subgoal 2.14:

Variables: Q R2 P S S1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu (x\nu (P x))) Q R2
H4 : red_ker_exp (nu (P n1)) Q (S n1)
H5 : str_eq R2 (nu S)
H6 : red_ker_exp (P n1 n2) Q (S1 n1 n2)
H7 : str_eq (S n1) (nu (S1 n1))
============================
 exists R1, red_ker_exp (nu (y\nu (x\P x y))) Q R1 /\ str_eq R2 R1

Subgoal 3 is:
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 3:

Variables: Q R2 Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu P) Q R2
H3 : str_eq (P n1) (Q1 n1) *
============================
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_nu_cases to H2.
Subgoal 3:

Variables: Q R2 Q1 P S
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu P) Q R2
H3 : str_eq (P n1) (Q1 n1) *
H4 : red_ker_exp (P n1) Q (S n1)
H5 : str_eq R2 (nu S)
============================
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply IH to H3 H4.
Subgoal 3:

Variables: Q R2 Q1 P S R1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (nu P) Q R2
H3 : str_eq (P n1) (Q1 n1) *
H4 : red_ker_exp (P n1) Q (S n1)
H5 : str_eq R2 (nu S)
H6 : red_ker_exp (Q1 n1) Q (R1 n1)
H7 : str_eq (S n1) (R1 n1)
============================
 exists R1, red_ker_exp (nu Q1) Q R1 /\ str_eq R2 R1

Subgoal 4 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 4:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P R) Q R2
H3 : str_eq P Q1 *
============================
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H2.
Subgoal 4:

Variables: Q R2 R Q1 P
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P R) Q R2
H3 : str_eq P Q1 *
H4 : (exists T, red_ker_exp P Q T /\ str_eq R2 (par T R)) \/
       (exists T, red_ker_exp R Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H4.
Subgoal 4.1:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P R) Q R2
H3 : str_eq P Q1 *
H5 : red_ker_exp P Q T
H6 : str_eq R2 (par T R)
============================
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 4.2 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply IH to H3 H5.
Subgoal 4.1:

Variables: Q R2 R Q1 P T R1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P R) Q R2
H3 : str_eq P Q1 *
H5 : red_ker_exp P Q T
H6 : str_eq R2 (par T R)
H7 : red_ker_exp Q1 Q R1
H8 : str_eq T R1
============================
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 4.2 is:
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 4.2:

Variables: Q R2 R Q1 P T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P R) Q R2
H3 : str_eq P Q1 *
H5 : red_ker_exp R Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_exp (par Q1 R) Q R1 /\ str_eq R2 R1

Subgoal 5 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 5:

Variables: Q R2 R P Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P Q1) Q R2
H3 : str_eq Q1 R *
============================
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply red_ker_exp_par_cases to H2.
Subgoal 5:

Variables: Q R2 R P Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P Q1) Q R2
H3 : str_eq Q1 R *
H4 : (exists T, red_ker_exp P Q T /\ str_eq R2 (par T Q1)) \/
       (exists T, red_ker_exp Q1 Q T /\ str_eq R2 (par P T))
============================
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < case H4.
Subgoal 5.1:

Variables: Q R2 R P Q1 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P Q1) Q R2
H3 : str_eq Q1 R *
H5 : red_ker_exp P Q T
H6 : str_eq R2 (par T Q1)
============================
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 5.2 is:
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 5.2:

Variables: Q R2 R P Q1 T
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P Q1) Q R2
H3 : str_eq Q1 R *
H5 : red_ker_exp Q1 Q T
H6 : str_eq R2 (par P T)
============================
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply IH to H3 H5.
Subgoal 5.2:

Variables: Q R2 R P Q1 T R1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp (par P Q1) Q R2
H3 : str_eq Q1 R *
H5 : red_ker_exp Q1 Q T
H6 : str_eq R2 (par P T)
H7 : red_ker_exp R Q R1
H8 : str_eq T R1
============================
 exists R1, red_ker_exp (par P R) Q R1 /\ str_eq R2 R1

Subgoal 6 is:
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Subgoal 6:

Variables: P1 P2 Q R2 Q1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp P2 Q R2
H3 : str_eq P2 Q1 *
H4 : str_eq Q1 P1 *
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply IH to H3 H2.
Subgoal 6:

Variables: P1 P2 Q R2 Q1 R1
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp P2 Q R2
H3 : str_eq P2 Q1 *
H4 : str_eq Q1 P1 *
H5 : red_ker_exp Q1 Q R1
H6 : str_eq R2 R1
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < apply IH to H4 H5.
Subgoal 6:

Variables: P1 P2 Q R2 Q1 R1 R3
IH : forall P1 P2 Q R2, str_eq P2 P1 * -> red_ker_exp P2 Q R2 ->
       (exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1)
H2 : red_ker_exp P2 Q R2
H3 : str_eq P2 Q1 *
H4 : str_eq Q1 P1 *
H5 : red_ker_exp Q1 Q R1
H6 : str_eq R2 R1
H7 : red_ker_exp P1 Q R3
H8 : str_eq R1 R3
============================
 exists R1, red_ker_exp P1 Q R1 /\ str_eq R2 R1

red_ker_exp_str_eq_left_of_par < search.
Proof completed.
Abella < Theorem red_str_eq_delay_exp : 
forall P1 P2 Q2, str_eq P2 P1 -> red_exp P2 Q2 ->
  (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1).


============================
 forall P1 P2 Q2, str_eq P2 P1 -> red_exp P2 Q2 ->
   (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)

red_str_eq_delay_exp < induction on 1.

IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
============================
 forall P1 P2 Q2, str_eq P2 P1 @ -> red_exp P2 Q2 ->
   (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)

red_str_eq_delay_exp < intros.

Variables: P1 P2 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H1 : str_eq P2 P1 @
H2 : red_exp P2 Q2
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H1.
Subgoal 1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp P1 Q2
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2:

Variables: P1 P2 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp P2 Q2
H3 : str_ker P2 P1 *
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H3.
Subgoal 2.1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (par P1 null) Q2
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.2 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.1.1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P1 null Q2
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.1.2 is:
 exists Q1, red_exp P1 Q1 /\ str_eq (par P4 null) Q1

Subgoal 2.1.3 is:
 exists Q1, red_exp P1 Q1 /\ str_eq (par P1 Q3) Q1

Subgoal 2.2 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_sym to H4.
Subgoal 2.1.1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P1 null Q2
H5 : red_ker_exp null P1 Q2
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.1.2 is:
 exists Q1, red_exp P1 Q1 /\ str_eq (par P4 null) Q1

Subgoal 2.1.3 is:
 exists Q1, red_exp P1 Q1 /\ str_eq (par P1 Q3) Q1

Subgoal 2.2 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_null_cases to H5.
Subgoal 2.1.2:

Variables: P1 P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp P1 P4
============================
 exists Q1, red_exp P1 Q1 /\ str_eq (par P4 null) Q1

Subgoal 2.1.3 is:
 exists Q1, red_exp P1 Q1 /\ str_eq (par P1 Q3) Q1

Subgoal 2.2 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.1.3:

Variables: P1 Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp null Q3
============================
 exists Q1, red_exp P1 Q1 /\ str_eq (par P1 Q3) Q1

Subgoal 2.2 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.2:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (par null P1) Q2
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.3 is:
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.2.1:

Variables: P1 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp null P1 Q2
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

Subgoal 2.2.2 is:
 exists Q1, red_exp P1 Q1 /\ str_eq (par P4 P1) Q1

Subgoal 2.2.3 is:
 exists Q1, red_exp P1 Q1 /\ str_eq (par null Q3) Q1

Subgoal 2.3 is:
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_null_cases to H4.
Subgoal 2.2.2:

Variables: P1 P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp null P4
============================
 exists Q1, red_exp P1 Q1 /\ str_eq (par P4 P1) Q1

Subgoal 2.2.3 is:
 exists Q1, red_exp P1 Q1 /\ str_eq (par null Q3) Q1

Subgoal 2.3 is:
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.2.3:

Variables: P1 Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp P1 Q3
============================
 exists Q1, red_exp P1 Q1 /\ str_eq (par null Q3) Q1

Subgoal 2.3 is:
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.3:

Variables: P2 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp P2 Q2
============================
 exists Q1, red_exp (par P2 null) Q1 /\ str_eq Q2 Q1

Subgoal 2.4 is:
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.4:

Variables: P2 Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp P2 Q2
============================
 exists Q1, red_exp (par null P2) Q1 /\ str_eq Q2 Q1

Subgoal 2.5 is:
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.5:

Variables: Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (nu x\null) Q2
============================
 exists Q1, red_exp null Q1 /\ str_eq Q2 Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.5:

Variables: P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp null (P4 n1)
============================
 exists Q1, red_exp null Q1 /\ str_eq (nu P4) Q1

Subgoal 2.6 is:
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.6:

Variables: Q2
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp null Q2
============================
 exists Q1, red_exp (nu x\null) Q1 /\ str_eq Q2 Q1

Subgoal 2.7 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.7:

Variables: Q2 P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (par P Q) Q2
============================
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.7.1:

Variables: Q2 P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P Q Q2
============================
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.7.2 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.7.3 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_sym to H4.
Subgoal 2.7.1:

Variables: Q2 P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P Q Q2
H5 : red_ker_exp Q P Q2
============================
 exists Q1, red_exp (par Q P) Q1 /\ str_eq Q2 Q1

Subgoal 2.7.2 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.7.3 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.7.2:

Variables: P Q P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp P P4
============================
 exists Q1, red_exp (par Q P) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.7.3 is:
 exists Q1, red_exp (par Q P) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.7.3:

Variables: P Q Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp Q Q3
============================
 exists Q1, red_exp (par Q P) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.8 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.8:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (par (par P Q) R) Q2
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.8.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp (par P Q) R Q2
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.2 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_cases to H4.
Subgoal 2.8.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp (par P Q) R Q2
H5 : (exists T, red_ker_exp P R T /\ str_eq Q2 (par T Q)) \/
       (exists T, red_ker_exp Q R T /\ str_eq Q2 (par P T))
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.2 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H5.
Subgoal 2.8.1.1:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp (par P Q) R Q2
H6 : red_ker_exp P R T
H7 : str_eq Q2 (par T Q)
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.1.2 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.2 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.8.1.2:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp (par P Q) R Q2
H6 : red_ker_exp Q R T
H7 : str_eq Q2 (par P T)
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq Q2 Q1

Subgoal 2.8.2 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.8.2:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp (par P Q) P4
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.8.2.1:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_ker_exp P Q P4
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par P4 R) Q1

Subgoal 2.8.2.2 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P5 Q) R) Q1

Subgoal 2.8.2.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q3) R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.8.2.2:

Variables: R Q P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp P P5
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P5 Q) R) Q1

Subgoal 2.8.2.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q3) R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.8.2.3:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp Q Q3
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q3) R) Q1

Subgoal 2.8.3 is:
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.8.3:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp R Q3
============================
 exists Q1, red_exp (par P (par Q R)) Q1 /\ str_eq (par (par P Q) Q3) Q1

Subgoal 2.9 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.9:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (par P (par Q R)) Q2
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.9.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (par Q R) Q2
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_sym to H4.
Subgoal 2.9.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (par Q R) Q2
H5 : red_ker_exp (par Q R) P Q2
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_cases to H5.
Subgoal 2.9.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (par Q R) Q2
H5 : red_ker_exp (par Q R) P Q2
H6 : (exists T, red_ker_exp Q P T /\ str_eq Q2 (par T R)) \/
       (exists T, red_ker_exp R P T /\ str_eq Q2 (par Q T))
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H6.
Subgoal 2.9.1.1:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (par Q R) Q2
H5 : red_ker_exp (par Q R) P Q2
H7 : red_ker_exp Q P T
H8 : str_eq Q2 (par T R)
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.1.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_sym to H7.
Subgoal 2.9.1.1:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (par Q R) Q2
H5 : red_ker_exp (par Q R) P Q2
H7 : red_ker_exp Q P T
H8 : str_eq Q2 (par T R)
H9 : red_ker_exp P Q T
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.1.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.9.1.2:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (par Q R) Q2
H5 : red_ker_exp (par Q R) P Q2
H7 : red_ker_exp R P T
H8 : str_eq Q2 (par Q T)
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_sym to H7.
Subgoal 2.9.1.2:

Variables: Q2 R Q P T
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (par Q R) Q2
H5 : red_ker_exp (par Q R) P Q2
H7 : red_ker_exp R P T
H8 : str_eq Q2 (par Q T)
H9 : red_ker_exp P R T
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq Q2 Q1

Subgoal 2.9.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.9.2:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp P P4
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P4 (par Q R)) Q1

Subgoal 2.9.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.9.3:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp (par Q R) Q3
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.9.3.1:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_ker_exp Q R Q3
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.9.3.2 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P (par P4 R)) Q1

Subgoal 2.9.3.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P (par Q Q4)) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.9.3.2:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp Q P4
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P (par P4 R)) Q1

Subgoal 2.9.3.3 is:
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P (par Q Q4)) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.9.3.3:

Variables: R Q P Q4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp R Q4
============================
 exists Q1, red_exp (par (par P Q) R) Q1 /\ str_eq (par P (par Q Q4)) Q1

Subgoal 2.10 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.10:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (nu (x\par P (Q x))) Q2
============================
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.10:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp (par P (Q n1)) (P4 n1)
============================
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq (nu P4) Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.10.1:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_ker_exp P (Q n1) (P4 n1)
============================
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq (nu P4) Q1

Subgoal 2.10.2 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\
   str_eq (nu (z1\par (P5 z1) (Q z1))) Q1

Subgoal 2.10.3 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq (nu (z1\par P (Q3 z1))) Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.10.2:

Variables: Q P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp P (P5 n1)
============================
 exists Q1, red_exp (par P (nu Q)) Q1 /\
   str_eq (nu (z1\par (P5 z1) (Q z1))) Q1

Subgoal 2.10.3 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq (nu (z1\par P (Q3 z1))) Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_exp_no_new_names to H5.
Subgoal 2.10.2:

Variables: Q P R
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp P R
============================
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq (nu (z1\par R (Q z1))) Q1

Subgoal 2.10.3 is:
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq (nu (z1\par P (Q3 z1))) Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.10.3:

Variables: Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp (Q n1) (Q3 n1)
============================
 exists Q1, red_exp (par P (nu Q)) Q1 /\ str_eq (nu (z1\par P (Q3 z1))) Q1

Subgoal 2.11 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.11:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (nu (x\par (P x) Q)) Q2
============================
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq Q2 Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.11:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp (par (P n1) Q) (P4 n1)
============================
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq (nu P4) Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.11.1:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_ker_exp (P n1) Q (P4 n1)
============================
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq (nu P4) Q1

Subgoal 2.11.2 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq (nu (z1\par (P5 z1) Q)) Q1

Subgoal 2.11.3 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\
   str_eq (nu (z1\par (P z1) (Q3 z1))) Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.11.2:

Variables: Q P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp (P n1) (P5 n1)
============================
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq (nu (z1\par (P5 z1) Q)) Q1

Subgoal 2.11.3 is:
 exists Q1, red_exp (par (nu P) Q) Q1 /\
   str_eq (nu (z1\par (P z1) (Q3 z1))) Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.11.3:

Variables: Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp Q (Q3 n1)
============================
 exists Q1, red_exp (par (nu P) Q) Q1 /\
   str_eq (nu (z1\par (P z1) (Q3 z1))) Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_exp_no_new_names to H5.
Subgoal 2.11.3:

Variables: Q P R
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp Q R
============================
 exists Q1, red_exp (par (nu P) Q) Q1 /\ str_eq (nu (z1\par (P z1) R)) Q1

Subgoal 2.12 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.12:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (par P (nu Q)) Q2
============================
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.12.1:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (nu Q) Q2
============================
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.12.2 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_sym to H4.
Subgoal 2.12.1:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (nu Q) Q2
H5 : red_ker_exp (nu Q) P Q2
============================
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.12.2 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_nu_cases to H5.
Subgoal 2.12.1:

Variables: Q2 Q P S
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (nu Q) Q2
H5 : red_ker_exp (nu Q) P Q2
H6 : red_ker_exp (Q n1) P (S n1)
H7 : str_eq Q2 (nu S)
============================
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.12.2 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_sym to H6.
Subgoal 2.12.1:

Variables: Q2 Q P S
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp P (nu Q) Q2
H5 : red_ker_exp (nu Q) P Q2
H6 : red_ker_exp (Q n1) P (S n1)
H7 : str_eq Q2 (nu S)
H8 : red_ker_exp P (Q n1) (S n1)
============================
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq Q2 Q1

Subgoal 2.12.2 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.12.2:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp P P4
============================
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P4 (nu Q)) Q1

Subgoal 2.12.3 is:
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.12.3:

Variables: Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp (nu Q) Q3
============================
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P Q3) Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.12.3:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp (Q n1) (P4 n1)
============================
 exists Q1, red_exp (nu (x\par P (Q x))) Q1 /\ str_eq (par P (nu P4)) Q1

Subgoal 2.13 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.13:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (par (nu P) Q) Q2
============================
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.13.1:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp (nu P) Q Q2
============================
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.13.2 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.13.3 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_nu_cases to H4.
Subgoal 2.13.1:

Variables: Q2 Q P S
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_ker_exp (nu P) Q Q2
H5 : red_ker_exp (P n1) Q (S n1)
H6 : str_eq Q2 (nu S)
============================
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq Q2 Q1

Subgoal 2.13.2 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.13.3 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.13.2:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp (nu P) P4
============================
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 2.13.3 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.13.2:

Variables: Q P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp (P n1) (P5 n1)
============================
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P5) Q) Q1

Subgoal 2.13.3 is:
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.13.3:

Variables: Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp Q Q3
============================
 exists Q1, red_exp (nu (x\par (P x) Q)) Q1 /\ str_eq (par (nu P) Q3) Q1

Subgoal 2.14 is:
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 2.14:

Variables: Q2 P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (nu (x\nu (P x))) Q2
============================
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq Q2 Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 2.14:

Variables: P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H4 : red_exp (nu (P n1)) (P4 n1)
============================
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\ str_eq (nu P4) Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H4.
Subgoal 2.14:

Variables: P P5
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H5 : red_exp (P n1 n2) (P5 n1 n2)
============================
 exists Q1, red_exp (nu (y\nu (x\P x y))) Q1 /\
   str_eq (nu (z1\nu (P5 z1))) Q1

Subgoal 3 is:
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 3:

Variables: Q2 Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (nu P) Q2
H3 : str_eq (P n1) (Q n1) *
============================
 exists Q1, red_exp (nu Q) Q1 /\ str_eq Q2 Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 3:

Variables: Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq (P n1) (Q n1) *
H4 : red_exp (P n1) (P4 n1)
============================
 exists Q1, red_exp (nu Q) Q1 /\ str_eq (nu P4) Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply IH to H3 H4.
Subgoal 3:

Variables: Q P P4 Q1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq (P n1) (Q n1) *
H4 : red_exp (P n1) (P4 n1)
H5 : red_exp (Q n1) (Q1 n1)
H6 : str_eq (P4 n1) (Q1 n1)
============================
 exists Q1, red_exp (nu Q) Q1 /\ str_eq (nu P4) Q1

Subgoal 4 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 4:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (par P R) Q2
H3 : str_eq P Q *
============================
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 4.1:

Variables: Q2 R Q P
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_ker_exp P R Q2
============================
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 4.2 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq (par P4 R) Q1

Subgoal 4.3 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_str_eq_left_of_par to H3 H4.
Subgoal 4.1:

Variables: Q2 R Q P R1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_ker_exp P R Q2
H5 : red_ker_exp Q R R1
H6 : str_eq Q2 R1
============================
 exists Q1, red_exp (par Q R) Q1 /\ str_eq Q2 Q1

Subgoal 4.2 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq (par P4 R) Q1

Subgoal 4.3 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 4.2:

Variables: R Q P P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_exp P P4
============================
 exists Q1, red_exp (par Q R) Q1 /\ str_eq (par P4 R) Q1

Subgoal 4.3 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply IH to H3 H4.
Subgoal 4.2:

Variables: R Q P P4 Q1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_exp P P4
H5 : red_exp Q Q1
H6 : str_eq P4 Q1
============================
 exists Q1, red_exp (par Q R) Q1 /\ str_eq (par P4 R) Q1

Subgoal 4.3 is:
 exists Q1, red_exp (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 4.3:

Variables: R Q P Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq P Q *
H4 : red_exp R Q3
============================
 exists Q1, red_exp (par Q R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 5 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 5:

Variables: Q2 R P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp (par P Q) Q2
H3 : str_eq Q R *
============================
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < case H2.
Subgoal 5.1:

Variables: Q2 R P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_ker_exp P Q Q2
============================
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 5.2 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_sym to H4.
Subgoal 5.1:

Variables: Q2 R P Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_ker_exp P Q Q2
H5 : red_ker_exp Q P Q2
============================
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 5.2 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_str_eq_left_of_par to H3 H5.
Subgoal 5.1:

Variables: Q2 R P Q R1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_ker_exp P Q Q2
H5 : red_ker_exp Q P Q2
H6 : red_ker_exp R P R1
H7 : str_eq Q2 R1
============================
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 5.2 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply red_ker_exp_par_sym to H6.
Subgoal 5.1:

Variables: Q2 R P Q R1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_ker_exp P Q Q2
H5 : red_ker_exp Q P Q2
H6 : red_ker_exp R P R1
H7 : str_eq Q2 R1
H8 : red_ker_exp P R R1
============================
 exists Q1, red_exp (par P R) Q1 /\ str_eq Q2 Q1

Subgoal 5.2 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 5.2:

Variables: R P Q P4
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_exp P P4
============================
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P4 Q) Q1

Subgoal 5.3 is:
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 5.3:

Variables: R P Q Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_exp Q Q3
============================
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply IH to H3 H4.
Subgoal 5.3:

Variables: R P Q Q3 Q1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H3 : str_eq Q R *
H4 : red_exp Q Q3
H5 : red_exp R Q1
H6 : str_eq Q3 Q1
============================
 exists Q1, red_exp (par P R) Q1 /\ str_eq (par P Q3) Q1

Subgoal 6 is:
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Subgoal 6:

Variables: P1 P2 Q2 Q
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp P2 Q2
H3 : str_eq P2 Q *
H4 : str_eq Q P1 *
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply IH to H3 H2.
Subgoal 6:

Variables: P1 P2 Q2 Q Q1
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp P2 Q2
H3 : str_eq P2 Q *
H4 : str_eq Q P1 *
H5 : red_exp Q Q1
H6 : str_eq Q2 Q1
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < apply IH to H4 H5.
Subgoal 6:

Variables: P1 P2 Q2 Q Q1 Q3
IH : forall P1 P2 Q2, str_eq P2 P1 * -> red_exp P2 Q2 ->
       (exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1)
H2 : red_exp P2 Q2
H3 : str_eq P2 Q *
H4 : str_eq Q P1 *
H5 : red_exp Q Q1
H6 : str_eq Q2 Q1
H7 : red_exp P1 Q3
H8 : str_eq Q1 Q3
============================
 exists Q1, red_exp P1 Q1 /\ str_eq Q2 Q1

red_str_eq_delay_exp < search.
Proof completed.
Abella <