DEFINITION lift_inj()
TYPE =
       x:T.t:T.h:nat.d:nat.(eq T (lift h d x) (lift h d t))(eq T x t)
BODY =
       assume xT
          we proceed by induction on x to prove t0:T.h:nat.d:nat.(eq T (lift h d x) (lift h d t0))(eq T x t0)
             case TSort : n:nat 
                the thesis becomes 
                t:T
                  .h:nat
                    .d:nat.H:(eq T (lift h d (TSort n)) (lift h d t)).(eq T (TSort n) t)
                    assume tT
                    assume hnat
                    assume dnat
                    suppose Heq T (lift h d (TSort n)) (lift h d t)
                      (H0
                         by (lift_sort . . .)
                         we proved eq T (lift h d (TSort n)) (TSort n)
                         we proceed by induction on the previous result to prove eq T (TSort n) (lift h d t)
                            case refl_equal : 
                               the thesis becomes the hypothesis H
eq T (TSort n) (lift h d t)
                      end of H0
                      by (lift_gen_sort . . . . H0)
                      we proved eq T t (TSort n)
                      by (sym_eq . . . previous)
                      we proved eq T (TSort n) t

                      t:T
                        .h:nat
                          .d:nat.H:(eq T (lift h d (TSort n)) (lift h d t)).(eq T (TSort n) t)
             case TLRef : n:nat 
                the thesis becomes 
                t:T
                  .h:nat
                    .d:nat.H:(eq T (lift h d (TLRef n)) (lift h d t)).(eq T (TLRef n) t)
                    assume tT
                    assume hnat
                    assume dnat
                    suppose Heq T (lift h d (TLRef n)) (lift h d t)
                      (h1
                         suppose H0lt n d
                            (H1
                               by (lift_lref_lt . . . H0)
                               we proved eq T (lift h d (TLRef n)) (TLRef n)
                               we proceed by induction on the previous result to prove eq T (TLRef n) (lift h d t)
                                  case refl_equal : 
                                     the thesis becomes the hypothesis H
eq T (TLRef n) (lift h d t)
                            end of H1
                            by (le_n .)
                            we proved le d d
                            by (lt_le_trans . . . H0 previous)
                            we proved lt n d
                            by (lift_gen_lref_lt . . . previous . H1)
                            we proved eq T t (TLRef n)
                            by (sym_eq . . . previous)
                            we proved eq T (TLRef n) t
(lt n d)(eq T (TLRef n) t)
                      end of h1
                      (h2
                         suppose H0le d n
                            (H1
                               by (lift_lref_ge . . . H0)
                               we proved eq T (lift h d (TLRef n)) (TLRef (plus n h))
                               we proceed by induction on the previous result to prove eq T (TLRef (plus n h)) (lift h d t)
                                  case refl_equal : 
                                     the thesis becomes the hypothesis H
eq T (TLRef (plus n h)) (lift h d t)
                            end of H1
                            by (lift_gen_lref_ge . . . H0 . H1)
                            we proved eq T t (TLRef n)
                            by (sym_eq . . . previous)
                            we proved eq T (TLRef n) t
(le d n)(eq T (TLRef n) t)
                      end of h2
                      by (lt_le_e . . . h1 h2)
                      we proved eq T (TLRef n) t

                      t:T
                        .h:nat
                          .d:nat.H:(eq T (lift h d (TLRef n)) (lift h d t)).(eq T (TLRef n) t)
             case THead 
                we need to prove 
                k:K
                  .t:T
                    .t0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                      t0:T
                           .t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                             t1:T
                                  .h:nat
                                    .d:nat
                                      .(eq T (lift h d (THead k t t0)) (lift h d t1))(eq T (THead k t t0) t1)
                   assume kK
                      we proceed by induction on k to prove 
                         t:T
                           .t0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                             t0:T
                                  .t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                                    t1:T
                                         .h:nat
                                           .d:nat
                                             .(eq T (lift h d (THead k t t0)) (lift h d t1))(eq T (THead k t t0) t1)
                         case Bind : b:B 
                            the thesis becomes 
                            t:T
                              .H:t0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                                .t0:T
                                  .H0:t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                                    .t1:T
                                      .h:nat
                                        .d:nat
                                          .H1:eq T (lift h d (THead (Bind b) t t0)) (lift h d t1)
                                            .eq T (THead (Bind b) t t0) t1
                                assume tT
                                suppose Ht0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                                assume t0T
                                suppose H0t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                                assume t1T
                                assume hnat
                                assume dnat
                                suppose H1eq T (lift h d (THead (Bind b) t t0)) (lift h d t1)
                                  (H2
                                     by (lift_bind . . . . .)
                                     we proved 
                                        eq
                                          T
                                          lift h d (THead (Bind b) t t0)
                                          THead (Bind b) (lift h d t) (lift h (S d) t0)
                                     we proceed by induction on the previous result to prove eq T (THead (Bind b) (lift h d t) (lift h (S d) t0)) (lift h d t1)
                                        case refl_equal : 
                                           the thesis becomes the hypothesis H1
eq T (THead (Bind b) (lift h d t) (lift h (S d) t0)) (lift h d t1)
                                  end of H2
                                  by (lift_gen_bind . . . . . . H2)
                                  we proved 
                                     ex3_2
                                       T
                                       T
                                       λy:T.λz:T.eq T t1 (THead (Bind b) y z)
                                       λy:T.λ:T.eq T (lift h d t) (lift h d y)
                                       λ:T.λz:T.eq T (lift h (S d) t0) (lift h (S d) z)
                                  we proceed by induction on the previous result to prove eq T (THead (Bind b) t t0) t1
                                     case ex3_2_intro : x0:T x1:T H3:eq T t1 (THead (Bind b) x0 x1) H4:eq T (lift h d t) (lift h d x0) H5:eq T (lift h (S d) t0) (lift h (S d) x1) 
                                        the thesis becomes eq T (THead (Bind b) t t0) t1
                                           (h1
                                              by (refl_equal . .)
eq K (Bind b) (Bind b)
                                           end of h1
                                           (h2by (H . . . H4) we proved eq T t x0
                                           (h3by (H0 . . . H5) we proved eq T t0 x1
                                           by (f_equal3 . . . . . . . . . . . h1 h2 h3)
                                           we proved eq T (THead (Bind b) t t0) (THead (Bind b) x0 x1)
                                           by (eq_ind_r . . . previous . H3)
eq T (THead (Bind b) t t0) t1
                                  we proved eq T (THead (Bind b) t t0) t1

                                  t:T
                                    .H:t0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                                      .t0:T
                                        .H0:t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                                          .t1:T
                                            .h:nat
                                              .d:nat
                                                .H1:eq T (lift h d (THead (Bind b) t t0)) (lift h d t1)
                                                  .eq T (THead (Bind b) t t0) t1
                         case Flat : f:F 
                            the thesis becomes 
                            t:T
                              .H:t0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                                .t0:T
                                  .H0:t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                                    .t1:T
                                      .h:nat
                                        .d:nat
                                          .H1:eq T (lift h d (THead (Flat f) t t0)) (lift h d t1)
                                            .eq T (THead (Flat f) t t0) t1
                                assume tT
                                suppose Ht0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                                assume t0T
                                suppose H0t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                                assume t1T
                                assume hnat
                                assume dnat
                                suppose H1eq T (lift h d (THead (Flat f) t t0)) (lift h d t1)
                                  (H2
                                     by (lift_flat . . . . .)
                                     we proved 
                                        eq
                                          T
                                          lift h d (THead (Flat f) t t0)
                                          THead (Flat f) (lift h d t) (lift h d t0)
                                     we proceed by induction on the previous result to prove eq T (THead (Flat f) (lift h d t) (lift h d t0)) (lift h d t1)
                                        case refl_equal : 
                                           the thesis becomes the hypothesis H1
eq T (THead (Flat f) (lift h d t) (lift h d t0)) (lift h d t1)
                                  end of H2
                                  by (lift_gen_flat . . . . . . H2)
                                  we proved 
                                     ex3_2
                                       T
                                       T
                                       λy:T.λz:T.eq T t1 (THead (Flat f) y z)
                                       λy:T.λ:T.eq T (lift h d t) (lift h d y)
                                       λ:T.λz:T.eq T (lift h d t0) (lift h d z)
                                  we proceed by induction on the previous result to prove eq T (THead (Flat f) t t0) t1
                                     case ex3_2_intro : x0:T x1:T H3:eq T t1 (THead (Flat f) x0 x1) H4:eq T (lift h d t) (lift h d x0) H5:eq T (lift h d t0) (lift h d x1) 
                                        the thesis becomes eq T (THead (Flat f) t t0) t1
                                           (h1
                                              by (refl_equal . .)
eq K (Flat f) (Flat f)
                                           end of h1
                                           (h2by (H . . . H4) we proved eq T t x0
                                           (h3by (H0 . . . H5) we proved eq T t0 x1
                                           by (f_equal3 . . . . . . . . . . . h1 h2 h3)
                                           we proved eq T (THead (Flat f) t t0) (THead (Flat f) x0 x1)
                                           by (eq_ind_r . . . previous . H3)
eq T (THead (Flat f) t t0) t1
                                  we proved eq T (THead (Flat f) t t0) t1

                                  t:T
                                    .H:t0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                                      .t0:T
                                        .H0:t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                                          .t1:T
                                            .h:nat
                                              .d:nat
                                                .H1:eq T (lift h d (THead (Flat f) t t0)) (lift h d t1)
                                                  .eq T (THead (Flat f) t t0) t1
                      we proved 
                         t:T
                           .t0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                             t0:T
                                  .t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                                    t1:T
                                         .h:nat
                                           .d:nat
                                             .(eq T (lift h d (THead k t t0)) (lift h d t1))(eq T (THead k t t0) t1)

                      k:K
                        .t:T
                          .t0:T.h:nat.d:nat.(eq T (lift h d t) (lift h d t0))(eq T t t0)
                            t0:T
                                 .t1:T.h:nat.d:nat.(eq T (lift h d t0) (lift h d t1))(eq T t0 t1)
                                   t1:T
                                        .h:nat
                                          .d:nat
                                            .(eq T (lift h d (THead k t t0)) (lift h d t1))(eq T (THead k t t0) t1)
          we proved t0:T.h:nat.d:nat.(eq T (lift h d x) (lift h d t0))(eq T x t0)
       we proved x:T.t0:T.h:nat.d:nat.(eq T (lift h d x) (lift h d t0))(eq T x t0)