DEFINITION drop_ctail()
TYPE =
       c1:C
         .c2:C
           .d:nat.h:nat.(drop h d c1 c2)k:K.u:T.(drop h d (CTail k u c1) (CTail k u c2))
BODY =
       assume c1C
          we proceed by induction on c1 to prove 
             c2:C
               .d:nat.h:nat.(drop h d c1 c2)k:K.u:T.(drop h d (CTail k u c1) (CTail k u c2))
             case CSort : n:nat 
                the thesis becomes 
                c2:C
                  .d:nat
                    .h:nat
                      .H:drop h d (CSort n) c2
                        .k:K.u:T.(drop h d (CTail k u (CSort n)) (CTail k u c2))
                    assume c2C
                    assume dnat
                    assume hnat
                    suppose Hdrop h d (CSort n) c2
                    assume kK
                    assume uT
                      by (drop_gen_sort . . . . H)
                      we proved and3 (eq C c2 (CSort n)) (eq nat h O) (eq nat d O)
                      we proceed by induction on the previous result to prove drop h d (CTail k u (CSort n)) (CTail k u c2)
                         case and3_intro : H0:eq C c2 (CSort n) H1:eq nat h O H2:eq nat d O 
                            the thesis becomes drop h d (CTail k u (CSort n)) (CTail k u c2)
                               by (drop_refl .)
                               we proved drop O O (CTail k u (CSort n)) (CTail k u (CSort n))
                               by (eq_ind_r . . . previous . H0)
                               we proved drop O O (CTail k u (CSort n)) (CTail k u c2)
                               by (eq_ind_r . . . previous . H2)
                               we proved drop O d (CTail k u (CSort n)) (CTail k u c2)
                               by (eq_ind_r . . . previous . H1)
drop h d (CTail k u (CSort n)) (CTail k u c2)
                      we proved drop h d (CTail k u (CSort n)) (CTail k u c2)

                      c2:C
                        .d:nat
                          .h:nat
                            .H:drop h d (CSort n) c2
                              .k:K.u:T.(drop h d (CTail k u (CSort n)) (CTail k u c2))
             case CHead : c2:C k:K t:T 
                the thesis becomes 
                c3:C
                  .d:nat
                    .h:nat
                      .drop h d (CHead c2 k t) c3
                        k0:K.u:T.(drop h d (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                (IHc) by induction hypothesis we know 
                   c3:C
                     .d:nat.h:nat.(drop h d c2 c3)k:K.u:T.(drop h d (CTail k u c2) (CTail k u c3))
                    assume c3C
                    assume dnat
                      we proceed by induction on d to prove 
                         h:nat
                           .drop h d (CHead c2 k t) c3
                             k0:K.u:T.(drop h d (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                         case O : 
                            the thesis becomes 
                            h:nat
                              .drop h O (CHead c2 k t) c3
                                k0:K.u:T.(drop h O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                               assume hnat
                                  we proceed by induction on h to prove 
                                     drop h O (CHead c2 k t) c3
                                       k0:K.u:T.(drop h O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                                     case O : 
                                        the thesis becomes 
                                        drop O O (CHead c2 k t) c3
                                          k0:K.u:T.(drop O O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                                            suppose Hdrop O O (CHead c2 k t) c3
                                            assume k0K
                                            assume uT
                                              by (drop_gen_refl . . H)
                                              we proved eq C (CHead c2 k t) c3
                                              we proceed by induction on the previous result to prove drop O O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)
                                                 case refl_equal : 
                                                    the thesis becomes drop O O (CTail k0 u (CHead c2 k t)) (CTail k0 u (CHead c2 k t))
                                                       by (drop_refl .)
drop O O (CTail k0 u (CHead c2 k t)) (CTail k0 u (CHead c2 k t))
                                              we proved drop O O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)

                                              drop O O (CHead c2 k t) c3
                                                k0:K.u:T.(drop O O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                                     case S : n:nat 
                                        the thesis becomes 
                                        H0:drop (S n) O (CHead c2 k t) c3
                                          .k0:K.u:T.(drop (S n) O (CHead (CTail k0 u c2) k t) (CTail k0 u c3))
                                        () by induction hypothesis we know 
                                           drop n O (CHead c2 k t) c3
                                             k0:K.u:T.(drop n O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                                            suppose H0drop (S n) O (CHead c2 k t) c3
                                            assume k0K
                                            assume uT
                                              by (drop_gen_drop . . . . . H0)
                                              we proved drop (r k n) O c2 c3
                                              by (IHc . . . previous . .)
                                              we proved drop (r k n) O (CTail k0 u c2) (CTail k0 u c3)
                                              by (drop_drop . . . . previous .)
                                              we proved drop (S n) O (CHead (CTail k0 u c2) k t) (CTail k0 u c3)
                                              that is equivalent to drop (S n) O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)

                                              H0:drop (S n) O (CHead c2 k t) c3
                                                .k0:K.u:T.(drop (S n) O (CHead (CTail k0 u c2) k t) (CTail k0 u c3))
                                  we proved 
                                     drop h O (CHead c2 k t) c3
                                       k0:K.u:T.(drop h O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))

                                  h:nat
                                    .drop h O (CHead c2 k t) c3
                                      k0:K.u:T.(drop h O (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                         case S : n:nat 
                            the thesis becomes 
                            h:nat
                              .H0:drop h (S n) (CHead c2 k t) c3
                                .k0:K.u:T.(drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                            (H) by induction hypothesis we know 
                               h:nat
                                 .drop h n (CHead c2 k t) c3
                                   k0:K.u:T.(drop h n (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                                assume hnat
                                suppose H0drop h (S n) (CHead c2 k t) c3
                                assume k0K
                                assume uT
                                  by (drop_gen_skip_l . . . . . . H0)
                                  we proved 
                                     ex3_2
                                       C
                                       T
                                       λe:C.λv:T.eq C c3 (CHead e k v)
                                       λ:C.λv:T.eq T t (lift h (r k n) v)
                                       λe:C.λ:T.drop h (r k n) c2 e
                                  we proceed by induction on the previous result to prove drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)
                                     case ex3_2_intro : x0:C x1:T H1:eq C c3 (CHead x0 k x1) H2:eq T t (lift h (r k n) x1) H3:drop h (r k n) c2 x0 
                                        the thesis becomes drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)
                                           (H4
                                              we proceed by induction on H1 to prove 
                                                 h0:nat
                                                   .drop h0 n (CHead c2 k t) (CHead x0 k x1)
                                                     k1:K.u0:T.(drop h0 n (CTail k1 u0 (CHead c2 k t)) (CTail k1 u0 (CHead x0 k x1)))
                                                 case refl_equal : 
                                                    the thesis becomes the hypothesis H

                                                 h0:nat
                                                   .drop h0 n (CHead c2 k t) (CHead x0 k x1)
                                                     k1:K.u0:T.(drop h0 n (CTail k1 u0 (CHead c2 k t)) (CTail k1 u0 (CHead x0 k x1)))
                                           end of H4
                                           by (IHc . . . H3 . .)
                                           we proved drop h (r k n) (CTail k0 u c2) (CTail k0 u x0)
                                           by (drop_skip . . . . . previous .)
                                           we proved 
                                              drop
                                                h
                                                S n
                                                CHead (CTail k0 u c2) k (lift h (r k n) x1)
                                                CHead (CTail k0 u x0) k x1
                                           that is equivalent to 
                                              drop
                                                h
                                                S n
                                                CTail k0 u (CHead c2 k (lift h (r k n) x1))
                                                CTail k0 u (CHead x0 k x1)
                                           by (eq_ind_r . . . previous . H2)
                                           we proved drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u (CHead x0 k x1))
                                           by (eq_ind_r . . . previous . H1)
drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)
                                  we proved drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c3)

                                  h:nat
                                    .H0:drop h (S n) (CHead c2 k t) c3
                                      .k0:K.u:T.(drop h (S n) (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
                      we proved 
                         h:nat
                           .drop h d (CHead c2 k t) c3
                             k0:K.u:T.(drop h d (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))

                      c3:C
                        .d:nat
                          .h:nat
                            .drop h d (CHead c2 k t) c3
                              k0:K.u:T.(drop h d (CTail k0 u (CHead c2 k t)) (CTail k0 u c3))
          we proved 
             c2:C
               .d:nat.h:nat.(drop h d c1 c2)k:K.u:T.(drop h d (CTail k u c1) (CTail k u c2))
       we proved 
          c1:C
            .c2:C
              .d:nat.h:nat.(drop h d c1 c2)k:K.u:T.(drop h d (CTail k u c1) (CTail k u c2))