DEFINITION subst0_lift_lt()
TYPE =
       t1:T
         .t2:T
           .u:T
             .i:nat
               .subst0 i u t1 t2
                 d:nat
                      .lt i d
                        h:nat.(subst0 i (lift h (minus d (S i)) u) (lift h d t1) (lift h d t2))
BODY =
        assume t1T
        assume t2T
        assume uT
        assume inat
        suppose Hsubst0 i u t1 t2
          we proceed by induction on H to prove 
             d:nat
               .lt i d
                 h:nat.(subst0 i (lift h (minus d (S i)) u) (lift h d t1) (lift h d t2))
             case subst0_lref : v:T i0:nat 
                the thesis becomes 
                d:nat
                  .H0:lt i0 d
                    .h:nat
                      .subst0
                        i0
                        lift h (minus d (S i0)) v
                        lift h d (TLRef i0)
                        lift h d (lift (S i0) O v)
                    assume dnat
                    suppose H0lt i0 d
                    assume hnat
                      (h1
                         (wby (. . .) we proved 
                         consider H0
                         we proved lt i0 d
                         that is equivalent to le (S i0) d
                         by (le_plus_minus_r . . previous)
                         we proved eq nat (plus (S i0) (minus d (S i0))) d
                         we proceed by induction on the previous result to prove subst0 i0 (lift h w v) (TLRef i0) (lift h d (lift (S i0) O v))
                            case refl_equal : 
                               the thesis becomes 
                               subst0
                                 i0
                                 lift h w v
                                 TLRef i0
                                 lift h (plus (S i0) (minus d (S i0))) (lift (S i0) O v)
                                  (h1
                                     by (subst0_lref . .)
                                     we proved 
                                        subst0
                                          i0
                                          lift h (minus d (S i0)) v
                                          TLRef i0
                                          lift (S i0) O (lift h (minus d (S i0)) v)

                                        subst0 i0 (lift h w v) (TLRef i0) (lift (S i0) O (lift h (minus d (S i0)) v))
                                  end of h1
                                  (h2
                                     by (le_O_n .)
                                     we proved le O (minus d (S i0))
                                     by (lift_d . . . . . previous)

                                        eq
                                          T
                                          lift h (plus (S i0) (minus d (S i0))) (lift (S i0) O v)
                                          lift (S i0) O (lift h (minus d (S i0)) v)
                                  end of h2
                                  by (eq_ind_r . . . h1 . h2)

                                     subst0
                                       i0
                                       lift h w v
                                       TLRef i0
                                       lift h (plus (S i0) (minus d (S i0))) (lift (S i0) O v)
                         we proved 
                            let w := minus d (S i0)
                            in subst0 i0 (lift h w v) (TLRef i0) (lift h d (lift (S i0) O v))

                            subst0 i0 (lift h (minus d (S i0)) v) (TLRef i0) (lift h d (lift (S i0) O v))
                      end of h1
                      (h2
                         by (lift_lref_lt . . . H0)
eq T (lift h d (TLRef i0)) (TLRef i0)
                      end of h2
                      by (eq_ind_r . . . h1 . h2)
                      we proved 
                         subst0
                           i0
                           lift h (minus d (S i0)) v
                           lift h d (TLRef i0)
                           lift h d (lift (S i0) O v)

                      d:nat
                        .H0:lt i0 d
                          .h:nat
                            .subst0
                              i0
                              lift h (minus d (S i0)) v
                              lift h d (TLRef i0)
                              lift h d (lift (S i0) O v)
             case subst0_fst : v:T u2:T u1:T i0:nat :subst0 i0 v u1 u2 t:T k:K 
                the thesis becomes 
                d:nat
                  .H2:lt i0 d
                    .h:nat
                      .subst0
                        i0
                        lift h (minus d (S i0)) v
                        lift h d (THead k u1 t)
                        lift h d (THead k u2 t)
                (H1) by induction hypothesis we know 
                   d:nat
                     .lt i0 d
                       h:nat.(subst0 i0 (lift h (minus d (S i0)) v) (lift h d u1) (lift h d u2))
                    assume dnat
                    suppose H2lt i0 d
                    assume hnat
                      (h1
                         (h1
                            by (H1 . H2 .)
                            we proved subst0 i0 (lift h (minus d (S i0)) v) (lift h d u1) (lift h d u2)
                            by (subst0_fst . . . . previous . .)

                               subst0
                                 i0
                                 lift h (minus d (S i0)) v
                                 THead k (lift h d u1) (lift h (s k d) t)
                                 THead k (lift h d u2) (lift h (s k d) t)
                         end of h1
                         (h2
                            by (lift_head . . . . .)

                               eq
                                 T
                                 lift h d (THead k u2 t)
                                 THead k (lift h d u2) (lift h (s k d) t)
                         end of h2
                         by (eq_ind_r . . . h1 . h2)

                            subst0
                              i0
                              lift h (minus d (S i0)) v
                              THead k (lift h d u1) (lift h (s k d) t)
                              lift h d (THead k u2 t)
                      end of h1
                      (h2
                         by (lift_head . . . . .)

                            eq
                              T
                              lift h d (THead k u1 t)
                              THead k (lift h d u1) (lift h (s k d) t)
                      end of h2
                      by (eq_ind_r . . . h1 . h2)
                      we proved 
                         subst0
                           i0
                           lift h (minus d (S i0)) v
                           lift h d (THead k u1 t)
                           lift h d (THead k u2 t)

                      d:nat
                        .H2:lt i0 d
                          .h:nat
                            .subst0
                              i0
                              lift h (minus d (S i0)) v
                              lift h d (THead k u1 t)
                              lift h d (THead k u2 t)
             case subst0_snd : k:K v:T t0:T t3:T i0:nat :subst0 (s k i0) v t3 t0 u0:T 
                the thesis becomes 
                d:nat
                  .H2:lt i0 d
                    .h:nat
                      .subst0
                        i0
                        lift h (minus d (S i0)) v
                        lift h d (THead k u0 t3)
                        lift h d (THead k u0 t0)
                (H1) by induction hypothesis we know 
                   d:nat
                     .lt (s k i0) d
                       h:nat
                            .subst0 (s k i0) (lift h (minus d (S (s k i0))) v) (lift h d t3) (lift h d t0)
                    assume dnat
                    suppose H2lt i0 d
                    assume hnat
                      (H3
                         by (s_S . .)
                         we proved eq nat (s k (S i0)) (S (s k i0))
                         by (eq_ind_r . . . H1 . previous)

                            d0:nat
                              .lt (s k i0) d0
                                h0:nat.(subst0 (s k i0) (lift h0 (minus d0 (s k (S i0))) v) (lift h0 d0 t3) (lift h0 d0 t0))
                      end of H3
                      (h1
                         (h1
                            by (minus_s_s . . .)
                            we proved eq nat (minus (s k d) (s k (S i0))) (minus d (S i0))
                            we proceed by induction on the previous result to prove 
                               subst0
                                 i0
                                 lift h (minus d (S i0)) v
                                 THead k (lift h d u0) (lift h (s k d) t3)
                                 THead k (lift h d u0) (lift h (s k d) t0)
                               case refl_equal : 
                                  the thesis becomes 
                                  subst0
                                    i0
                                    lift h (minus (s k d) (s k (S i0))) v
                                    THead k (lift h d u0) (lift h (s k d) t3)
                                    THead k (lift h d u0) (lift h (s k d) t0)
                                     by (s_lt . . . H2)
                                     we proved lt (s k i0) (s k d)
                                     by (H3 . previous .)
                                     we proved 
                                        subst0
                                          s k i0
                                          lift h (minus (s k d) (s k (S i0))) v
                                          lift h (s k d) t3
                                          lift h (s k d) t0
                                     by (subst0_snd . . . . . previous .)

                                        subst0
                                          i0
                                          lift h (minus (s k d) (s k (S i0))) v
                                          THead k (lift h d u0) (lift h (s k d) t3)
                                          THead k (lift h d u0) (lift h (s k d) t0)

                               subst0
                                 i0
                                 lift h (minus d (S i0)) v
                                 THead k (lift h d u0) (lift h (s k d) t3)
                                 THead k (lift h d u0) (lift h (s k d) t0)
                         end of h1
                         (h2
                            by (lift_head . . . . .)

                               eq
                                 T
                                 lift h d (THead k u0 t0)
                                 THead k (lift h d u0) (lift h (s k d) t0)
                         end of h2
                         by (eq_ind_r . . . h1 . h2)

                            subst0
                              i0
                              lift h (minus d (S i0)) v
                              THead k (lift h d u0) (lift h (s k d) t3)
                              lift h d (THead k u0 t0)
                      end of h1
                      (h2
                         by (lift_head . . . . .)

                            eq
                              T
                              lift h d (THead k u0 t3)
                              THead k (lift h d u0) (lift h (s k d) t3)
                      end of h2
                      by (eq_ind_r . . . h1 . h2)
                      we proved 
                         subst0
                           i0
                           lift h (minus d (S i0)) v
                           lift h d (THead k u0 t3)
                           lift h d (THead k u0 t0)

                      d:nat
                        .H2:lt i0 d
                          .h:nat
                            .subst0
                              i0
                              lift h (minus d (S i0)) v
                              lift h d (THead k u0 t3)
                              lift h d (THead k u0 t0)
             case subst0_both : v:T u1:T u2:T i0:nat :subst0 i0 v u1 u2 k:K t0:T t3:T :subst0 (s k i0) v t0 t3 
                the thesis becomes 
                d:nat
                  .H4:lt i0 d
                    .h:nat
                      .subst0
                        i0
                        lift h (minus d (S i0)) v
                        lift h d (THead k u1 t0)
                        lift h d (THead k u2 t3)
                (H1) by induction hypothesis we know 
                   d:nat
                     .lt i0 d
                       h:nat.(subst0 i0 (lift h (minus d (S i0)) v) (lift h d u1) (lift h d u2))
                (H3) by induction hypothesis we know 
                   d:nat
                     .lt (s k i0) d
                       h:nat
                            .subst0 (s k i0) (lift h (minus d (S (s k i0))) v) (lift h d t0) (lift h d t3)
                    assume dnat
                    suppose H4lt i0 d
                    assume hnat
                      (H5
                         by (s_S . .)
                         we proved eq nat (s k (S i0)) (S (s k i0))
                         by (eq_ind_r . . . H3 . previous)

                            d0:nat
                              .lt (s k i0) d0
                                h0:nat.(subst0 (s k i0) (lift h0 (minus d0 (s k (S i0))) v) (lift h0 d0 t0) (lift h0 d0 t3))
                      end of H5
                      (h1
                         (h1
                            (h1
                               by (H1 . H4 .)
subst0 i0 (lift h (minus d (S i0)) v) (lift h d u1) (lift h d u2)
                            end of h1
                            (h2
                               by (minus_s_s . . .)
                               we proved eq nat (minus (s k d) (s k (S i0))) (minus d (S i0))
                               we proceed by induction on the previous result to prove 
                                  subst0
                                    s k i0
                                    lift h (minus d (S i0)) v
                                    lift h (s k d) t0
                                    lift h (s k d) t3
                                  case refl_equal : 
                                     the thesis becomes 
                                     subst0
                                       s k i0
                                       lift h (minus (s k d) (s k (S i0))) v
                                       lift h (s k d) t0
                                       lift h (s k d) t3
                                        by (s_lt . . . H4)
                                        we proved lt (s k i0) (s k d)
                                        by (H5 . previous .)

                                           subst0
                                             s k i0
                                             lift h (minus (s k d) (s k (S i0))) v
                                             lift h (s k d) t0
                                             lift h (s k d) t3

                                  subst0
                                    s k i0
                                    lift h (minus d (S i0)) v
                                    lift h (s k d) t0
                                    lift h (s k d) t3
                            end of h2
                            by (subst0_both . . . . h1 . . . h2)

                               subst0
                                 i0
                                 lift h (minus d (S i0)) v
                                 THead k (lift h d u1) (lift h (s k d) t0)
                                 THead k (lift h d u2) (lift h (s k d) t3)
                         end of h1
                         (h2
                            by (lift_head . . . . .)

                               eq
                                 T
                                 lift h d (THead k u2 t3)
                                 THead k (lift h d u2) (lift h (s k d) t3)
                         end of h2
                         by (eq_ind_r . . . h1 . h2)

                            subst0
                              i0
                              lift h (minus d (S i0)) v
                              THead k (lift h d u1) (lift h (s k d) t0)
                              lift h d (THead k u2 t3)
                      end of h1
                      (h2
                         by (lift_head . . . . .)

                            eq
                              T
                              lift h d (THead k u1 t0)
                              THead k (lift h d u1) (lift h (s k d) t0)
                      end of h2
                      by (eq_ind_r . . . h1 . h2)
                      we proved 
                         subst0
                           i0
                           lift h (minus d (S i0)) v
                           lift h d (THead k u1 t0)
                           lift h d (THead k u2 t3)

                      d:nat
                        .H4:lt i0 d
                          .h:nat
                            .subst0
                              i0
                              lift h (minus d (S i0)) v
                              lift h d (THead k u1 t0)
                              lift h d (THead k u2 t3)
          we proved 
             d:nat
               .lt i d
                 h:nat.(subst0 i (lift h (minus d (S i)) u) (lift h d t1) (lift h d t2))
       we proved 
          t1:T
            .t2:T
              .u:T
                .i:nat
                  .subst0 i u t1 t2
                    d:nat
                         .lt i d
                           h:nat.(subst0 i (lift h (minus d (S i)) u) (lift h d t1) (lift h d t2))