DEFINITION subst1_subst1_back()
TYPE =
       t1:T
         .t2:T
           .u2:T
             .j:nat
               .subst1 j u2 t1 t2
                 u1:T.u:T.i:nat.(subst1 i u u2 u1)(ex2 T λt:T.subst1 j u1 t1 t λt:T.subst1 (S (plus i j)) u t2 t)
BODY =
        assume t1T
        assume t2T
        assume u2T
        assume jnat
        suppose Hsubst1 j u2 t1 t2
          we proceed by induction on H to prove u1:T.u:T.i:nat.(subst1 i u u2 u1)(ex2 T λt0:T.subst1 j u1 t1 t0 λt0:T.subst1 (S (plus i j)) u t2 t0)
             case subst1_refl : 
                the thesis becomes u1:T.u:T.i:nat.(subst1 i u u2 u1)(ex2 T λt:T.subst1 j u1 t1 t λt:T.subst1 (S (plus i j)) u t1 t)
                    assume u1T
                    assume uT
                    assume inat
                    suppose subst1 i u u2 u1
                      (h1
                         by (subst1_refl . . .)
subst1 j u1 t1 t1
                      end of h1
                      (h2
                         by (subst1_refl . . .)
subst1 (S (plus i j)) u t1 t1
                      end of h2
                      by (ex_intro2 . . . . h1 h2)
                      we proved ex2 T λt:T.subst1 j u1 t1 t λt:T.subst1 (S (plus i j)) u t1 t
u1:T.u:T.i:nat.(subst1 i u u2 u1)(ex2 T λt:T.subst1 j u1 t1 t λt:T.subst1 (S (plus i j)) u t1 t)
             case subst1_single : t3:T H0:subst0 j u2 t1 t3 
                the thesis becomes u1:T.u:T.i:nat.H1:(subst1 i u u2 u1).(ex2 T λt0:T.subst1 j u1 t1 t0 λt0:T.subst1 (S (plus i j)) u t3 t0)
                    assume u1T
                    assume uT
                    assume inat
                    suppose H1subst1 i u u2 u1
                      we proceed by induction on H1 to prove ex2 T λt0:T.subst1 j u1 t1 t0 λt0:T.subst1 (S (plus i j)) u t3 t0
                         case subst1_refl : 
                            the thesis becomes ex2 T λt:T.subst1 j u2 t1 t λt:T.subst1 (S (plus i j)) u t3 t
                               (h1
                                  by (subst1_single . . . . H0)
subst1 j u2 t1 t3
                               end of h1
                               (h2
                                  by (subst1_refl . . .)
subst1 (S (plus i j)) u t3 t3
                               end of h2
                               by (ex_intro2 . . . . h1 h2)
ex2 T λt:T.subst1 j u2 t1 t λt:T.subst1 (S (plus i j)) u t3 t
                         case subst1_single : t0:T H2:subst0 i u u2 t0 
                            the thesis becomes ex2 T λt:T.subst1 j t0 t1 t λt:T.subst1 (S (plus i j)) u t3 t
                               by (subst0_subst0_back . . . . H0 . . . H2)
                               we proved ex2 T λt:T.subst0 j t0 t1 t λt:T.subst0 (S (plus i j)) u t3 t
                               we proceed by induction on the previous result to prove ex2 T λt:T.subst1 j t0 t1 t λt:T.subst1 (S (plus i j)) u t3 t
                                  case ex_intro2 : x:T H3:subst0 j t0 t1 x H4:subst0 (S (plus i j)) u t3 x 
                                     the thesis becomes ex2 T λt:T.subst1 j t0 t1 t λt:T.subst1 (S (plus i j)) u t3 t
                                        (h1
                                           by (subst1_single . . . . H3)
subst1 j t0 t1 x
                                        end of h1
                                        (h2
                                           by (subst1_single . . . . H4)
subst1 (S (plus i j)) u t3 x
                                        end of h2
                                        by (ex_intro2 . . . . h1 h2)
ex2 T λt:T.subst1 j t0 t1 t λt:T.subst1 (S (plus i j)) u t3 t
ex2 T λt:T.subst1 j t0 t1 t λt:T.subst1 (S (plus i j)) u t3 t
                      we proved ex2 T λt0:T.subst1 j u1 t1 t0 λt0:T.subst1 (S (plus i j)) u t3 t0
u1:T.u:T.i:nat.H1:(subst1 i u u2 u1).(ex2 T λt0:T.subst1 j u1 t1 t0 λt0:T.subst1 (S (plus i j)) u t3 t0)
          we proved u1:T.u:T.i:nat.(subst1 i u u2 u1)(ex2 T λt0:T.subst1 j u1 t1 t0 λt0:T.subst1 (S (plus i j)) u t2 t0)
       we proved 
          t1:T
            .t2:T
              .u2:T
                .j:nat
                  .(subst1 j u2 t1 t2)u1:T.u:T.i:nat.(subst1 i u u2 u1)(ex2 T λt0:T.subst1 j u1 t1 t0 λt0:T.subst1 (S (plus i j)) u t2 t0)