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

Abella < Import "trans".
Importing from "trans".

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

Abella < Import "lsc".
Importing from "lsc".

Abella < Theorem lemma_red_tensor_simulates_red_db : 
forall U V W P Q R2, red_db_ker U V W -> trans U P -> trans V Q ->
  trans W R2 ->
  (exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                             (R1 y z) /\
       str_eq (nu (y\R1 y z)) (R2 z)).


============================
 forall U V W P Q R2, red_db_ker U V W -> trans U P -> trans V Q ->
   trans W R2 ->
   (exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                              (R1 y z) /\
        str_eq (nu (y\R1 y z)) (R2 z))

lemma_red_tensor_simulates_red_db < induction on 1.

IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
============================
 forall U V W P Q R2, red_db_ker U V W @ -> trans U P -> trans V Q ->
   trans W R2 ->
   (exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                              (R1 y z) /\
        str_eq (nu (y\R1 y z)) (R2 z))

lemma_red_tensor_simulates_red_db < intros.

Variables: U V W P Q R2
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H1 : red_db_ker U V W @
H2 : trans U P
H3 : trans V Q
H4 : trans W R2
============================
 exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                           (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

lemma_red_tensor_simulates_red_db < case H1.
Subgoal 1:

Variables: V P Q R2 U1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H2 : trans (abs U1) P
H3 : trans V Q
H4 : trans (subex U1 V) R2
============================
 exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                           (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

Subgoal 2 is:
 exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                           (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

lemma_red_tensor_simulates_red_db < case H2.
Subgoal 1:

Variables: V Q R2 U1 P1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H3 : trans V Q
H4 : trans (subex U1 V) R2
H5 : trans (U1 n1) (P1 n1)
============================
 exists R1, nabla b y z, red_ker_tensor (in2 b P1)
                           (par (out2 b y z) (in y Q)) (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

Subgoal 2 is:
 exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                           (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

lemma_red_tensor_simulates_red_db < case H4.
Subgoal 1:

Variables: V Q U1 P1 Q1 P2
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H3 : trans V Q
H5 : trans (U1 n1) (P1 n1)
H6 : trans (U1 n1) (P2 n1)
H7 : trans V Q1
============================
 exists R1, nabla b y z, red_ker_tensor (in2 b P1)
                           (par (out2 b y z) (in y Q)) (R1 y z) /\
   str_eq (nu (y\R1 y z)) (nu (x\par (P2 x z) (in x Q1)))

Subgoal 2 is:
 exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                           (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

lemma_red_tensor_simulates_red_db < apply trans_fonc to *H3 *H7.
Subgoal 1:

Variables: V U1 P1 Q1 P2
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H5 : trans (U1 n1) (P1 n1)
H6 : trans (U1 n1) (P2 n1)
============================
 exists R1, nabla b y z, red_ker_tensor (in2 b P1)
                           (par (out2 b y z) (in y Q1)) (R1 y z) /\
   str_eq (nu (y\R1 y z)) (nu (x\par (P2 x z) (in x Q1)))

Subgoal 2 is:
 exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                           (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

lemma_red_tensor_simulates_red_db < apply trans_fonc to *H5 *H6.
Subgoal 1:

Variables: V U1 Q1 P2
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
============================
 exists R1, nabla b y z, red_ker_tensor (in2 b (z1\P2 z1))
                           (par (out2 b y z) (in y Q1)) (R1 y z) /\
   str_eq (nu (y\R1 y z)) (nu (x\par (P2 x z) (in x Q1)))

Subgoal 2 is:
 exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                           (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

lemma_red_tensor_simulates_red_db < search.
Subgoal 2:

Variables: V P Q R2 V1 U2 U1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H2 : trans (subex U1 V1) P
H3 : trans V Q
H4 : trans (subex U2 V1) R2
H5 : red_db_ker (U1 n1) V (U2 n1) *
============================
 exists R1, nabla b y z, red_ker_tensor (P b) (par (out2 b y z) (in y Q))
                           (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

lemma_red_tensor_simulates_red_db < case H2.
Subgoal 2:

Variables: V Q R2 V1 U2 U1 Q1 P1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H3 : trans V Q
H4 : trans (subex U2 V1) R2
H5 : red_db_ker (U1 n1) V (U2 n1) *
H6 : trans (U1 n1) (P1 n1)
H7 : trans V1 Q1
============================
 exists R1, nabla b y z, red_ker_tensor (nu (x\par (P1 x b) (in x Q1)))
                           (par (out2 b y z) (in y Q)) (R1 y z) /\
   str_eq (nu (y\R1 y z)) (R2 z)

lemma_red_tensor_simulates_red_db < case H4.
Subgoal 2:

Variables: V Q V1 U2 U1 Q1 P1 Q2 P2
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H3 : trans V Q
H5 : red_db_ker (U1 n1) V (U2 n1) *
H6 : trans (U1 n1) (P1 n1)
H7 : trans V1 Q1
H8 : trans (U2 n1) (P2 n1)
H9 : trans V1 Q2
============================
 exists R1, nabla b y z, red_ker_tensor (nu (x\par (P1 x b) (in x Q1)))
                           (par (out2 b y z) (in y Q)) (R1 y z) /\
   str_eq (nu (y\R1 y z)) (nu (x\par (P2 x z) (in x Q2)))

lemma_red_tensor_simulates_red_db < apply trans_fonc to *H7 *H9.
Subgoal 2:

Variables: V Q V1 U2 U1 P1 Q2 P2
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H3 : trans V Q
H5 : red_db_ker (U1 n1) V (U2 n1) *
H6 : trans (U1 n1) (P1 n1)
H8 : trans (U2 n1) (P2 n1)
============================
 exists R1, nabla b y z, red_ker_tensor (nu (x\par (P1 x b) (in x Q2)))
                           (par (out2 b y z) (in y Q)) (R1 y z) /\
   str_eq (nu (y\R1 y z)) (nu (x\par (P2 x z) (in x Q2)))

lemma_red_tensor_simulates_red_db < apply IH to *H5 *H6 *H3 *H8.
Subgoal 2:

Variables: V Q V1 U2 U1 P1 Q2 P2 R1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H10 : red_ker_tensor (P1 n1 n2) (par (out2 n2 n3 n4) (in n3 Q)) (R1 n1 n3 n4)
H11 : str_eq (nu (y\R1 n1 y n4)) (P2 n1 n4)
============================
 exists R1, nabla b y z, red_ker_tensor (nu (x\par (P1 x b) (in x Q2)))
                           (par (out2 b y z) (in y Q)) (R1 y z) /\
   str_eq (nu (y\R1 y z)) (nu (x\par (P2 x z) (in x Q2)))

lemma_red_tensor_simulates_red_db < exists y\z\nu (x\par (R1 x y z) (in x Q2)).
Subgoal 2:

Variables: V Q V1 U2 U1 P1 Q2 P2 R1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H10 : red_ker_tensor (P1 n1 n2) (par (out2 n2 n3 n4) (in n3 Q)) (R1 n1 n3 n4)
H11 : str_eq (nu (y\R1 n1 y n4)) (P2 n1 n4)
============================
 nabla b y z, red_ker_tensor (nu (x\par (P1 x b) (in x Q2)))
                (par (out2 b y z) (in y Q)) (nu (x\par (R1 x y z) (in x Q2))) /\
   str_eq (nu (y\nu (x\par (R1 x y z) (in x Q2))))
     (nu (x\par (P2 x z) (in x Q2)))

lemma_red_tensor_simulates_red_db < intros.
Subgoal 2:

Variables: V Q V1 U2 U1 P1 Q2 P2 R1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H10 : red_ker_tensor (P1 n1 n2) (par (out2 n2 n3 n4) (in n3 Q)) (R1 n1 n3 n4)
H11 : str_eq (nu (y\R1 n1 y n4)) (P2 n1 n4)
============================
 red_ker_tensor (nu (x\par (P1 x n1) (in x Q2)))
   (par (out2 n1 n2 n3) (in n2 Q)) (nu (x\par (R1 x n2 n3) (in x Q2))) /\
   str_eq (nu (y\nu (x\par (R1 x y n3) (in x Q2))))
     (nu (x\par (P2 x n3) (in x Q2)))

lemma_red_tensor_simulates_red_db < split.
Subgoal 2.1:

Variables: V Q V1 U2 U1 P1 Q2 P2 R1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H10 : red_ker_tensor (P1 n1 n2) (par (out2 n2 n3 n4) (in n3 Q)) (R1 n1 n3 n4)
H11 : str_eq (nu (y\R1 n1 y n4)) (P2 n1 n4)
============================
 red_ker_tensor (nu (x\par (P1 x n1) (in x Q2)))
   (par (out2 n1 n2 n3) (in n2 Q)) (nu (x\par (R1 x n2 n3) (in x Q2)))

Subgoal 2.2 is:
 str_eq (nu (y\nu (x\par (R1 x y n3) (in x Q2))))
   (nu (x\par (P2 x n3) (in x Q2)))

lemma_red_tensor_simulates_red_db < search.
Subgoal 2.2:

Variables: V Q V1 U2 U1 P1 Q2 P2 R1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H10 : red_ker_tensor (P1 n1 n2) (par (out2 n2 n3 n4) (in n3 Q)) (R1 n1 n3 n4)
H11 : str_eq (nu (y\R1 n1 y n4)) (P2 n1 n4)
============================
 str_eq (nu (y\nu (x\par (R1 x y n3) (in x Q2))))
   (nu (x\par (P2 x n3) (in x Q2)))

lemma_red_tensor_simulates_red_db < unfold 20.
Subgoal 2.2:

Variables: V Q V1 U2 U1 P1 Q2 P2 R1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H10 : red_ker_tensor (P1 n1 n2) (par (out2 n2 n3 n4) (in n3 Q)) (R1 n1 n3 n4)
H11 : str_eq (nu (y\R1 n1 y n4)) (P2 n1 n4)
============================
 exists Q, str_eq (nu (y\nu (x\par (R1 x y n3) (in x Q2)))) Q /\
   str_eq Q (nu (x\par (P2 x n3) (in x Q2)))

lemma_red_tensor_simulates_red_db < exists nu (x\nu (y\par (R1 x y n3) (in x Q2))).
Subgoal 2.2:

Variables: V Q V1 U2 U1 P1 Q2 P2 R1
IH : forall U V W P Q R2, red_db_ker U V W * -> trans U P -> trans V Q ->
       trans W R2 ->
       (exists R1, nabla b y z, red_ker_tensor (P b)
                                  (par (out2 b y z) (in y Q)) (R1 y z) /\
            str_eq (nu (y\R1 y z)) (R2 z))
H10 : red_ker_tensor (P1 n1 n2) (par (out2 n2 n3 n4) (in n3 Q)) (R1 n1 n3 n4)
H11 : str_eq (nu (y\R1 n1 y n4)) (P2 n1 n4)
============================
 str_eq (nu (y\nu (x\par (R1 x y n3) (in x Q2))))
   (nu (x\nu (y\par (R1 x y n3) (in x Q2)))) /\
   str_eq (nu (x\nu (y\par (R1 x y n3) (in x Q2))))
     (nu (x\par (P2 x n3) (in x Q2)))

lemma_red_tensor_simulates_red_db < search.
Proof completed.
Abella < Theorem red_tensor_simulates_evc_red_db : 
forall U V P Q2, evc_cl red_db U V -> trans U P -> trans V Q2 ->
  (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)).


============================
 forall U V P Q2, evc_cl red_db U V -> trans U P -> trans V Q2 ->
   (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))

red_tensor_simulates_evc_red_db < induction on 1.

IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
============================
 forall U V P Q2, evc_cl red_db U V @ -> trans U P -> trans V Q2 ->
   (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))

red_tensor_simulates_evc_red_db < intros.

Variables: U V P Q2
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H1 : evc_cl red_db U V @
H2 : trans U P
H3 : trans V Q2
============================
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < case H1.
Subgoal 1:

Variables: U V P Q2
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H2 : trans U P
H3 : trans V Q2
H4 : red_db U V
============================
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < case H4.
Subgoal 1:

Variables: V P Q2 V1 U1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H2 : trans (app U1 V1) P
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
============================
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < case H2.
Subgoal 1:

Variables: V Q2 V1 U1 Q P1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
============================
 exists Q1, nabla a, red_tensor
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q)))))
                       (Q1 a) /\
   str_eq (Q2 a) (Q1 a)

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < apply lemma_red_tensor_simulates_red_db to H5 H6 H7 H3.
Subgoal 1:

Variables: V Q2 V1 U1 Q P1 R1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
H8 : red_ker_tensor (P1 n1) (par (out2 n1 n2 n3) (in n2 Q)) (R1 n2 n3)
H9 : str_eq (nu (y\R1 y n3)) (Q2 n3)
============================
 exists Q1, nabla a, red_tensor
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q)))))
                       (Q1 a) /\
   str_eq (Q2 a) (Q1 a)

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < exists a\nu (b\nu (x\R1 x a)).
Subgoal 1:

Variables: V Q2 V1 U1 Q P1 R1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
H8 : red_ker_tensor (P1 n1) (par (out2 n1 n2 n3) (in n2 Q)) (R1 n2 n3)
H9 : str_eq (nu (y\R1 y n3)) (Q2 n3)
============================
 nabla a, red_tensor (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q)))))
            (nu (b\nu (x\R1 x a))) /\
   str_eq (Q2 a) (nu (b\nu (x\R1 x a)))

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < intros.
Subgoal 1:

Variables: V Q2 V1 U1 Q P1 R1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
H8 : red_ker_tensor (P1 n1) (par (out2 n1 n2 n3) (in n2 Q)) (R1 n2 n3)
H9 : str_eq (nu (y\R1 y n3)) (Q2 n3)
============================
 red_tensor (nu (b\nu (x\par (P1 b) (par (out2 b x n1) (in x Q)))))
   (nu (b\nu (x\R1 x n1))) /\ str_eq (Q2 n1) (nu (b\nu (x\R1 x n1)))

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < split.
Subgoal 1.1:

Variables: V Q2 V1 U1 Q P1 R1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
H8 : red_ker_tensor (P1 n1) (par (out2 n1 n2 n3) (in n2 Q)) (R1 n2 n3)
H9 : str_eq (nu (y\R1 y n3)) (Q2 n3)
============================
 red_tensor (nu (b\nu (x\par (P1 b) (par (out2 b x n1) (in x Q)))))
   (nu (b\nu (x\R1 x n1)))

Subgoal 1.2 is:
 str_eq (Q2 n1) (nu (b\nu (x\R1 x n1)))

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < search.
Subgoal 1.2:

Variables: V Q2 V1 U1 Q P1 R1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
H8 : red_ker_tensor (P1 n1) (par (out2 n1 n2 n3) (in n2 Q)) (R1 n2 n3)
H9 : str_eq (nu (y\R1 y n3)) (Q2 n3)
============================
 str_eq (Q2 n1) (nu (b\nu (x\R1 x n1)))

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < unfold 20.
Subgoal 1.2:

Variables: V Q2 V1 U1 Q P1 R1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
H8 : red_ker_tensor (P1 n1) (par (out2 n1 n2 n3) (in n2 Q)) (R1 n2 n3)
H9 : str_eq (nu (y\R1 y n3)) (Q2 n3)
============================
 exists Q, str_eq (Q2 n1) Q /\ str_eq Q (nu (b\nu (x\R1 x n1)))

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < exists nu (y\R1 y n1).
Subgoal 1.2:

Variables: V Q2 V1 U1 Q P1 R1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
H8 : red_ker_tensor (P1 n1) (par (out2 n1 n2 n3) (in n2 Q)) (R1 n2 n3)
H9 : str_eq (nu (y\R1 y n3)) (Q2 n3)
============================
 str_eq (Q2 n1) (nu (y\R1 y n1)) /\
   str_eq (nu (y\R1 y n1)) (nu (b\nu (x\R1 x n1)))

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < split.
Subgoal 1.2.1:

Variables: V Q2 V1 U1 Q P1 R1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
H8 : red_ker_tensor (P1 n1) (par (out2 n1 n2 n3) (in n2 Q)) (R1 n2 n3)
H9 : str_eq (nu (y\R1 y n3)) (Q2 n3)
============================
 str_eq (Q2 n1) (nu (y\R1 y n1))

Subgoal 1.2.2 is:
 str_eq (nu (y\R1 y n1)) (nu (b\nu (x\R1 x n1)))

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < backchain str_eq_sym.
Subgoal 1.2.2:

Variables: V Q2 V1 U1 Q P1 R1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans V Q2
H5 : red_db_ker U1 V1 V
H6 : trans U1 P1
H7 : trans V1 Q
H8 : red_ker_tensor (P1 n1) (par (out2 n1 n2 n3) (in n2 Q)) (R1 n2 n3)
H9 : str_eq (nu (y\R1 y n3)) (Q2 n3)
============================
 str_eq (nu (y\R1 y n1)) (nu (b\nu (x\R1 x n1)))

Subgoal 2 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < backchain nu_gen.
Subgoal 2:

Variables: P Q2 W V1 U1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H2 : trans (app U1 W) P
H3 : trans (app V1 W) Q2
H4 : evc_cl red_db U1 V1 *
============================
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < case H2.
Subgoal 2:

Variables: Q2 W V1 U1 Q P1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans (app V1 W) Q2
H4 : evc_cl red_db U1 V1 *
H5 : trans U1 P1
H6 : trans W Q
============================
 exists Q1, nabla a, red_tensor
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q)))))
                       (Q1 a) /\
   str_eq (Q2 a) (Q1 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < case H3.
Subgoal 2:

Variables: W V1 U1 Q P1 Q1 P2
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H4 : evc_cl red_db U1 V1 *
H5 : trans U1 P1
H6 : trans W Q
H7 : trans V1 P2
H8 : trans W Q1
============================
 exists Q2, nabla a, red_tensor
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q)))))
                       (Q2 a) /\
   str_eq (nu (b\nu (x\par (P2 b) (par (out2 b x a) (in x Q1))))) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < apply trans_fonc to H6 *H8.
Subgoal 2:

Variables: W V1 U1 P1 Q1 P2
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H4 : evc_cl red_db U1 V1 *
H5 : trans U1 P1
H6 : trans W Q1
H7 : trans V1 P2
============================
 exists Q2, nabla a, red_tensor
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q1)))))
                       (Q2 a) /\
   str_eq (nu (b\nu (x\par (P2 b) (par (out2 b x a) (in x Q1))))) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < apply IH to H4 H5 H7.
Subgoal 2:

Variables: W V1 U1 P1 Q1 P2 Q3
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H4 : evc_cl red_db U1 V1 *
H5 : trans U1 P1
H6 : trans W Q1
H7 : trans V1 P2
H9 : red_tensor (P1 n1) (Q3 n1)
H10 : str_eq (P2 n1) (Q3 n1)
============================
 exists Q2, nabla a, red_tensor
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q1)))))
                       (Q2 a) /\
   str_eq (nu (b\nu (x\par (P2 b) (par (out2 b x a) (in x Q1))))) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < search.
Subgoal 3:

Variables: P Q2 W V1 U1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H2 : trans (subex U1 W) P
H3 : trans (subex V1 W) Q2
H4 : evc_cl red_db (U1 n1) (V1 n1) *
============================
 exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < case H2.
Subgoal 3:

Variables: Q2 W V1 U1 Q P1
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H3 : trans (subex V1 W) Q2
H4 : evc_cl red_db (U1 n1) (V1 n1) *
H5 : trans (U1 n1) (P1 n1)
H6 : trans W Q
============================
 exists Q1, nabla a, red_tensor (nu (x\par (P1 x a) (in x Q))) (Q1 a) /\
   str_eq (Q2 a) (Q1 a)

red_tensor_simulates_evc_red_db < case H3.
Subgoal 3:

Variables: W V1 U1 Q P1 Q1 P2
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H4 : evc_cl red_db (U1 n1) (V1 n1) *
H5 : trans (U1 n1) (P1 n1)
H6 : trans W Q
H7 : trans (V1 n1) (P2 n1)
H8 : trans W Q1
============================
 exists Q2, nabla a, red_tensor (nu (x\par (P1 x a) (in x Q))) (Q2 a) /\
   str_eq (nu (x\par (P2 x a) (in x Q1))) (Q2 a)

red_tensor_simulates_evc_red_db < apply trans_fonc to H6 *H8.
Subgoal 3:

Variables: W V1 U1 P1 Q1 P2
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H4 : evc_cl red_db (U1 n1) (V1 n1) *
H5 : trans (U1 n1) (P1 n1)
H6 : trans W Q1
H7 : trans (V1 n1) (P2 n1)
============================
 exists Q2, nabla a, red_tensor (nu (x\par (P1 x a) (in x Q1))) (Q2 a) /\
   str_eq (nu (x\par (P2 x a) (in x Q1))) (Q2 a)

red_tensor_simulates_evc_red_db < apply IH to H4 H5 H7.
Subgoal 3:

Variables: W V1 U1 P1 Q1 P2 Q3
IH : forall U V P Q2, evc_cl red_db U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_tensor (P a) (Q1 a) /\ str_eq (Q2 a) (Q1 a))
H4 : evc_cl red_db (U1 n1) (V1 n1) *
H5 : trans (U1 n1) (P1 n1)
H6 : trans W Q1
H7 : trans (V1 n1) (P2 n1)
H9 : red_tensor (P1 n1 n2) (Q3 n1 n2)
H10 : str_eq (P2 n1 n2) (Q3 n1 n2)
============================
 exists Q2, nabla a, red_tensor (nu (x\par (P1 x a) (in x Q1))) (Q2 a) /\
   str_eq (nu (x\par (P2 x a) (in x Q1))) (Q2 a)

red_tensor_simulates_evc_red_db < search.
Proof completed.
Abella < Theorem lemma_red_exp_simulates_red_ls : 
forall U W V P R Q2, nabla y, red_ls_ker W U V -> trans W R ->
  trans (U y) (P y) -> trans (V y) (Q2 y) ->
  (exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
       str_eq (Q1 y a) (par (Q2 y a) (in y R))).


============================
 forall U W V P R Q2, nabla y, red_ls_ker W U V -> trans W R ->
   trans (U y) (P y) -> trans (V y) (Q2 y) ->
   (exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
        str_eq (Q1 y a) (par (Q2 y a) (in y R)))

lemma_red_exp_simulates_red_ls < induction on 1.

IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
            str_eq (Q1 y a) (par (Q2 y a) (in y R)))
============================
 forall U W V P R Q2, nabla y, red_ls_ker W U V @ -> trans W R ->
   trans (U y) (P y) -> trans (V y) (Q2 y) ->
   (exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
        str_eq (Q1 y a) (par (Q2 y a) (in y R)))

lemma_red_exp_simulates_red_ls < intros.

Variables: U W V P R Q2
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
            str_eq (Q1 y a) (par (Q2 y a) (in y R)))
H1 : red_ls_ker W U V @
H2 : trans W R
H3 : trans (U n1) (P n1)
H4 : trans (V n1) (Q2 n1)
============================
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < case H1.
Subgoal 1:

Variables: W P R Q2
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H3 : trans n1 (P n1)
H4 : trans W (Q2 n1)
============================
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

Subgoal 2 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < case H3.
Subgoal 1:

Variables: W R Q2
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H4 : trans W (Q2 n1)
============================
 exists Q1, nabla a y, red_ker_exp (out y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

Subgoal 2 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < apply trans_fonc to H2 H4.
Subgoal 1:

Variables: W R
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H4 : trans W R
============================
 exists Q1, nabla a y, red_ker_exp (out y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (R a) (in y R))

Subgoal 2 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < search.
Subgoal 2:

Variables: W P R Q2 V1 U2 U1
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H3 : trans (app (U1 n1) (V1 n1)) (P n1)
H4 : trans (app (U2 n1) (V1 n1)) (Q2 n1)
H5 : red_ls_ker W U1 U2 *
============================
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < case H3.
Subgoal 2:

Variables: W R Q2 V1 U2 U1 Q P1
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H4 : trans (app (U2 n1) (V1 n1)) (Q2 n1)
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q n1)
============================
 exists Q1, nabla a y, red_ker_exp
                         (nu
                            (b\nu
                                 (x\par (P1 y b)
                                      (par (out2 b x a) (in x (Q y))))))
                         (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < case H4.
Subgoal 2:

Variables: W R V1 U2 U1 Q P1 Q1 P2
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
============================
 exists Q2, nabla a y, red_ker_exp
                         (nu
                            (b\nu
                                 (x\par (P1 y b)
                                      (par (out2 b x a) (in x (Q y))))))
                         (in y R) (Q2 y a) /\
   str_eq (Q2 y a)
     (par (nu (b\nu (x\par (P2 y b) (par (out2 b x a) (in x (Q1 y))))))
        (in y R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < apply trans_fonc to H7 H9.
Subgoal 2:

Variables: W R V1 U2 U1 P1 Q1 P2
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
============================
 exists Q2, nabla a y, red_ker_exp
                         (nu
                            (b\nu
                                 (x\par (P1 y b)
                                      (par (out2 b x a) (in x (Q1 y))))))
                         (in y R) (Q2 y a) /\
   str_eq (Q2 y a)
     (par (nu (b\nu (x\par (P2 y b) (par (out2 b x a) (in x (Q1 y))))))
        (in y R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < apply IH to H5 H2 H6 H8.
Subgoal 2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 exists Q2, nabla a y, red_ker_exp
                         (nu
                            (b\nu
                                 (x\par (P1 y b)
                                      (par (out2 b x a) (in x (Q1 y))))))
                         (in y R) (Q2 y a) /\
   str_eq (Q2 y a)
     (par (nu (b\nu (x\par (P2 y b) (par (out2 b x a) (in x (Q1 y))))))
        (in y R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < exists y\a\nu (b\nu (x\par (Q3 y b) (par (out2 b x a) (in x (Q1 y))))).
Subgoal 2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 nabla a y, red_ker_exp
              (nu (b\nu (x\par (P1 y b) (par (out2 b x a) (in x (Q1 y))))))
              (in y R)
              (nu (b\nu (x\par (Q3 y b) (par (out2 b x a) (in x (Q1 y)))))) /\
   str_eq (nu (b\nu (x\par (Q3 y b) (par (out2 b x a) (in x (Q1 y))))))
     (par (nu (b\nu (x\par (P2 y b) (par (out2 b x a) (in x (Q1 y))))))
        (in y R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < intros.
Subgoal 2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 red_ker_exp (nu (b\nu (x\par (P1 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
   (in n2 R) (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2)))))) /\
   str_eq (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
     (par (nu (b\nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
        (in n2 R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < split.
Subgoal 2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 red_ker_exp (nu (b\nu (x\par (P1 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
   (in n2 R) (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 2.2 is:
 str_eq (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
   (par (nu (b\nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
      (in n2 R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < search.
Subgoal 2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
   (par (nu (b\nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
      (in n2 R))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < backchain 0 str_eq_sym.
Subgoal 2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (nu (b\nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
      (in n2 R))
   (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < unfold 20.
Subgoal 2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 exists Q, str_eq
             (par
                (nu
                   (b\nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
                (in n2 R))
             Q /\
   str_eq Q (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < exists nu
  (b\par (nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))) (in n2 R)).
Subgoal 2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (nu (b\nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
      (in n2 R))
   (nu
      (b\par (nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2)))))
           (in n2 R))) /\
   str_eq
     (nu
        (b\par (nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2)))))
             (in n2 R)))
     (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < split.
Subgoal 2.2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (nu (b\nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
      (in n2 R))
   (nu
      (b\par (nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2)))))
           (in n2 R)))

Subgoal 2.2.2 is:
 str_eq
   (nu
      (b\par (nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2)))))
           (in n2 R)))
   (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < search.
Subgoal 2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (nu
      (b\par (nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2)))))
           (in n2 R)))
   (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < unfold 20.
Subgoal 2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 exists Q, str_eq
             (nu
                (b\par
                     (nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2)))))
                     (in n2 R)))
             Q /\
   str_eq Q (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < exists nu
  (b\nu (x\par (par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2)))) (in n2 R))).
Subgoal 2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (nu
      (b\par (nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2)))))
           (in n2 R)))
   (nu
      (b\nu
           (x\par (par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))
                (in n2 R)))) /\
   str_eq
     (nu
        (b\nu
             (x\par (par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))
                  (in n2 R))))
     (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < split.
Subgoal 2.2.2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (nu
      (b\par (nu (x\par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2)))))
           (in n2 R)))
   (nu
      (b\nu
           (x\par (par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))
                (in n2 R))))

Subgoal 2.2.2.2 is:
 str_eq
   (nu
      (b\nu
           (x\par (par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))
                (in n2 R))))
   (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < search.
Subgoal 2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (nu
      (b\nu
           (x\par (par (P2 n2 b) (par (out2 b x n1) (in x (Q1 n2))))
                (in n2 R))))
   (nu (b\nu (x\par (Q3 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < unfold 17.
Subgoal 2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 nabla x, str_eq
            (nu
               (x1\par (par (P2 n2 x) (par (out2 x x1 n1) (in x1 (Q1 n2))))
                     (in n2 R)))
            (nu (x1\par (Q3 n2 x) (par (out2 x x1 n1) (in x1 (Q1 n2)))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < intros.
Subgoal 2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (nu (x\par (par (P2 n2 n3) (par (out2 n3 x n1) (in x (Q1 n2)))) (in n2 R)))
   (nu (x\par (Q3 n2 n3) (par (out2 n3 x n1) (in x (Q1 n2)))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < unfold 17.
Subgoal 2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 nabla x, str_eq
            (par (par (P2 n2 n3) (par (out2 n3 x n1) (in x (Q1 n2))))
               (in n2 R))
            (par (Q3 n2 n3) (par (out2 n3 x n1) (in x (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < intros.
Subgoal 2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (par (P2 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 R))
   (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < unfold 20.
Subgoal 2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 exists Q, str_eq
             (par (par (P2 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
                (in n2 R))
             Q /\
   str_eq Q (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < exists par (P2 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 R)).
Subgoal 2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (par (P2 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 R))
   (par (P2 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 R))) /\
   str_eq
     (par (P2 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 R)))
     (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < split.
Subgoal 2.2.2.2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (par (P2 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 R))
   (par (P2 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 R)))

Subgoal 2.2.2.2.2 is:
 str_eq
   (par (P2 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 R)))
   (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < search.
Subgoal 2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (P2 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 R)))
   (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < unfold 20.
Subgoal 2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 exists Q, str_eq
             (par (P2 n2 n3)
                (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 R)))
             Q /\
   str_eq Q (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < exists par (P2 n2 n3) (par (in n2 R) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))).
Subgoal 2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (P2 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 R)))
   (par (P2 n2 n3) (par (in n2 R) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))) /\
   str_eq
     (par (P2 n2 n3) (par (in n2 R) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
     (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < split.
Subgoal 2.2.2.2.2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (P2 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 R)))
   (par (P2 n2 n3) (par (in n2 R) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))

Subgoal 2.2.2.2.2.2 is:
 str_eq
   (par (P2 n2 n3) (par (in n2 R) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < search.
Subgoal 2.2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (P2 n2 n3) (par (in n2 R) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < unfold 20.
Subgoal 2.2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 exists Q, str_eq
             (par (P2 n2 n3)
                (par (in n2 R) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
             Q /\
   str_eq Q (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < exists par (par (P2 n2 n3) (in n2 R)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))).
Subgoal 2.2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (P2 n2 n3) (par (in n2 R) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (par (P2 n2 n3) (in n2 R)) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) /\
   str_eq
     (par (par (P2 n2 n3) (in n2 R)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
     (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < split.
Subgoal 2.2.2.2.2.2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (P2 n2 n3) (par (in n2 R) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (par (P2 n2 n3) (in n2 R)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 2.2.2.2.2.2.2 is:
 str_eq
   (par (par (P2 n2 n3) (in n2 R)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < search.
Subgoal 2.2.2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq
   (par (par (P2 n2 n3) (in n2 R)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (Q3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < unfold 18.
Subgoal 2.2.2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W U1 U2 *
H6 : trans (U1 n1) (P1 n1)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1) (P2 n1)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 R) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 R))
============================
 str_eq (par (P2 n2 n3) (in n2 R)) (Q3 n2 n3)

Subgoal 3 is:
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < backchain str_eq_sym.
Subgoal 3:

Variables: W P R Q2 V1 U2 U1
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H3 : trans (subex (U1 n1) (V1 n1)) (P n1)
H4 : trans (subex (U2 n1) (V1 n1)) (Q2 n1)
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
============================
 exists Q1, nabla a y, red_ker_exp (P y a) (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < case H3.
Subgoal 3:

Variables: W R Q2 V1 U2 U1 Q P1
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H4 : trans (subex (U2 n1) (V1 n1)) (Q2 n1)
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q n1)
============================
 exists Q1, nabla a y, red_ker_exp (nu (x\par (P1 y x a) (in x (Q y))))
                         (in y R) (Q1 y a) /\
   str_eq (Q1 y a) (par (Q2 y a) (in y R))

lemma_red_exp_simulates_red_ls < case H4.
Subgoal 3:

Variables: W R V1 U2 U1 Q P1 Q1 P2
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
============================
 exists Q2, nabla a y, red_ker_exp (nu (x\par (P1 y x a) (in x (Q y))))
                         (in y R) (Q2 y a) /\
   str_eq (Q2 y a) (par (nu (x\par (P2 y x a) (in x (Q1 y)))) (in y R))

lemma_red_exp_simulates_red_ls < apply trans_fonc to H7 H9.
Subgoal 3:

Variables: W R V1 U2 U1 P1 Q1 P2
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
============================
 exists Q2, nabla a y, red_ker_exp (nu (x\par (P1 y x a) (in x (Q1 y))))
                         (in y R) (Q2 y a) /\
   str_eq (Q2 y a) (par (nu (x\par (P2 y x a) (in x (Q1 y)))) (in y R))

lemma_red_exp_simulates_red_ls < apply IH to H5 _ _ _.
Subgoal 3:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 exists Q2, nabla a y, red_ker_exp (nu (x\par (P1 y x a) (in x (Q1 y))))
                         (in y R) (Q2 y a) /\
   str_eq (Q2 y a) (par (nu (x\par (P2 y x a) (in x (Q1 y)))) (in y R))

lemma_red_exp_simulates_red_ls < exists y\a\nu (x\par (Q3 x y a) (in x (Q1 y))).
Subgoal 3:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 nabla a y, red_ker_exp (nu (x\par (P1 y x a) (in x (Q1 y)))) (in y R)
              (nu (x\par (Q3 x y a) (in x (Q1 y)))) /\
   str_eq (nu (x\par (Q3 x y a) (in x (Q1 y))))
     (par (nu (x\par (P2 y x a) (in x (Q1 y)))) (in y R))

lemma_red_exp_simulates_red_ls < intros.
Subgoal 3:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 red_ker_exp (nu (x\par (P1 n2 x n1) (in x (Q1 n2)))) (in n2 R)
   (nu (x\par (Q3 x n2 n1) (in x (Q1 n2)))) /\
   str_eq (nu (x\par (Q3 x n2 n1) (in x (Q1 n2))))
     (par (nu (x\par (P2 n2 x n1) (in x (Q1 n2)))) (in n2 R))

lemma_red_exp_simulates_red_ls < split.
Subgoal 3.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 red_ker_exp (nu (x\par (P1 n2 x n1) (in x (Q1 n2)))) (in n2 R)
   (nu (x\par (Q3 x n2 n1) (in x (Q1 n2))))

Subgoal 3.2 is:
 str_eq (nu (x\par (Q3 x n2 n1) (in x (Q1 n2))))
   (par (nu (x\par (P2 n2 x n1) (in x (Q1 n2)))) (in n2 R))

lemma_red_exp_simulates_red_ls < search.
Subgoal 3.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (nu (x\par (Q3 x n2 n1) (in x (Q1 n2))))
   (par (nu (x\par (P2 n2 x n1) (in x (Q1 n2)))) (in n2 R))

lemma_red_exp_simulates_red_ls < backchain 0 str_eq_sym.
Subgoal 3.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (nu (x\par (P2 n2 x n1) (in x (Q1 n2)))) (in n2 R))
   (nu (x\par (Q3 x n2 n1) (in x (Q1 n2))))

lemma_red_exp_simulates_red_ls < unfold 20.
Subgoal 3.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 exists Q, str_eq (par (nu (x\par (P2 n2 x n1) (in x (Q1 n2)))) (in n2 R)) Q /\
   str_eq Q (nu (x\par (Q3 x n2 n1) (in x (Q1 n2))))

lemma_red_exp_simulates_red_ls < exists nu (x\par (par (P2 n2 x n1) (in x (Q1 n2))) (in n2 R)).
Subgoal 3.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (nu (x\par (P2 n2 x n1) (in x (Q1 n2)))) (in n2 R))
   (nu (x\par (par (P2 n2 x n1) (in x (Q1 n2))) (in n2 R))) /\
   str_eq (nu (x\par (par (P2 n2 x n1) (in x (Q1 n2))) (in n2 R)))
     (nu (x\par (Q3 x n2 n1) (in x (Q1 n2))))

lemma_red_exp_simulates_red_ls < split.
Subgoal 3.2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (nu (x\par (P2 n2 x n1) (in x (Q1 n2)))) (in n2 R))
   (nu (x\par (par (P2 n2 x n1) (in x (Q1 n2))) (in n2 R)))

Subgoal 3.2.2 is:
 str_eq (nu (x\par (par (P2 n2 x n1) (in x (Q1 n2))) (in n2 R)))
   (nu (x\par (Q3 x n2 n1) (in x (Q1 n2))))

lemma_red_exp_simulates_red_ls < search.
Subgoal 3.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (nu (x\par (par (P2 n2 x n1) (in x (Q1 n2))) (in n2 R)))
   (nu (x\par (Q3 x n2 n1) (in x (Q1 n2))))

lemma_red_exp_simulates_red_ls < unfold 17.
Subgoal 3.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 nabla x, str_eq (par (par (P2 n2 x n1) (in x (Q1 n2))) (in n2 R))
            (par (Q3 x n2 n1) (in x (Q1 n2)))

lemma_red_exp_simulates_red_ls < intros.
Subgoal 3.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (par (P2 n2 n3 n1) (in n3 (Q1 n2))) (in n2 R))
   (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < unfold 20.
Subgoal 3.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 exists Q, str_eq (par (par (P2 n2 n3 n1) (in n3 (Q1 n2))) (in n2 R)) Q /\
   str_eq Q (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < exists par (P2 n2 n3 n1) (par (in n3 (Q1 n2)) (in n2 R)).
Subgoal 3.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (par (P2 n2 n3 n1) (in n3 (Q1 n2))) (in n2 R))
   (par (P2 n2 n3 n1) (par (in n3 (Q1 n2)) (in n2 R))) /\
   str_eq (par (P2 n2 n3 n1) (par (in n3 (Q1 n2)) (in n2 R)))
     (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < split.
Subgoal 3.2.2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (par (P2 n2 n3 n1) (in n3 (Q1 n2))) (in n2 R))
   (par (P2 n2 n3 n1) (par (in n3 (Q1 n2)) (in n2 R)))

Subgoal 3.2.2.2 is:
 str_eq (par (P2 n2 n3 n1) (par (in n3 (Q1 n2)) (in n2 R)))
   (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < search.
Subgoal 3.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (P2 n2 n3 n1) (par (in n3 (Q1 n2)) (in n2 R)))
   (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < unfold 20.
Subgoal 3.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 exists Q, str_eq (par (P2 n2 n3 n1) (par (in n3 (Q1 n2)) (in n2 R))) Q /\
   str_eq Q (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < exists par (P2 n2 n3 n1) (par (in n2 R) (in n3 (Q1 n2))).
Subgoal 3.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (P2 n2 n3 n1) (par (in n3 (Q1 n2)) (in n2 R)))
   (par (P2 n2 n3 n1) (par (in n2 R) (in n3 (Q1 n2)))) /\
   str_eq (par (P2 n2 n3 n1) (par (in n2 R) (in n3 (Q1 n2))))
     (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < split.
Subgoal 3.2.2.2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (P2 n2 n3 n1) (par (in n3 (Q1 n2)) (in n2 R)))
   (par (P2 n2 n3 n1) (par (in n2 R) (in n3 (Q1 n2))))

Subgoal 3.2.2.2.2 is:
 str_eq (par (P2 n2 n3 n1) (par (in n2 R) (in n3 (Q1 n2))))
   (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < search.
Subgoal 3.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (P2 n2 n3 n1) (par (in n2 R) (in n3 (Q1 n2))))
   (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < unfold 20.
Subgoal 3.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 exists Q, str_eq (par (P2 n2 n3 n1) (par (in n2 R) (in n3 (Q1 n2)))) Q /\
   str_eq Q (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < exists par (par (P2 n2 n3 n1) (in n2 R)) (in n3 (Q1 n2)).
Subgoal 3.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (P2 n2 n3 n1) (par (in n2 R) (in n3 (Q1 n2))))
   (par (par (P2 n2 n3 n1) (in n2 R)) (in n3 (Q1 n2))) /\
   str_eq (par (par (P2 n2 n3 n1) (in n2 R)) (in n3 (Q1 n2)))
     (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < split.
Subgoal 3.2.2.2.2.1:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (P2 n2 n3 n1) (par (in n2 R) (in n3 (Q1 n2))))
   (par (par (P2 n2 n3 n1) (in n2 R)) (in n3 (Q1 n2)))

Subgoal 3.2.2.2.2.2 is:
 str_eq (par (par (P2 n2 n3 n1) (in n2 R)) (in n3 (Q1 n2)))
   (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < search.
Subgoal 3.2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (par (P2 n2 n3 n1) (in n2 R)) (in n3 (Q1 n2)))
   (par (Q3 n3 n2 n1) (in n3 (Q1 n2)))

lemma_red_exp_simulates_red_ls < unfold 18.
Subgoal 3.2.2.2.2.2:

Variables: W R V1 U2 U1 P1 Q1 P2 Q3
IH : forall U W V P R Q2, nabla y, red_ls_ker W U V * -> trans W R ->
       trans (U y) (P y) -> trans (V y) (Q2 y) ->
       (exists Q1, nabla a y1, red_ker_exp (P y1 a) (in y1 R) (Q1 y1 a) /\
            str_eq (Q1 y1 a) (par (Q2 y1 a) (in y1 R)))
H2 : trans W R
H5 : red_ls_ker W (x\U1 x n1) (x\U2 x n1) *
H6 : trans (U1 n1 n2) (P1 n1 n2)
H7 : trans (V1 n1) (Q1 n1)
H8 : trans (U2 n1 n2) (P2 n1 n2)
H9 : trans (V1 n1) (Q1 n1)
H10 : red_ker_exp (P1 n3 n1 n2) (in n3 R) (Q3 n1 n3 n2)
H11 : str_eq (Q3 n1 n3 n2) (par (P2 n3 n1 n2) (in n3 R))
============================
 str_eq (par (P2 n2 n3 n1) (in n2 R)) (Q3 n3 n2 n1)

lemma_red_exp_simulates_red_ls < backchain str_eq_sym.
Proof completed.
Abella < Theorem red_exp_simulates_red_ls : 
forall U V P Q2, evc_cl red_ls U V -> trans U P -> trans V Q2 ->
  (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)).


============================
 forall U V P Q2, evc_cl red_ls U V -> trans U P -> trans V Q2 ->
   (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))

red_exp_simulates_red_ls < induction on 1.

IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
============================
 forall U V P Q2, evc_cl red_ls U V @ -> trans U P -> trans V Q2 ->
   (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))

red_exp_simulates_red_ls < intros.

Variables: U V P Q2
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H1 : evc_cl red_ls U V @
H2 : trans U P
H3 : trans V Q2
============================
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < case H1.
Subgoal 1:

Variables: U V P Q2
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H2 : trans U P
H3 : trans V Q2
H4 : red_ls U V
============================
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

Subgoal 2 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < case H4.
Subgoal 1:

Variables: P Q2 W V1 U1
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H2 : trans (subex U1 W) P
H3 : trans (subex V1 W) Q2
H5 : red_ls_ker W U1 V1
============================
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

Subgoal 2 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < case H2.
Subgoal 1:

Variables: Q2 W V1 U1 Q P1
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H3 : trans (subex V1 W) Q2
H5 : red_ls_ker W U1 V1
H6 : trans (U1 n1) (P1 n1)
H7 : trans W Q
============================
 exists Q1, nabla a, red_exp (nu (x\par (P1 x a) (in x Q))) (Q1 a) /\
   str_eq (Q1 a) (Q2 a)

Subgoal 2 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < case H3.
Subgoal 1:

Variables: W V1 U1 Q P1 Q1 P2
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H5 : red_ls_ker W U1 V1
H6 : trans (U1 n1) (P1 n1)
H7 : trans W Q
H8 : trans (V1 n1) (P2 n1)
H9 : trans W Q1
============================
 exists Q2, nabla a, red_exp (nu (x\par (P1 x a) (in x Q))) (Q2 a) /\
   str_eq (Q2 a) (nu (x\par (P2 x a) (in x Q1)))

Subgoal 2 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < apply trans_fonc to H7 *H9.
Subgoal 1:

Variables: W V1 U1 P1 Q1 P2
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H5 : red_ls_ker W U1 V1
H6 : trans (U1 n1) (P1 n1)
H7 : trans W Q1
H8 : trans (V1 n1) (P2 n1)
============================
 exists Q2, nabla a, red_exp (nu (x\par (P1 x a) (in x Q1))) (Q2 a) /\
   str_eq (Q2 a) (nu (x\par (P2 x a) (in x Q1)))

Subgoal 2 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < apply lemma_red_exp_simulates_red_ls to H5 H7 H6 H8.
Subgoal 1:

Variables: W V1 U1 P1 Q1 P2 Q3
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H5 : red_ls_ker W U1 V1
H6 : trans (U1 n1) (P1 n1)
H7 : trans W Q1
H8 : trans (V1 n1) (P2 n1)
H10 : red_ker_exp (P1 n2 n1) (in n2 Q1) (Q3 n2 n1)
H11 : str_eq (Q3 n2 n1) (par (P2 n2 n1) (in n2 Q1))
============================
 exists Q2, nabla a, red_exp (nu (x\par (P1 x a) (in x Q1))) (Q2 a) /\
   str_eq (Q2 a) (nu (x\par (P2 x a) (in x Q1)))

Subgoal 2 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < search.
Subgoal 2:

Variables: P Q2 W V1 U1
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H2 : trans (app U1 W) P
H3 : trans (app V1 W) Q2
H4 : evc_cl red_ls U1 V1 *
============================
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < case H2.
Subgoal 2:

Variables: Q2 W V1 U1 Q P1
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H3 : trans (app V1 W) Q2
H4 : evc_cl red_ls U1 V1 *
H5 : trans U1 P1
H6 : trans W Q
============================
 exists Q1, nabla a, red_exp
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q)))))
                       (Q1 a) /\
   str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < case H3.
Subgoal 2:

Variables: W V1 U1 Q P1 Q1 P2
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H4 : evc_cl red_ls U1 V1 *
H5 : trans U1 P1
H6 : trans W Q
H7 : trans V1 P2
H8 : trans W Q1
============================
 exists Q2, nabla a, red_exp
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q)))))
                       (Q2 a) /\
   str_eq (Q2 a) (nu (b\nu (x\par (P2 b) (par (out2 b x a) (in x Q1)))))

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < apply trans_fonc to H6 H8.
Subgoal 2:

Variables: W V1 U1 P1 Q1 P2
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H4 : evc_cl red_ls U1 V1 *
H5 : trans U1 P1
H6 : trans W Q1
H7 : trans V1 P2
H8 : trans W Q1
============================
 exists Q2, nabla a, red_exp
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q1)))))
                       (Q2 a) /\
   str_eq (Q2 a) (nu (b\nu (x\par (P2 b) (par (out2 b x a) (in x Q1)))))

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < apply IH to H4 H5 H7.
Subgoal 2:

Variables: W V1 U1 P1 Q1 P2 Q3
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H4 : evc_cl red_ls U1 V1 *
H5 : trans U1 P1
H6 : trans W Q1
H7 : trans V1 P2
H8 : trans W Q1
H9 : red_exp (P1 n1) (Q3 n1)
H10 : str_eq (Q3 n1) (P2 n1)
============================
 exists Q2, nabla a, red_exp
                       (nu (b\nu (x\par (P1 b) (par (out2 b x a) (in x Q1)))))
                       (Q2 a) /\
   str_eq (Q2 a) (nu (b\nu (x\par (P2 b) (par (out2 b x a) (in x Q1)))))

Subgoal 3 is:
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < search.
Subgoal 3:

Variables: P Q2 W V1 U1
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H2 : trans (subex U1 W) P
H3 : trans (subex V1 W) Q2
H4 : evc_cl red_ls (U1 n1) (V1 n1) *
============================
 exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < case H2.
Subgoal 3:

Variables: Q2 W V1 U1 Q P1
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H3 : trans (subex V1 W) Q2
H4 : evc_cl red_ls (U1 n1) (V1 n1) *
H5 : trans (U1 n1) (P1 n1)
H6 : trans W Q
============================
 exists Q1, nabla a, red_exp (nu (x\par (P1 x a) (in x Q))) (Q1 a) /\
   str_eq (Q1 a) (Q2 a)

red_exp_simulates_red_ls < case H3.
Subgoal 3:

Variables: W V1 U1 Q P1 Q1 P2
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H4 : evc_cl red_ls (U1 n1) (V1 n1) *
H5 : trans (U1 n1) (P1 n1)
H6 : trans W Q
H7 : trans (V1 n1) (P2 n1)
H8 : trans W Q1
============================
 exists Q2, nabla a, red_exp (nu (x\par (P1 x a) (in x Q))) (Q2 a) /\
   str_eq (Q2 a) (nu (x\par (P2 x a) (in x Q1)))

red_exp_simulates_red_ls < apply trans_fonc to H6 H8.
Subgoal 3:

Variables: W V1 U1 P1 Q1 P2
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H4 : evc_cl red_ls (U1 n1) (V1 n1) *
H5 : trans (U1 n1) (P1 n1)
H6 : trans W Q1
H7 : trans (V1 n1) (P2 n1)
H8 : trans W Q1
============================
 exists Q2, nabla a, red_exp (nu (x\par (P1 x a) (in x Q1))) (Q2 a) /\
   str_eq (Q2 a) (nu (x\par (P2 x a) (in x Q1)))

red_exp_simulates_red_ls < apply IH to H4 H5 H7.
Subgoal 3:

Variables: W V1 U1 P1 Q1 P2 Q3
IH : forall U V P Q2, evc_cl red_ls U V * -> trans U P -> trans V Q2 ->
       (exists Q1, nabla a, red_exp (P a) (Q1 a) /\ str_eq (Q1 a) (Q2 a))
H4 : evc_cl red_ls (U1 n1) (V1 n1) *
H5 : trans (U1 n1) (P1 n1)
H6 : trans W Q1
H7 : trans (V1 n1) (P2 n1)
H8 : trans W Q1
H9 : red_exp (P1 n1 n2) (Q3 n1 n2)
H10 : str_eq (Q3 n1 n2) (P2 n1 n2)
============================
 exists Q2, nabla a, red_exp (nu (x\par (P1 x a) (in x Q1))) (Q2 a) /\
   str_eq (Q2 a) (nu (x\par (P2 x a) (in x Q1)))

red_exp_simulates_red_ls < search.
Proof completed.
Abella < Theorem lemma_red_db_simulates_red_tensor : 
forall U V P Q R Q1, nabla a b c, trans U P -> trans V R ->
  red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
  str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
  (exists W Q2, nabla a, red_db_ker U V W /\ trans W Q2 /\
       str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)).


============================
 forall U V P Q R Q1, nabla a b c, trans U P -> trans V R ->
   red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
   str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
   (exists W Q2, nabla a, red_db_ker U V W /\ trans W Q2 /\
        str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a))

lemma_red_db_simulates_red_tensor < induction on 1.

IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a))
============================
 forall U V P Q R Q1, nabla a b c, trans U P @ -> trans V R ->
   red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
   str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
   (exists W Q2, nabla a, red_db_ker U V W /\ trans W Q2 /\
        str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a))

lemma_red_db_simulates_red_tensor < intros.

Variables: U V P Q R Q1
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a))
H1 : trans U P @
H2 : trans V R
H3 : red_ker_tensor (out2 n2 n3 n1) (P n2) (Q n2 n1 n3)
H4 : str_eq (par (Q n2 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
============================
 exists W Q2, nabla a, red_db_ker U V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H1.
Subgoal 1:

Variables: V Q R Q1
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans (V n4) (R n4)
H3 : red_ker_tensor (out2 n2 n3 n1) (out n4 n2) (Q n4 n2 n1 n3)
H4 : str_eq (par (Q n4 n2 n1 n3) (in n3 (R n4))) (Q1 n4 n2 n1 n3)
============================
 exists W Q2, nabla a, red_db_ker n4 (V n4) W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 n4 z2 a))) (Q2 a)

Subgoal 2 is:
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 3 is:
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H3.
Subgoal 2:

Variables: V Q R Q1 Q2 P1 V1 U1
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H3 : red_ker_tensor (out2 n2 n3 n1)
       (nu (b\nu (x\par (P1 b) (par (out2 b x n2) (in x Q2))))) (Q n2 n1 n3)
H4 : str_eq (par (Q n2 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans U1 P1 *
H6 : trans V1 Q2 *
============================
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 3 is:
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H3.
Subgoal 2:

Variables: V R Q1 Q2 P1 V1 U1 R1
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (nu (R1 n3 n1 n2)) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans U1 P1 *
H6 : trans V1 Q2 *
H7 : red_ker_tensor (out2 n2 n3 n1)
       (nu (x\par (P1 n4) (par (out2 n4 x n2) (in x Q2)))) (R1 n3 n1 n2 n4)
============================
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 3 is:
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H7.
Subgoal 2:

Variables: V R Q1 Q2 P1 V1 U1 R2
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (nu (z4\nu (R2 z4 n2 n1 n3))) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans U1 P1 *
H6 : trans V1 Q2 *
H8 : red_ker_tensor (out2 n2 n3 n1)
       (par (P1 n4) (par (out2 n4 n5 n2) (in n5 Q2))) (R2 n4 n2 n1 n3 n5)
============================
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 3 is:
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H8.
Subgoal 2.1:

Variables: V R Q1 Q2 P1 V1 U1 S
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq
       (par
          (nu
             (z4\nu
                   (z5\par (S z5 n3 n1 n2 z4)
                         (par (out2 z4 z5 n2) (in z5 Q2)))))
          (in n3 R))
       (Q1 n2 n1 n3)
H5 : trans U1 P1 *
H6 : trans V1 Q2 *
H9 : red_ker_tensor (out2 n2 n3 n1) (P1 n4) (S n5 n3 n1 n2 n4)
============================
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 3 is:
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < apply red_ker_tensor_out2_no_com_case to H9.
Subgoal 2.2:

Variables: V R Q1 Q2 P1 V1 U1 S
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (nu (z4\nu (z5\par (P1 z4) (S z5 n3 n1 n2 z4)))) (in n3 R))
       (Q1 n2 n1 n3)
H5 : trans U1 P1 *
H6 : trans V1 Q2 *
H9 : red_ker_tensor (out2 n2 n3 n1) (par (out2 n4 n5 n2) (in n5 Q2))
       (S n5 n3 n1 n2 n4)
============================
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 3 is:
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H9.
Subgoal 2.2.1:

Variables: V R Q1 Q2 P1 V1 U1 S1
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq
       (par
          (nu (z4\nu (z5\par (P1 z4) (par (S1 z4 n2 n1 n3 z5) (in z5 Q2)))))
          (in n3 R))
       (Q1 n2 n1 n3)
H5 : trans U1 P1 *
H6 : trans V1 Q2 *
H10 : red_ker_tensor (out2 n2 n3 n1) (out2 n4 n5 n2) (S1 n4 n2 n1 n3 n5)
============================
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 2.2.2 is:
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 3 is:
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H10.
Subgoal 2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S1
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq
       (par
          (nu
             (z4\nu
                   (z5\par (P1 z4) (par (out2 z4 z5 n2) (S1 z4 n2 n1 n3 z5)))))
          (in n3 R))
       (Q1 n2 n1 n3)
H5 : trans U1 P1 *
H6 : trans V1 Q2 *
H10 : red_ker_tensor (out2 n2 n3 n1) (in n5 Q2) (S1 n4 n2 n1 n3 n5)
============================
 exists W Q2, nabla a, red_db_ker (app U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 3 is:
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H10.
Subgoal 3:

Variables: V Q R Q1 P1 U1
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H3 : red_ker_tensor (out2 n2 n3 n1) (in2 n2 P1) (Q n2 n1 n3)
H4 : str_eq (par (Q n2 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (P1 n1) *
============================
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H3.
Subgoal 3:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 exists W Q2, nabla a, red_db_ker (abs U1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists subex U1 V.
Subgoal 3:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 exists Q2, nabla a, red_db_ker (abs U1) V (subex U1 V) /\
   trans (subex U1 V) Q2 /\ str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists a\nu (x\par (P3 a x) (in x R)).
Subgoal 3:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 nabla a, red_db_ker (abs U1) V (subex U1 V) /\
   trans (subex U1 V) (a\nu (x\par (P3 a x) (in x R))) /\
   str_eq (nu (z2\nu (Q1 z2 a))) (nu (x\par (P3 a x) (in x R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < intros.
Subgoal 3:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 red_db_ker (abs U1) V (subex U1 V) /\
   trans (subex U1 V) (a\nu (x\par (P3 a x) (in x R))) /\
   str_eq (nu (z2\nu (Q1 z2 n1))) (nu (x\par (P3 n1 x) (in x R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 3.1:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 red_db_ker (abs U1) V (subex U1 V)

Subgoal 3.2 is:
 trans (subex U1 V) (a\nu (x\par (P3 a x) (in x R)))

Subgoal 3.3 is:
 str_eq (nu (z2\nu (Q1 z2 n1))) (nu (x\par (P3 n1 x) (in x R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 3.2:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 trans (subex U1 V) (a\nu (x\par (P3 a x) (in x R)))

Subgoal 3.3 is:
 str_eq (nu (z2\nu (Q1 z2 n1))) (nu (x\par (P3 n1 x) (in x R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 3.3:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 str_eq (nu (z2\nu (Q1 z2 n1))) (nu (x\par (P3 n1 x) (in x R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 3.3:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 exists Q, str_eq (nu (z2\nu (Q1 z2 n1))) Q /\
   str_eq Q (nu (x\par (P3 n1 x) (in x R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z1\nu (z2\Q1 z2 n1 z1)).
Subgoal 3.3:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 str_eq (nu (z2\nu (Q1 z2 n1))) (nu (z1\nu (z2\Q1 z2 n1 z1))) /\
   str_eq (nu (z1\nu (z2\Q1 z2 n1 z1))) (nu (x\par (P3 n1 x) (in x R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 3.3.1:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 str_eq (nu (z2\nu (Q1 z2 n1))) (nu (z1\nu (z2\Q1 z2 n1 z1)))

Subgoal 3.3.2 is:
 str_eq (nu (z1\nu (z2\Q1 z2 n1 z1))) (nu (x\par (P3 n1 x) (in x R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 3.3.2:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 str_eq (nu (z1\nu (z2\Q1 z2 n1 z1))) (nu (x\par (P3 n1 x) (in x R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 17.
Subgoal 3.3.2:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 nabla x, str_eq (nu (z2\Q1 z2 n1 x)) (par (P3 n1 x) (in x R))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < intros.
Subgoal 3.3.2:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 str_eq (nu (z2\Q1 z2 n1 n2)) (par (P3 n1 n2) (in n2 R))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 3.3.2:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 exists Q, str_eq (nu (z2\Q1 z2 n1 n2)) Q /\
   str_eq Q (par (P3 n1 n2) (in n2 R))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z2\par (P3 n1 n2) (in n2 R)).
Subgoal 3.3.2:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 str_eq (nu (z2\Q1 z2 n1 n2)) (nu (z2\par (P3 n1 n2) (in n2 R))) /\
   str_eq (nu (z2\par (P3 n1 n2) (in n2 R))) (par (P3 n1 n2) (in n2 R))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 3.3.2.1:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 str_eq (nu (z2\Q1 z2 n1 n2)) (nu (z2\par (P3 n1 n2) (in n2 R)))

Subgoal 3.3.2.2 is:
 str_eq (nu (z2\par (P3 n1 n2) (in n2 R))) (par (P3 n1 n2) (in n2 R))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < backchain str_eq_sym.
Subgoal 3.3.2.2:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 str_eq (nu (z2\par (P3 n1 n2) (in n2 R))) (par (P3 n1 n2) (in n2 R))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < backchain 0 str_eq_sym.
Subgoal 3.3.2.2:

Variables: V R Q1 U1 P3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (P3 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (z2\P3 z2 n1) *
============================
 str_eq (par (P3 n1 n2) (in n2 R)) (nu (z2\par (P3 n1 n2) (in n2 R)))

Subgoal 4 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < backchain nu_gen.
Subgoal 4:

Variables: V Q R Q1 Q2 P1 V1 U1
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H3 : red_ker_tensor (out2 n2 n3 n1) (nu (x\par (P1 x n2) (in x Q2)))
       (Q n2 n1 n3)
H4 : str_eq (par (Q n2 n1 n3) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (P1 n1) *
H6 : trans V1 Q2 *
============================
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H3.
Subgoal 4:

Variables: V R Q1 Q2 P1 V1 U1 R1
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (nu (R1 n3 n1 n2)) (in n3 R)) (Q1 n2 n1 n3)
H5 : trans (U1 n1) (P1 n1) *
H6 : trans V1 Q2 *
H7 : red_ker_tensor (out2 n2 n3 n1) (par (P1 n4 n2) (in n4 Q2))
       (R1 n3 n1 n2 n4)
============================
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H7.
Subgoal 4.1:

Variables: V R Q1 Q2 P1 V1 U1 S
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H5 : trans (U1 n1) (P1 n1) *
H6 : trans V1 Q2 *
H8 : red_ker_tensor (out2 n2 n3 n1) (P1 n4 n2) (S n4 n2 n1 n3)
============================
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < permute (n1 n4) H5.
Subgoal 4.1:

Variables: V R Q1 Q2 P1 V1 U1 S
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H5 : trans (U1 n4) (P1 n4) *
H6 : trans V1 Q2 *
H8 : red_ker_tensor (out2 n2 n3 n1) (P1 n4 n2) (S n4 n2 n1 n3)
============================
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < apply IH to *H5 *H2 *H8 _.
Subgoal 4.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists subex W V1.
Subgoal 4.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q2, nabla a, red_db_ker (subex U1 V1) V (subex W V1) /\
   trans (subex W V1) Q2 /\ str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists a\nu (x\par (Q3 x a) (in x Q2)).
Subgoal 4.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 nabla a, red_db_ker (subex U1 V1) V (subex W V1) /\
   trans (subex W V1) (a\nu (x\par (Q3 x a) (in x Q2))) /\
   str_eq (nu (z2\nu (Q1 z2 a))) (nu (x\par (Q3 x a) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < intros.
Subgoal 4.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 red_db_ker (subex U1 V1) V (subex W V1) /\
   trans (subex W V1) (a\nu (x\par (Q3 x a) (in x Q2))) /\
   str_eq (nu (z2\nu (Q1 z2 n1))) (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 red_db_ker (subex U1 V1) V (subex W V1)

Subgoal 4.1.2 is:
 trans (subex W V1) (a\nu (x\par (Q3 x a) (in x Q2)))

Subgoal 4.1.3 is:
 str_eq (nu (z2\nu (Q1 z2 n1))) (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 trans (subex W V1) (a\nu (x\par (Q3 x a) (in x Q2)))

Subgoal 4.1.3 is:
 str_eq (nu (z2\nu (Q1 z2 n1))) (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.3:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (Q1 z2 n1))) (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 4.1.3:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q, str_eq (nu (z2\nu (Q1 z2 n1))) Q /\
   str_eq Q (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z2\nu (z3\par (nu (z4\par (S z4 z2 n1 z3) (in z4 Q2))) (in z3 R))).
Subgoal 4.1.3:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (Q1 z2 n1)))
   (nu (z2\nu (z3\par (nu (z4\par (S z4 z2 n1 z3) (in z4 Q2))) (in z3 R)))) /\
   str_eq
     (nu (z2\nu (z3\par (nu (z4\par (S z4 z2 n1 z3) (in z4 Q2))) (in z3 R))))
     (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.3.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (Q1 z2 n1)))
   (nu (z2\nu (z3\par (nu (z4\par (S z4 z2 n1 z3) (in z4 Q2))) (in z3 R))))

Subgoal 4.1.3.2 is:
 str_eq
   (nu (z2\nu (z3\par (nu (z4\par (S z4 z2 n1 z3) (in z4 Q2))) (in z3 R))))
   (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < backchain str_eq_sym.
Subgoal 4.1.3.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z2\nu (z3\par (nu (z4\par (S z4 z2 n1 z3) (in z4 Q2))) (in z3 R))))
   (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 4.1.3.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q, str_eq
             (nu
                (z2\nu
                      (z3\par (nu (z4\par (S z4 z2 n1 z3) (in z4 Q2)))
                            (in z3 R))))
             Q /\
   str_eq Q (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z2\nu (z3\nu (z4\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))).
Subgoal 4.1.3.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z2\nu (z3\par (nu (z4\par (S z4 z2 n1 z3) (in z4 Q2))) (in z3 R))))
   (nu (z2\nu (z3\nu (z4\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R))))) /\
   str_eq
     (nu (z2\nu (z3\nu (z4\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
     (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.3.2.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z2\nu (z3\par (nu (z4\par (S z4 z2 n1 z3) (in z4 Q2))) (in z3 R))))
   (nu (z2\nu (z3\nu (z4\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))

Subgoal 4.1.3.2.2 is:
 str_eq
   (nu (z2\nu (z3\nu (z4\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.3.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z2\nu (z3\nu (z4\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 4.1.3.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q, str_eq
             (nu
                (z2\nu
                      (z3\nu
                            (z4\par (par (S z4 z2 n1 z3) (in z4 Q2))
                                  (in z3 R)))))
             Q /\
   str_eq Q (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z2\nu (z4\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))).
Subgoal 4.1.3.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z2\nu (z3\nu (z4\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (z2\nu (z4\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R))))) /\
   str_eq
     (nu (z2\nu (z4\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
     (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.3.2.2.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z2\nu (z3\nu (z4\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (z2\nu (z4\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))

Subgoal 4.1.3.2.2.2 is:
 str_eq
   (nu (z2\nu (z4\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.3.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z2\nu (z4\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 4.1.3.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q, str_eq
             (nu
                (z2\nu
                      (z4\nu
                            (z3\par (par (S z4 z2 n1 z3) (in z4 Q2))
                                  (in z3 R)))))
             Q /\
   str_eq Q (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z4\nu (z2\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))).
Subgoal 4.1.3.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z2\nu (z4\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (z4\nu (z2\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R))))) /\
   str_eq
     (nu (z4\nu (z2\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
     (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.3.2.2.2.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z2\nu (z4\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (z4\nu (z2\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))

Subgoal 4.1.3.2.2.2.2 is:
 str_eq
   (nu (z4\nu (z2\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.3.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq
   (nu (z4\nu (z2\nu (z3\par (par (S z4 z2 n1 z3) (in z4 Q2)) (in z3 R)))))
   (nu (x\par (Q3 x n1) (in x Q2)))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 17.
Subgoal 4.1.3.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 nabla x, str_eq
            (nu (z2\nu (z3\par (par (S x z2 n1 z3) (in x Q2)) (in z3 R))))
            (par (Q3 x n1) (in x Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < intros.
Subgoal 4.1.3.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in n2 Q2)) (in z3 R))))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 4.1.3.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q, str_eq
             (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in n2 Q2)) (in z3 R))))
             Q /\
   str_eq Q (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in n2 Q2) (in z3 R)))).
Subgoal 4.1.3.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in n2 Q2)) (in z3 R))))
   (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in n2 Q2) (in z3 R))))) /\
   str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in n2 Q2) (in z3 R)))))
     (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.3.2.2.2.2.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in n2 Q2)) (in z3 R))))
   (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in n2 Q2) (in z3 R)))))

Subgoal 4.1.3.2.2.2.2.2 is:
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in n2 Q2) (in z3 R)))))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.3.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in n2 Q2) (in z3 R)))))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 4.1.3.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q, str_eq
             (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in n2 Q2) (in z3 R)))))
             Q /\
   str_eq Q (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in z3 R) (in n2 Q2)))).
Subgoal 4.1.3.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in n2 Q2) (in z3 R)))))
   (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in z3 R) (in n2 Q2))))) /\
   str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in z3 R) (in n2 Q2)))))
     (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.3.2.2.2.2.2.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in n2 Q2) (in z3 R)))))
   (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in z3 R) (in n2 Q2)))))

Subgoal 4.1.3.2.2.2.2.2.2 is:
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in z3 R) (in n2 Q2)))))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.3.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in z3 R) (in n2 Q2)))))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 4.1.3.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q, str_eq
             (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in z3 R) (in n2 Q2)))))
             Q /\
   str_eq Q (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in z3 R)) (in n2 Q2))).
Subgoal 4.1.3.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in z3 R) (in n2 Q2)))))
   (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in z3 R)) (in n2 Q2)))) /\
   str_eq (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in z3 R)) (in n2 Q2))))
     (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.3.2.2.2.2.2.2.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (par (in z3 R) (in n2 Q2)))))
   (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in z3 R)) (in n2 Q2))))

Subgoal 4.1.3.2.2.2.2.2.2.2 is:
 str_eq (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in z3 R)) (in n2 Q2))))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.3.2.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in z3 R)) (in n2 Q2))))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 4.1.3.2.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q, str_eq
             (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in z3 R)) (in n2 Q2))))
             Q /\
   str_eq Q (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists nu (z2\par (nu (z3\par (S n2 z2 n1 z3) (in z3 R))) (in n2 Q2)).
Subgoal 4.1.3.2.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in z3 R)) (in n2 Q2))))
   (nu (z2\par (nu (z3\par (S n2 z2 n1 z3) (in z3 R))) (in n2 Q2))) /\
   str_eq (nu (z2\par (nu (z3\par (S n2 z2 n1 z3) (in z3 R))) (in n2 Q2)))
     (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.3.2.2.2.2.2.2.2.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (par (S n2 z2 n1 z3) (in z3 R)) (in n2 Q2))))
   (nu (z2\par (nu (z3\par (S n2 z2 n1 z3) (in z3 R))) (in n2 Q2)))

Subgoal 4.1.3.2.2.2.2.2.2.2.2 is:
 str_eq (nu (z2\par (nu (z3\par (S n2 z2 n1 z3) (in z3 R))) (in n2 Q2)))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.3.2.2.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\par (nu (z3\par (S n2 z2 n1 z3) (in z3 R))) (in n2 Q2)))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 20.
Subgoal 4.1.3.2.2.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 exists Q, str_eq
             (nu (z2\par (nu (z3\par (S n2 z2 n1 z3) (in z3 R))) (in n2 Q2)))
             Q /\
   str_eq Q (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < exists par (nu (z2\nu (z3\par (S n2 z2 n1 z3) (in z3 R)))) (in n2 Q2).
Subgoal 4.1.3.2.2.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\par (nu (z3\par (S n2 z2 n1 z3) (in z3 R))) (in n2 Q2)))
   (par (nu (z2\nu (z3\par (S n2 z2 n1 z3) (in z3 R)))) (in n2 Q2)) /\
   str_eq (par (nu (z2\nu (z3\par (S n2 z2 n1 z3) (in z3 R)))) (in n2 Q2))
     (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < split.
Subgoal 4.1.3.2.2.2.2.2.2.2.2.1:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\par (nu (z3\par (S n2 z2 n1 z3) (in z3 R))) (in n2 Q2)))
   (par (nu (z2\nu (z3\par (S n2 z2 n1 z3) (in z3 R)))) (in n2 Q2))

Subgoal 4.1.3.2.2.2.2.2.2.2.2.2 is:
 str_eq (par (nu (z2\nu (z3\par (S n2 z2 n1 z3) (in z3 R)))) (in n2 Q2))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.1.3.2.2.2.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (par (nu (z2\nu (z3\par (S n2 z2 n1 z3) (in z3 R)))) (in n2 Q2))
   (par (Q3 n2 n1) (in n2 Q2))

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < unfold 18.
Subgoal 4.1.3.2.2.2.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (in z3 R)))) (Q3 n2 n1)

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < intros.
Subgoal 4.1.3.2.2.2.2.2.2.2.2.2:

Variables: V R Q1 Q2 P1 V1 U1 S W Q3
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H4 : str_eq (par (nu (z4\par (S z4 n2 n1 n3) (in z4 Q2))) (in n3 R))
       (Q1 n2 n1 n3)
H6 : trans V1 Q2 *
H9 : red_db_ker (U1 n4) V (W n4)
H10 : trans (W n4) (Q3 n4)
H11 : str_eq (nu (z2\nu (z7\par (S n4 z2 n1 z7) (in z7 R)))) (Q3 n4 n1)
============================
 str_eq (nu (z2\nu (z3\par (S n2 z2 n1 z3) (in z3 R)))) (Q3 n2 n1)

Subgoal 4.2 is:
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < search.
Subgoal 4.2:

Variables: V R Q1 Q2 P1 V1 U1 S
IH : forall U V P Q R Q1, nabla a b c, trans U P * -> trans V R ->
       red_ker_tensor (out2 b c a) (P b) (Q b a c) ->
       str_eq (par (Q b a c) (in c R)) (Q1 b a c) ->
       (exists W Q2, nabla a1, red_db_ker U V W /\ trans W Q2 /\
            str_eq (nu (z2\nu (Q1 z2 a1))) (Q2 a1))
H2 : trans V R
H4 : str_eq (par (nu (z4\par (P1 z4 n2) (S z4 n2 n1 n3))) (in n3 R))
       (Q1 n2 n1 n3)
H5 : trans (U1 n1) (P1 n1) *
H6 : trans V1 Q2 *
H8 : red_ker_tensor (out2 n2 n3 n1) (in n4 Q2) (S n4 n2 n1 n3)
============================
 exists W Q2, nabla a, red_db_ker (subex U1 V1) V W /\ trans W Q2 /\
   str_eq (nu (z2\nu (Q1 z2 a))) (Q2 a)

lemma_red_db_simulates_red_tensor < case H8.
Proof completed.
Abella < Theorem red_db_simulates_red_tensor : 
forall U P Q1, nabla a, trans U P -> red_tensor (P a) (Q1 a) ->
  (exists V Q2, nabla a, evc_cl red_db U V /\ trans V Q2 /\
       str_eq (Q1 a) (Q2 a)).


============================
 forall U P Q1, nabla a, trans U P -> red_tensor (P a) (Q1 a) ->
   (exists V Q2, nabla a, evc_cl red_db U V /\ trans V Q2 /\
        str_eq (Q1 a) (Q2 a))

red_db_simulates_red_tensor < induction on 1.

IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a) (Q2 a))
============================
 forall U P Q1, nabla a, trans U P @ -> red_tensor (P a) (Q1 a) ->
   (exists V Q2, nabla a, evc_cl red_db U V /\ trans V Q2 /\
        str_eq (Q1 a) (Q2 a))

red_db_simulates_red_tensor < intros.

Variables: U P Q1
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a) (Q2 a))
H1 : trans U P @
H2 : red_tensor (P n1) (Q1 n1)
============================
 exists V Q2, nabla a, evc_cl red_db U V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H1.
Subgoal 1:

Variables: Q1
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H2 : red_tensor (out n2 n1) (Q1 n2 n1)
============================
 exists V Q2, nabla a, evc_cl red_db n2 V /\ trans V Q2 /\
   str_eq (Q1 n2 a) (Q2 a)

Subgoal 2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H2.
Subgoal 2:

Variables: Q1 Q P1 V U1
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H2 : red_tensor (nu (b\nu (x\par (P1 b) (par (out2 b x n1) (in x Q)))))
       (Q1 n1)
H3 : trans U1 P1 *
H4 : trans V Q *
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H2.
Subgoal 2:

Variables: Q P1 V U1 P3
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H5 : red_tensor (nu (x\par (P1 n2) (par (out2 n2 x n1) (in x Q)))) (P3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (P3 a)) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H5.
Subgoal 2:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H6 : red_tensor (par (P1 n2) (par (out2 n2 n3 n1) (in n3 Q))) (P4 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H6.
Subgoal 2.1:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_ker_tensor (P1 n2) (par (out2 n2 n3 n1) (in n3 Q)) (P4 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < apply red_ker_tensor_par_sym to *H7.
Subgoal 2.1:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H8 : red_ker_tensor (par (out2 n2 n3 n1) (in n3 Q)) (P1 n2) (P4 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < apply red_ker_tensor_par_cases to *H8.
Subgoal 2.1:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H9 : (exists T, red_ker_tensor (out2 n2 n3 n1) (P1 n2) T /\
          str_eq (P4 n2 n1 n3) (par T (in n3 Q))) \/
       (exists T, red_ker_tensor (in n3 Q) (P1 n2) T /\
            str_eq (P4 n2 n1 n3) (par (out2 n2 n3 n1) T))
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H9.
Subgoal 2.1.1:

Variables: Q P1 V U1 P4 T
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H10 : red_ker_tensor (out2 n2 n3 n1) (P1 n2) (T n2 n1 n3)
H11 : str_eq (P4 n2 n1 n3) (par (T n2 n1 n3) (in n3 Q))
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.1.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < apply str_eq_sym to H11.
Subgoal 2.1.1:

Variables: Q P1 V U1 P4 T
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H10 : red_ker_tensor (out2 n2 n3 n1) (P1 n2) (T n2 n1 n3)
H11 : str_eq (P4 n2 n1 n3) (par (T n2 n1 n3) (in n3 Q))
H12 : str_eq (par (T n2 n1 n3) (in n3 Q)) (P4 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.1.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < apply lemma_red_db_simulates_red_tensor to H3 H4 H10 H12.
Subgoal 2.1.1:

Variables: Q P1 V U1 P4 T W Q2
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H10 : red_ker_tensor (out2 n2 n3 n1) (P1 n2) (T n2 n1 n3)
H11 : str_eq (P4 n2 n1 n3) (par (T n2 n1 n3) (in n3 Q))
H12 : str_eq (par (T n2 n1 n3) (in n3 Q)) (P4 n2 n1 n3)
H13 : red_db_ker U1 V W
H14 : trans W Q2
H15 : str_eq (nu (z2\nu (z6\P4 z2 n1 z6))) (Q2 n1)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.1.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < search.
Subgoal 2.1.2:

Variables: Q P1 V U1 P4 T
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H10 : red_ker_tensor (in n3 Q) (P1 n2) (T n2 n3 n1)
H11 : str_eq (P4 n2 n1 n3) (par (out2 n2 n3 n1) (T n2 n3 n1))
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < apply red_ker_tensor_in_case to H10.
Subgoal 2.2:

Variables: Q P1 V U1 P5
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_tensor (P1 n2) (P5 n3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < apply red_tensor_no_new_names to H7.
Subgoal 2.2:

Variables: Q P1 V U1 R1
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_tensor (P1 n2) (R1 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (R1 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < apply red_tensor_no_new_names to H7.
Subgoal 2.2:

Variables: Q P1 V U1 R3
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_tensor (P1 n2) (R3 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (R3 z2) (par (out2 z2 z3 a) (in z3 Q))))) (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < apply IH to H3 H7.
Subgoal 2.2:

Variables: Q P1 V U1 R3 V1 Q2
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_tensor (P1 n2) (R3 n2)
H8 : evc_cl red_db U1 V1
H9 : trans V1 Q2
H10 : str_eq (R3 n1) (Q2 n1)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (R3 z2) (par (out2 z2 z3 a) (in z3 Q))))) (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < search.
Subgoal 2.3:

Variables: Q P1 V U1 Q3
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_tensor (par (out2 n2 n3 n1) (in n3 Q)) (Q3 n3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H7.
Subgoal 2.3.1:

Variables: Q P1 V U1 Q3
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H8 : red_ker_tensor (out2 n2 n3 n1) (in n3 Q) (Q3 n3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 2.3.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (P5 z2 a z3) (in z3 Q))))) (Q2 a)

Subgoal 2.3.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (out2 z2 z3 a) (Q4 z2 a z3)))))
     (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H8.
Subgoal 2.3.2:

Variables: Q P1 V U1 P5
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H8 : red_tensor (out2 n2 n3 n1) (P5 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (P5 z2 a z3) (in z3 Q))))) (Q2 a)

Subgoal 2.3.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (out2 z2 z3 a) (Q4 z2 a z3)))))
     (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H8.
Subgoal 2.3.3:

Variables: Q P1 V U1 Q4
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H8 : red_tensor (in n3 Q) (Q4 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_db (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (out2 z2 z3 a) (Q4 z2 a z3)))))
     (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H8.
Subgoal 3:

Variables: Q1 P1 U1
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H2 : red_tensor (in2 n1 P1) (Q1 n1)
H3 : trans (U1 n1) (P1 n1) *
============================
 exists V Q2, nabla a, evc_cl red_db (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H2.
Subgoal 4:

Variables: Q1 Q P1 V U1
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H2 : red_tensor (nu (x\par (P1 x n1) (in x Q))) (Q1 n1)
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
============================
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_db_simulates_red_tensor < case H2.
Subgoal 4:

Variables: Q P1 V U1 P3
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H5 : red_tensor (par (P1 n2 n1) (in n2 Q)) (P3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (P3 a)) (Q2 a)

red_db_simulates_red_tensor < case H5.
Subgoal 4.1:

Variables: Q P1 V U1 P3
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H6 : red_ker_tensor (P1 n2 n1) (in n2 Q) (P3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (P3 a)) (Q2 a)

Subgoal 4.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P4 z2 a) (in z2 Q))) (Q2 a)

Subgoal 4.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_db_simulates_red_tensor < apply red_ker_tensor_par_sym to *H6.
Subgoal 4.1:

Variables: Q P1 V U1 P3
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H7 : red_ker_tensor (in n2 Q) (P1 n2 n1) (P3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (P3 a)) (Q2 a)

Subgoal 4.2 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P4 z2 a) (in z2 Q))) (Q2 a)

Subgoal 4.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_db_simulates_red_tensor < apply red_ker_tensor_in_case to H7.
Subgoal 4.2:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H6 : red_tensor (P1 n2 n1) (P4 n2 n1)
============================
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P4 z2 a) (in z2 Q))) (Q2 a)

Subgoal 4.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_db_simulates_red_tensor < apply IH to H3 _.
Subgoal 4.2:

Variables: Q P1 V U1 P4 V1 Q2
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H6 : red_tensor (P1 n2 n1) (P4 n2 n1)
H7 : evc_cl red_db (U1 n1) (V1 n1)
H8 : trans (V1 n1) (Q2 n1)
H9 : str_eq (P4 n1 n2) (Q2 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P4 z2 a) (in z2 Q))) (Q2 a)

Subgoal 4.3 is:
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_db_simulates_red_tensor < search.
Subgoal 4.3:

Variables: Q P1 V U1 Q3
IH : forall U P Q1, nabla a, trans U P * -> red_tensor (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_db U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H6 : red_tensor (in n2 Q) (Q3 n2 n1)
============================
 exists V1 Q2, nabla a, evc_cl red_db (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_db_simulates_red_tensor < case H6.
Proof completed.
Abella < Theorem lemma_red_ls_simulates_red_exp : 
forall P Q R1 U V, nabla x y, trans (U x) (P x) -> trans V Q ->
  red_ker_exp (P y x) (in y Q) (R1 y x) ->
  (exists W R2, nabla x y, red_ls_ker V U W /\ trans (W y) (R2 y) /\
       str_eq (R1 y x) (par (R2 y x) (in y Q))).


============================
 forall P Q R1 U V, nabla x y, trans (U x) (P x) -> trans V Q ->
   red_ker_exp (P y x) (in y Q) (R1 y x) ->
   (exists W R2, nabla x y, red_ls_ker V U W /\ trans (W y) (R2 y) /\
        str_eq (R1 y x) (par (R2 y x) (in y Q)))

lemma_red_ls_simulates_red_exp < induction on 1.

IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x y, red_ls_ker V U W /\ trans (W y) (R2 y) /\
            str_eq (R1 y x) (par (R2 y x) (in y Q)))
============================
 forall P Q R1 U V, nabla x y, trans (U x) (P x) @ -> trans V Q ->
   red_ker_exp (P y x) (in y Q) (R1 y x) ->
   (exists W R2, nabla x y, red_ls_ker V U W /\ trans (W y) (R2 y) /\
        str_eq (R1 y x) (par (R2 y x) (in y Q)))

lemma_red_ls_simulates_red_exp < intros.

Variables: P Q R1 U V
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x y, red_ls_ker V U W /\ trans (W y) (R2 y) /\
            str_eq (R1 y x) (par (R2 y x) (in y Q)))
H1 : trans (U n1) (P n1) @
H2 : trans V Q
H3 : red_ker_exp (P n2 n1) (in n2 Q) (R1 n2 n1)
============================
 exists W R2, nabla x y, red_ls_ker V U W /\ trans (W y) (R2 y) /\
   str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H1.
Subgoal 1:

Variables: Q R1 V
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans (V n3) (Q n3)
H3 : red_ker_exp (out n3 n1) (in n2 (Q n3)) (R1 n3 n2 n1)
============================
 exists W R2, nabla x y, red_ls_ker (V n3) z2\n3 W /\ trans (W y) (R2 y) /\
   str_eq (R1 n3 y x) (par (R2 y x) (in y (Q n3)))

Subgoal 2 is:
 exists W R2, nabla x y, red_ls_ker V z1\z1 W /\ trans (W y) (R2 y) /\
   str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 3 is:
 exists W R2, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H3.
Subgoal 2:

Variables: Q R1 V
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H3 : red_ker_exp (out n2 n1) (in n2 Q) (R1 n2 n1)
============================
 exists W R2, nabla x y, red_ls_ker V z1\z1 W /\ trans (W y) (R2 y) /\
   str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 3 is:
 exists W R2, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H3.
Subgoal 2:

Variables: Q V
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
============================
 exists W R2, nabla x y, red_ls_ker V z1\z1 W /\ trans (W y) (R2 y) /\
   str_eq (par (Q x) (in y Q)) (par (R2 y x) (in y Q))

Subgoal 3 is:
 exists W R2, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 3:

Variables: Q R1 V Q1 P1 V1 U1
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H3 : red_ker_exp
       (nu (b\nu (x\par (P1 n2 b) (par (out2 b x n1) (in x (Q1 n2))))))
       (in n2 Q) (R1 n2 n1)
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
============================
 exists W R2, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H3.
Subgoal 3:

Variables: Q V Q1 P1 V1 U1 R
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H6 : red_ker_exp (nu (x\par (P1 n2 n3) (par (out2 n3 x n1) (in x (Q1 n2)))))
       (in n2 Q) (R n1 n2 n3)
============================
 exists W R2, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (nu (R x y)) (par (R2 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H6.
Subgoal 3:

Variables: Q V Q1 P1 V1 U1 R2
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (par (P1 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
       (in n2 Q) (R2 n3 n2 n1 n4)
============================
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (R2 z3 y x))) (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H7.
Subgoal 3.1:

Variables: Q V Q1 P1 V1 U1 S
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S n4 n1 n2 n3)
============================
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq
     (nu (z3\nu (z4\par (S z4 x y z3) (par (out2 z3 z4 x) (in z4 (Q1 y))))))
     (par (R1 y x) (in y Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < apply red_ker_exp_no_new_names to H8.
Subgoal 3.1:

Variables: Q V Q1 P1 V1 U1 S2
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S2 n1 n2 n3)
============================
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq
     (nu (z3\nu (z4\par (S2 x y z3) (par (out2 z3 z4 x) (in z4 (Q1 y))))))
     (par (R1 y x) (in y Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < apply red_ker_exp_no_new_names to H8.
Subgoal 3.1:

Variables: Q V Q1 P1 V1 U1 S4
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S4 n2 n3)
============================
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (S4 y z3) (par (out2 z3 z4 x) (in z4 (Q1 y))))))
     (par (R1 y x) (in y Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < apply IH to H4 H2 _.
Subgoal 3.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S4 n2 n3)
H9 : red_ls_ker V (z2\U1 z2) W
H10 : trans (W n2) (R3 n2)
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (S4 y z3) (par (out2 z3 z4 x) (in z4 (Q1 y))))))
     (par (R1 y x) (in y Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists z1\app (W z1) (V1 z1).
Subgoal 3.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S4 n2 n3)
H9 : red_ls_ker V (z2\U1 z2) W
H10 : trans (W n2) (R3 n2)
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 exists R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1))
                         (z1\app (W z1) (V1 z1)) /\
   trans (app (W y) (V1 y)) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (S4 y z3) (par (out2 z3 z4 x) (in z4 (Q1 y))))))
     (par (R1 y x) (in y Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists y\a\nu (b\nu (x1\par (R3 y b) (par (out2 b x1 a) (in x1 (Q1 y))))).
Subgoal 3.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S4 n2 n3)
H9 : red_ls_ker V (z2\U1 z2) W
H10 : trans (W n2) (R3 n2)
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) (z1\app (W z1) (V1 z1)) /\
   trans (app (W y) (V1 y))
     (a\nu (b\nu (x1\par (R3 y b) (par (out2 b x1 a) (in x1 (Q1 y)))))) /\
   str_eq (nu (z3\nu (z4\par (S4 y z3) (par (out2 z3 z4 x) (in z4 (Q1 y))))))
     (par (nu (b\nu (x1\par (R3 y b) (par (out2 b x1 x) (in x1 (Q1 y))))))
        (in y Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < intros.
Subgoal 3.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S4 n2 n3)
H9 : red_ls_ker V (z2\U1 z2) W
H10 : trans (W n2) (R3 n2)
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 red_ls_ker V (z1\app (U1 z1) (V1 z1)) (z1\app (W z1) (V1 z1)) /\
   trans (app (W n2) (V1 n2))
     (a\nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 a) (in x1 (Q1 n2)))))) /\
   str_eq
     (nu (z3\nu (z4\par (S4 n2 z3) (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
     (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
        (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 3.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S4 n2 n3)
H9 : red_ls_ker V (z2\U1 z2) W
H10 : trans (W n2) (R3 n2)
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 red_ls_ker V (z1\app (U1 z1) (V1 z1)) (z1\app (W z1) (V1 z1))

Subgoal 3.1.2 is:
 trans (app (W n2) (V1 n2))
   (a\nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 a) (in x1 (Q1 n2))))))

Subgoal 3.1.3 is:
 str_eq
   (nu (z3\nu (z4\par (S4 n2 z3) (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 3.1.2:

Variables: Q V Q1 P1 V1 U1 S4 W R3
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S4 n2 n3)
H9 : red_ls_ker V (z2\U1 z2) W
H10 : trans (W n2) (R3 n2)
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 trans (app (W n2) (V1 n2))
   (a\nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 a) (in x1 (Q1 n2))))))

Subgoal 3.1.3 is:
 str_eq
   (nu (z3\nu (z4\par (S4 n2 z3) (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 3.1.3:

Variables: Q V Q1 P1 V1 U1 S4 W R3
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (P1 n2 n3) (in n2 Q) (S4 n2 n3)
H9 : red_ls_ker V (z2\U1 z2) W
H10 : trans (W n2) (R3 n2)
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (nu (z3\nu (z4\par (S4 n2 z3) (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < clear IH H2 H4 H5 H8 H9 H10.
Subgoal 3.1.3:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (nu (z3\nu (z4\par (S4 n2 z3) (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 20.
Subgoal 3.1.3:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 exists Q2, str_eq
              (nu
                 (z3\nu
                       (z4\par (S4 n2 z3)
                             (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
              Q2 /\
   str_eq Q2
     (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
        (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists nu
  (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
       (in n2 Q)).
Subgoal 3.1.3:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (nu (z3\nu (z4\par (S4 n2 z3) (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q))) /\
   str_eq
     (nu
        (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
             (in n2 Q)))
     (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
        (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 3.1.3.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (nu (z3\nu (z4\par (S4 n2 z3) (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 20.
Subgoal 3.1.3.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 exists Q2, str_eq
              (nu
                 (z3\nu
                       (z4\par (S4 n2 z3)
                             (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
              Q2 /\
   str_eq Q2
     (nu
        (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
             (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists nu
  (b\nu
       (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))) (in n2 Q))).
Subgoal 3.1.3.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (nu (z3\nu (z4\par (S4 n2 z3) (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q)))) /\
   str_eq
     (nu
        (b\nu
             (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                   (in n2 Q))))
     (nu
        (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
             (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 3.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (nu (z3\nu (z4\par (S4 n2 z3) (par (out2 z3 z4 n1) (in z4 (Q1 n2))))))
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 17.
Subgoal 3.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 nabla x, str_eq (nu (z4\par (S4 n2 x) (par (out2 x z4 n1) (in z4 (Q1 n2)))))
            (nu
               (x1\par (par (R3 n2 x) (par (out2 x x1 n1) (in x1 (Q1 n2))))
                     (in n2 Q)))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < intros.
Subgoal 3.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq (nu (z4\par (S4 n2 n3) (par (out2 n3 z4 n1) (in z4 (Q1 n2)))))
   (nu
      (x1\par (par (R3 n2 n3) (par (out2 n3 x1 n1) (in x1 (Q1 n2))))
            (in n2 Q)))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 17.
Subgoal 3.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 nabla x, str_eq (par (S4 n2 n3) (par (out2 n3 x n1) (in x (Q1 n2))))
            (par (par (R3 n2 n3) (par (out2 n3 x n1) (in x (Q1 n2))))
               (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < intros.
Subgoal 3.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 20.
Subgoal 3.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 exists Q2, str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) Q2 /\
   str_eq Q2
     (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)).
Subgoal 3.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q))) /\
   str_eq
     (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
     (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 3.1.3.1.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 20.
Subgoal 3.1.3.1.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 exists Q2, str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) Q2 /\
   str_eq Q2
     (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))).
Subgoal 3.1.3.1.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))) /\
   str_eq
     (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
     (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 3.1.3.1.1.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))

Subgoal 3.1.3.1.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 20.
Subgoal 3.1.3.1.1.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 exists Q2, str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) Q2 /\
   str_eq Q2
     (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))

Subgoal 3.1.3.1.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists par (par (R3 n2 n3) (in n2 Q)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))).
Subgoal 3.1.3.1.1.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (par (R3 n2 n3) (in n2 Q)) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) /\
   str_eq
     (par (par (R3 n2 n3) (in n2 Q)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
     (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))

Subgoal 3.1.3.1.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 3.1.3.1.1.1.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq (par (S4 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (par (R3 n2 n3) (in n2 Q)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))

Subgoal 3.1.3.1.1.1.1.2 is:
 str_eq
   (par (par (R3 n2 n3) (in n2 Q)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))

Subgoal 3.1.3.1.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 18.
Subgoal 3.1.3.1.1.1.1.1:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq (S4 n2 n3) (par (R3 n2 n3) (in n2 Q))

Subgoal 3.1.3.1.1.1.1.2 is:
 str_eq
   (par (par (R3 n2 n3) (in n2 Q)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))

Subgoal 3.1.3.1.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 3.1.3.1.1.1.1.2:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (par (par (R3 n2 n3) (in n2 Q)) (par (out2 n3 n4 n1) (in n4 (Q1 n2))))
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))

Subgoal 3.1.3.1.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 3.1.3.1.1.1.2:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (par (R3 n2 n3) (par (in n2 Q) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))))
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))

Subgoal 3.1.3.1.1.2 is:
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 3.1.3.1.1.2:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (par (R3 n2 n3) (par (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)))
   (par (par (R3 n2 n3) (par (out2 n3 n4 n1) (in n4 (Q1 n2)))) (in n2 Q))

Subgoal 3.1.3.1.2 is:
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 3.1.3.1.2:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (nu
      (b\nu
           (x1\par (par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))
                 (in n2 Q))))
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))

Subgoal 3.1.3.2 is:
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 3.1.3.2:

Variables: Q V Q1 P1 V1 U1 S4 W R3
H11 : str_eq (S4 n2 n1) (par (R3 n2 n1) (in n2 Q))
============================
 str_eq
   (nu
      (b\par (nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2)))))
           (in n2 Q)))
   (par (nu (b\nu (x1\par (R3 n2 b) (par (out2 b x1 n1) (in x1 (Q1 n2))))))
      (in n2 Q))

Subgoal 3.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 3.2:

Variables: Q V Q1 P1 V1 U1 S
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H8 : red_ker_exp (par (out2 n3 n4 n1) (in n4 (Q1 n2))) (in n2 Q)
       (S n4 n1 n2 n3)
============================
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (S z4 x y z3))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H8.
Subgoal 3.2.1:

Variables: Q V Q1 P1 V1 U1 S1
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H9 : red_ker_exp (out2 n3 n4 n1) (in n2 Q) (S1 n3 n2 n1 n4)
============================
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (par (S1 z3 y x z4) (in z4 (Q1 y))))))
     (par (R1 y x) (in y Q))

Subgoal 3.2.2 is:
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (par (out2 z3 z4 x) (S1 z3 y x z4)))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H9.
Subgoal 3.2.2:

Variables: Q V Q1 P1 V1 U1 S1
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1) (P1 n1) *
H5 : trans (V1 n1) (Q1 n1) *
H9 : red_ker_exp (in n4 (Q1 n2)) (in n2 Q) (S1 n3 n2 n1 n4)
============================
 exists W R1, nabla x y, red_ls_ker V (z1\app (U1 z1) (V1 z1)) W /\
   trans (W y) (R1 y) /\
   str_eq (nu (z3\nu (z4\par (P1 y z3) (par (out2 z3 z4 x) (S1 z3 y x z4)))))
     (par (R1 y x) (in y Q))

Subgoal 4 is:
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H9.
Subgoal 4:

Variables: Q R1 V P1 U1
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H3 : red_ker_exp (in2 n1 (P1 n2)) (in n2 Q) (R1 n2 n1)
H4 : trans (U1 n1 n2) (P1 n1 n2) *
============================
 exists W R2, nabla x y, red_ls_ker V (z1\abs (U1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

Subgoal 5 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H3.
Subgoal 5:

Variables: Q R1 V Q1 P1 V1 U1
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H3 : red_ker_exp (nu (x\par (P1 n2 x n1) (in x (Q1 n2)))) (in n2 Q)
       (R1 n2 n1)
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
============================
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (R1 y x) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H3.
Subgoal 5:

Variables: Q V Q1 P1 V1 U1 R
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H6 : red_ker_exp (par (P1 n2 n3 n1) (in n3 (Q1 n2))) (in n2 Q) (R n1 n2 n3)
============================
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\ str_eq (nu (R x y)) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H6.
Subgoal 5.1:

Variables: Q V Q1 P1 V1 U1 S
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (P1 n2 n3 n1) (in n2 Q) (S n3 n2 n1)
============================
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (S z3 y x) (in z3 (Q1 y)))) (par (R2 y x) (in y Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < apply IH to H4 H2 _.
Subgoal 5.1:

Variables: Q V Q1 P1 V1 U1 S W R2
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (P1 n2 n3 n1) (in n2 Q) (S n3 n2 n1)
H8 : red_ls_ker V (z3\U1 z3 n2) (W n2)
H9 : trans (W n2 n3) (R2 n2 n3)
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (S z3 y x) (in z3 (Q1 y)))) (par (R2 y x) (in y Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists z1\subex (z2\W z2 z1) (V1 z1).
Subgoal 5.1:

Variables: Q V Q1 P1 V1 U1 S W R2
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (P1 n2 n3 n1) (in n2 Q) (S n3 n2 n1)
H8 : red_ls_ker V (z3\U1 z3 n2) (W n2)
H9 : trans (W n2 n3) (R2 n2 n3)
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 exists R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1))
                         (z1\subex (z2\W z2 z1) (V1 z1)) /\
   trans (subex (z2\W z2 y) (V1 y)) (R2 y) /\
   str_eq (nu (z3\par (S z3 y x) (in z3 (Q1 y)))) (par (R2 y x) (in y Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists y\a\nu (x\par (R2 x y a) (in x (Q1 y))).
Subgoal 5.1:

Variables: Q V Q1 P1 V1 U1 S W R2
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (P1 n2 n3 n1) (in n2 Q) (S n3 n2 n1)
H8 : red_ls_ker V (z3\U1 z3 n2) (W n2)
H9 : trans (W n2 n3) (R2 n2 n3)
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1))
              (z1\subex (z2\W z2 z1) (V1 z1)) /\
   trans (subex (z2\W z2 y) (V1 y)) (a\nu (x\par (R2 x y a) (in x (Q1 y)))) /\
   str_eq (nu (z3\par (S z3 y x) (in z3 (Q1 y))))
     (par (nu (x1\par (R2 x1 y x) (in x1 (Q1 y)))) (in y Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < intros.
Subgoal 5.1:

Variables: Q V Q1 P1 V1 U1 S W R2
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (P1 n2 n3 n1) (in n2 Q) (S n3 n2 n1)
H8 : red_ls_ker V (z3\U1 z3 n2) (W n2)
H9 : trans (W n2 n3) (R2 n2 n3)
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 red_ls_ker V (z1\subex (U1 z1) (V1 z1)) (z1\subex (z2\W z2 z1) (V1 z1)) /\
   trans (subex (z2\W z2 n2) (V1 n2))
     (a\nu (x\par (R2 x n2 a) (in x (Q1 n2)))) /\
   str_eq (nu (z3\par (S z3 n2 n1) (in z3 (Q1 n2))))
     (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 5.1.1:

Variables: Q V Q1 P1 V1 U1 S W R2
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (P1 n2 n3 n1) (in n2 Q) (S n3 n2 n1)
H8 : red_ls_ker V (z3\U1 z3 n2) (W n2)
H9 : trans (W n2 n3) (R2 n2 n3)
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 red_ls_ker V (z1\subex (U1 z1) (V1 z1)) (z1\subex (z2\W z2 z1) (V1 z1))

Subgoal 5.1.2 is:
 trans (subex (z2\W z2 n2) (V1 n2)) (a\nu (x\par (R2 x n2 a) (in x (Q1 n2))))

Subgoal 5.1.3 is:
 str_eq (nu (z3\par (S z3 n2 n1) (in z3 (Q1 n2))))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 5.1.2:

Variables: Q V Q1 P1 V1 U1 S W R2
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (P1 n2 n3 n1) (in n2 Q) (S n3 n2 n1)
H8 : red_ls_ker V (z3\U1 z3 n2) (W n2)
H9 : trans (W n2 n3) (R2 n2 n3)
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 trans (subex (z2\W z2 n2) (V1 n2)) (a\nu (x\par (R2 x n2 a) (in x (Q1 n2))))

Subgoal 5.1.3 is:
 str_eq (nu (z3\par (S z3 n2 n1) (in z3 (Q1 n2))))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 5.1.3:

Variables: Q V Q1 P1 V1 U1 S W R2
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (P1 n2 n3 n1) (in n2 Q) (S n3 n2 n1)
H8 : red_ls_ker V (z3\U1 z3 n2) (W n2)
H9 : trans (W n2 n3) (R2 n2 n3)
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (nu (z3\par (S z3 n2 n1) (in z3 (Q1 n2))))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < clear IH H2 H4 H5 H7 H8 H9.
Subgoal 5.1.3:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (nu (z3\par (S z3 n2 n1) (in z3 (Q1 n2))))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 20.
Subgoal 5.1.3:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 exists Q2, str_eq (nu (z3\par (S z3 n2 n1) (in z3 (Q1 n2)))) Q2 /\
   str_eq Q2 (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)).
Subgoal 5.1.3:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (nu (z3\par (S z3 n2 n1) (in z3 (Q1 n2))))
   (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q))) /\
   str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
     (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 5.1.3.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (nu (z3\par (S z3 n2 n1) (in z3 (Q1 n2))))
   (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 17.
Subgoal 5.1.3.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 nabla x, str_eq (par (S x n2 n1) (in x (Q1 n2)))
            (par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < intros.
Subgoal 5.1.3.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (S n3 n2 n1) (in n3 (Q1 n2)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 20.
Subgoal 5.1.3.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 exists Q2, str_eq (par (S n3 n2 n1) (in n3 (Q1 n2))) Q2 /\
   str_eq Q2 (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)).
Subgoal 5.1.3.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (S n3 n2 n1) (in n3 (Q1 n2)))
   (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q))) /\
   str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
     (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 5.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (S n3 n2 n1) (in n3 (Q1 n2)))
   (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 20.
Subgoal 5.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 exists Q2, str_eq (par (S n3 n2 n1) (in n3 (Q1 n2))) Q2 /\
   str_eq Q2 (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))).
Subgoal 5.1.3.1.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (S n3 n2 n1) (in n3 (Q1 n2)))
   (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2)))) /\
   str_eq (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))
     (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 5.1.3.1.1.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (S n3 n2 n1) (in n3 (Q1 n2)))
   (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))

Subgoal 5.1.3.1.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))
   (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 20.
Subgoal 5.1.3.1.1.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 exists Q2, str_eq (par (S n3 n2 n1) (in n3 (Q1 n2))) Q2 /\
   str_eq Q2 (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))

Subgoal 5.1.3.1.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))
   (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < exists par (par (R2 n3 n2 n1) (in n2 Q)) (in n3 (Q1 n2)).
Subgoal 5.1.3.1.1.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (S n3 n2 n1) (in n3 (Q1 n2)))
   (par (par (R2 n3 n2 n1) (in n2 Q)) (in n3 (Q1 n2))) /\
   str_eq (par (par (R2 n3 n2 n1) (in n2 Q)) (in n3 (Q1 n2)))
     (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))

Subgoal 5.1.3.1.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))
   (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < split.
Subgoal 5.1.3.1.1.1.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (S n3 n2 n1) (in n3 (Q1 n2)))
   (par (par (R2 n3 n2 n1) (in n2 Q)) (in n3 (Q1 n2)))

Subgoal 5.1.3.1.1.1.2 is:
 str_eq (par (par (R2 n3 n2 n1) (in n2 Q)) (in n3 (Q1 n2)))
   (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))

Subgoal 5.1.3.1.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))
   (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < unfold 18.
Subgoal 5.1.3.1.1.1.1:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (S n3 n2 n1) (par (R2 n3 n2 n1) (in n2 Q))

Subgoal 5.1.3.1.1.1.2 is:
 str_eq (par (par (R2 n3 n2 n1) (in n2 Q)) (in n3 (Q1 n2)))
   (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))

Subgoal 5.1.3.1.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))
   (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 5.1.3.1.1.1.2:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (par (R2 n3 n2 n1) (in n2 Q)) (in n3 (Q1 n2)))
   (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))

Subgoal 5.1.3.1.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))
   (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 5.1.3.1.1.2:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (R2 n3 n2 n1) (par (in n2 Q) (in n3 (Q1 n2))))
   (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))

Subgoal 5.1.3.1.2 is:
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 5.1.3.1.2:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (par (R2 n3 n2 n1) (par (in n3 (Q1 n2)) (in n2 Q)))
   (par (par (R2 n3 n2 n1) (in n3 (Q1 n2))) (in n2 Q))

Subgoal 5.1.3.2 is:
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 5.1.3.2:

Variables: Q V Q1 P1 V1 U1 S W R2
H10 : str_eq (S n2 n3 n1) (par (R2 n2 n3 n1) (in n3 Q))
============================
 str_eq (nu (x\par (par (R2 x n2 n1) (in x (Q1 n2))) (in n2 Q)))
   (par (nu (x\par (R2 x n2 n1) (in x (Q1 n2)))) (in n2 Q))

Subgoal 5.2 is:
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < search.
Subgoal 5.2:

Variables: Q V Q1 P1 V1 U1 S
IH : forall P Q R1 U V, nabla x y, trans (U x) (P x) * -> trans V Q ->
       red_ker_exp (P y x) (in y Q) (R1 y x) ->
       (exists W R2, nabla x1 y1, red_ls_ker V U W /\ trans (W y1) (R2 y1) /\
            str_eq (R1 y1 x1) (par (R2 y1 x1) (in y1 Q)))
H2 : trans V Q
H4 : trans (U1 n1 n2) (P1 n1 n2) *
H5 : trans (V1 n1) (Q1 n1) *
H7 : red_ker_exp (in n3 (Q1 n2)) (in n2 Q) (S n3 n2 n1)
============================
 exists W R2, nabla x y, red_ls_ker V (z1\subex (U1 z1) (V1 z1)) W /\
   trans (W y) (R2 y) /\
   str_eq (nu (z3\par (P1 y z3 x) (S z3 y x))) (par (R2 y x) (in y Q))

lemma_red_ls_simulates_red_exp < case H7.
Proof completed.
Abella < Theorem red_ls_simulates_red_exp : 
forall U P Q1, nabla a, trans U P -> red_exp (P a) (Q1 a) ->
  (exists V Q2, nabla a, evc_cl red_ls U V /\ trans V Q2 /\
       str_eq (Q1 a) (Q2 a)).


============================
 forall U P Q1, nabla a, trans U P -> red_exp (P a) (Q1 a) ->
   (exists V Q2, nabla a, evc_cl red_ls U V /\ trans V Q2 /\
        str_eq (Q1 a) (Q2 a))

red_ls_simulates_red_exp < induction on 1.

IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a) (Q2 a))
============================
 forall U P Q1, nabla a, trans U P @ -> red_exp (P a) (Q1 a) ->
   (exists V Q2, nabla a, evc_cl red_ls U V /\ trans V Q2 /\
        str_eq (Q1 a) (Q2 a))

red_ls_simulates_red_exp < intros.

Variables: U P Q1
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a) (Q2 a))
H1 : trans U P @
H2 : red_exp (P n1) (Q1 n1)
============================
 exists V Q2, nabla a, evc_cl red_ls U V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H1.
Subgoal 1:

Variables: Q1
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H2 : red_exp (out n2 n1) (Q1 n2 n1)
============================
 exists V Q2, nabla a, evc_cl red_ls n2 V /\ trans V Q2 /\
   str_eq (Q1 n2 a) (Q2 a)

Subgoal 2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H2.
Subgoal 2:

Variables: Q1 Q P1 V U1
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H2 : red_exp (nu (b\nu (x\par (P1 b) (par (out2 b x n1) (in x Q))))) (Q1 n1)
H3 : trans U1 P1 *
H4 : trans V Q *
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H2.
Subgoal 2:

Variables: Q P1 V U1 P3
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H5 : red_exp (nu (x\par (P1 n2) (par (out2 n2 x n1) (in x Q)))) (P3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (P3 a)) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H5.
Subgoal 2:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H6 : red_exp (par (P1 n2) (par (out2 n2 n3 n1) (in n3 Q))) (P4 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H6.
Subgoal 2.1:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_ker_exp (P1 n2) (par (out2 n2 n3 n1) (in n3 Q)) (P4 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < apply red_ker_exp_par_sym to *H7.
Subgoal 2.1:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H8 : red_ker_exp (par (out2 n2 n3 n1) (in n3 Q)) (P1 n2) (P4 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < apply red_ker_exp_par_cases to *H8.
Subgoal 2.1:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H9 : (exists T, red_ker_exp (out2 n2 n3 n1) (P1 n2) T /\
          str_eq (P4 n2 n1 n3) (par T (in n3 Q))) \/
       (exists T, red_ker_exp (in n3 Q) (P1 n2) T /\
            str_eq (P4 n2 n1 n3) (par (out2 n2 n3 n1) T))
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H9.
Subgoal 2.1.1:

Variables: Q P1 V U1 P4 T
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H10 : red_ker_exp (out2 n2 n3 n1) (P1 n2) (T n2 n1 n3)
H11 : str_eq (P4 n2 n1 n3) (par (T n2 n1 n3) (in n3 Q))
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.1.2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < apply red_ker_exp_out2_case to H10.
Subgoal 2.1.2:

Variables: Q P1 V U1 P4 T
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H10 : red_ker_exp (in n3 Q) (P1 n2) (T n2 n3 n1)
H11 : str_eq (P4 n2 n1 n3) (par (out2 n2 n3 n1) (T n2 n3 n1))
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (P4 z2 a))) (Q2 a)

Subgoal 2.2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < apply red_ker_exp_in_no_com_case to H10.
Subgoal 2.2:

Variables: Q P1 V U1 P5
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_exp (P1 n2) (P5 n3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P5 z3 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < apply red_exp_no_new_names to H7.
Subgoal 2.2:

Variables: Q P1 V U1 R1
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_exp (P1 n2) (R1 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (R1 a z2) (par (out2 z2 z3 a) (in z3 Q)))))
     (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < apply red_exp_no_new_names to H7.
Subgoal 2.2:

Variables: Q P1 V U1 R3
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_exp (P1 n2) (R3 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (R3 z2) (par (out2 z2 z3 a) (in z3 Q))))) (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < apply IH to H3 H7.
Subgoal 2.2:

Variables: Q P1 V U1 R3 V1 Q2
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_exp (P1 n2) (R3 n2)
H8 : evc_cl red_ls U1 V1
H9 : trans V1 Q2
H10 : str_eq (R3 n1) (Q2 n1)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (R3 z2) (par (out2 z2 z3 a) (in z3 Q))))) (Q2 a)

Subgoal 2.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < search.
Subgoal 2.3:

Variables: Q P1 V U1 Q3
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H7 : red_exp (par (out2 n2 n3 n1) (in n3 Q)) (Q3 n3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H7.
Subgoal 2.3.1:

Variables: Q P1 V U1 Q3
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H8 : red_ker_exp (out2 n2 n3 n1) (in n3 Q) (Q3 n3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (Q3 z3 a z2)))) (Q2 a)

Subgoal 2.3.2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (P5 z2 a z3) (in z3 Q))))) (Q2 a)

Subgoal 2.3.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (out2 z2 z3 a) (Q4 z2 a z3)))))
     (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H8.
Subgoal 2.3.2:

Variables: Q P1 V U1 P5
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H8 : red_exp (out2 n2 n3 n1) (P5 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (P5 z2 a z3) (in z3 Q))))) (Q2 a)

Subgoal 2.3.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (out2 z2 z3 a) (Q4 z2 a z3)))))
     (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H8.
Subgoal 2.3.3:

Variables: Q P1 V U1 Q4
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans U1 P1 *
H4 : trans V Q *
H8 : red_exp (in n3 Q) (Q4 n2 n1 n3)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (app U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\nu (z3\par (P1 z2) (par (out2 z2 z3 a) (Q4 z2 a z3)))))
     (Q2 a)

Subgoal 3 is:
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H8.
Subgoal 3:

Variables: Q1 P1 U1
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H2 : red_exp (in2 n1 P1) (Q1 n1)
H3 : trans (U1 n1) (P1 n1) *
============================
 exists V Q2, nabla a, evc_cl red_ls (abs U1) V /\ trans V Q2 /\
   str_eq (Q1 a) (Q2 a)

Subgoal 4 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H2.
Subgoal 4:

Variables: Q1 Q P1 V U1
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H2 : red_exp (nu (x\par (P1 x n1) (in x Q))) (Q1 n1)
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
============================
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (Q1 a) (Q2 a)

red_ls_simulates_red_exp < case H2.
Subgoal 4:

Variables: Q P1 V U1 P3
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H5 : red_exp (par (P1 n2 n1) (in n2 Q)) (P3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (P3 a)) (Q2 a)

red_ls_simulates_red_exp < case H5.
Subgoal 4.1:

Variables: Q P1 V U1 P3
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H6 : red_ker_exp (P1 n2 n1) (in n2 Q) (P3 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (P3 a)) (Q2 a)

Subgoal 4.2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P4 z2 a) (in z2 Q))) (Q2 a)

Subgoal 4.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_ls_simulates_red_exp < apply lemma_red_ls_simulates_red_exp to H3 H4 H6.
Subgoal 4.1:

Variables: Q P1 V U1 P3 W R2
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H6 : red_ker_exp (P1 n2 n1) (in n2 Q) (P3 n1 n2)
H7 : red_ls_ker V (z3\U1 z3) W
H8 : trans (W n2) (R2 n2)
H9 : str_eq (P3 n1 n2) (par (R2 n2 n1) (in n2 Q))
============================
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (P3 a)) (Q2 a)

Subgoal 4.2 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P4 z2 a) (in z2 Q))) (Q2 a)

Subgoal 4.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_ls_simulates_red_exp < search.
Subgoal 4.2:

Variables: Q P1 V U1 P4
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H6 : red_exp (P1 n2 n1) (P4 n2 n1)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P4 z2 a) (in z2 Q))) (Q2 a)

Subgoal 4.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_ls_simulates_red_exp < apply IH to H3 _.
Subgoal 4.2:

Variables: Q P1 V U1 P4 V1 Q2
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H6 : red_exp (P1 n2 n1) (P4 n2 n1)
H7 : evc_cl red_ls (U1 n1) (V1 n1)
H8 : trans (V1 n1) (Q2 n1)
H9 : str_eq (P4 n1 n2) (Q2 n1 n2)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P4 z2 a) (in z2 Q))) (Q2 a)

Subgoal 4.3 is:
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_ls_simulates_red_exp < search.
Subgoal 4.3:

Variables: Q P1 V U1 Q3
IH : forall U P Q1, nabla a, trans U P * -> red_exp (P a) (Q1 a) ->
       (exists V Q2, nabla a1, evc_cl red_ls U V /\ trans V Q2 /\
            str_eq (Q1 a1) (Q2 a1))
H3 : trans (U1 n1) (P1 n1) *
H4 : trans V Q *
H6 : red_exp (in n2 Q) (Q3 n2 n1)
============================
 exists V1 Q2, nabla a, evc_cl red_ls (subex U1 V) V1 /\ trans V1 Q2 /\
   str_eq (nu (z2\par (P1 z2 a) (Q3 z2 a))) (Q2 a)

red_ls_simulates_red_exp < case H6.
Proof completed.
Abella <