DEFINITION getl_drop()
TYPE =
       b:B
         .c:C
           .e:C.u:T.h:nat.(getl h c (CHead e (Bind b) u))(drop (S h) O c e)
BODY =
        assume bB
        assume cC
          we proceed by induction on c to prove 
             e:C.u:T.h:nat.(getl h c (CHead e (Bind b) u))(drop (S h) O c e)
             case CSort : n:nat 
                the thesis becomes 
                e:C
                  .u:T
                    .h:nat
                      .H:getl h (CSort n) (CHead e (Bind b) u)
                        .drop (S h) O (CSort n) e
                    assume eC
                    assume uT
                    assume hnat
                    suppose Hgetl h (CSort n) (CHead e (Bind b) u)
                      by (getl_gen_sort . . . H .)
                      we proved drop (S h) O (CSort n) e

                      e:C
                        .u:T
                          .h:nat
                            .H:getl h (CSort n) (CHead e (Bind b) u)
                              .drop (S h) O (CSort n) e
             case CHead : c0:C k:K t:T 
                the thesis becomes 
                e:C
                  .u:T
                    .h:nat
                      .getl h (CHead c0 k t) (CHead e (Bind b) u)
                        drop (S h) O (CHead c0 k t) e
                (H) by induction hypothesis we know e:C.u:T.h:nat.(getl h c0 (CHead e (Bind b) u))(drop (S h) O c0 e)
                    assume eC
                    assume uT
                    assume hnat
                      we proceed by induction on h to prove 
                         getl h (CHead c0 k t) (CHead e (Bind b) u)
                           drop (S h) O (CHead c0 k t) e
                         case O : 
                            the thesis becomes 
                            getl O (CHead c0 k t) (CHead e (Bind b) u)
                              drop (S OO (CHead c0 k t) e
                               suppose H0getl O (CHead c0 k t) (CHead e (Bind b) u)
                                  by (getl_gen_O . . H0)
                                  we proved clear (CHead c0 k t) (CHead e (Bind b) u)
                                     assume b0B
                                     suppose H1clear (CHead c0 (Bind b0) t) (CHead e (Bind b) u)
                                        (H2
                                           by (clear_gen_bind . . . . H1)
                                           we proved eq C (CHead e (Bind b) u) (CHead c0 (Bind b0) t)
                                           by (f_equal . . . . . previous)
                                           we proved 
                                              eq
                                                C
                                                <λ:C.C> CASE CHead e (Bind b) u OF CSort e | CHead c1  c1
                                                <λ:C.C> CASE CHead c0 (Bind b0) t OF CSort e | CHead c1  c1

                                              eq
                                                C
                                                λe0:C.<λ:C.C> CASE e0 OF CSort e | CHead c1  c1 (CHead e (Bind b) u)
                                                λe0:C.<λ:C.C> CASE e0 OF CSort e | CHead c1  c1 (CHead c0 (Bind b0) t)
                                        end of H2
                                        (h1
                                           (H3
                                              by (clear_gen_bind . . . . H1)
                                              we proved eq C (CHead e (Bind b) u) (CHead c0 (Bind b0) t)
                                              by (f_equal . . . . . previous)
                                              we proved 
                                                 eq
                                                   B
                                                   <λ:C.B>
                                                     CASE CHead e (Bind b) u OF
                                                       CSort b
                                                     | CHead  k0 <λ:K.B> CASE k0 OF Bind b1b1 | Flat b
                                                   <λ:C.B>
                                                     CASE CHead c0 (Bind b0) t OF
                                                       CSort b
                                                     | CHead  k0 <λ:K.B> CASE k0 OF Bind b1b1 | Flat b

                                                 eq
                                                   B
                                                   λe0:C.<λ:C.B> CASE e0 OF CSort b | CHead  k0 <λ:K.B> CASE k0 OF Bind b1b1 | Flat b
                                                     CHead e (Bind b) u
                                                   λe0:C.<λ:C.B> CASE e0 OF CSort b | CHead  k0 <λ:K.B> CASE k0 OF Bind b1b1 | Flat b
                                                     CHead c0 (Bind b0) t
                                           end of H3
                                           (H5
                                              consider H3
                                              we proved 
                                                 eq
                                                   B
                                                   <λ:C.B>
                                                     CASE CHead e (Bind b) u OF
                                                       CSort b
                                                     | CHead  k0 <λ:K.B> CASE k0 OF Bind b1b1 | Flat b
                                                   <λ:C.B>
                                                     CASE CHead c0 (Bind b0) t OF
                                                       CSort b
                                                     | CHead  k0 <λ:K.B> CASE k0 OF Bind b1b1 | Flat b
eq B b b0
                                           end of H5
                                           suppose H6eq C e c0
                                              we proceed by induction on H5 to prove drop (S OO (CHead c0 (Bind b0) t) c0
                                                 case refl_equal : 
                                                    the thesis becomes drop (S OO (CHead c0 (Bind b) t) c0
                                                       by (drop_refl .)
                                                       we proved drop O O c0 c0
                                                       that is equivalent to drop (r (Bind b) OO c0 c0
                                                       by (drop_drop . . . . previous .)
drop (S OO (CHead c0 (Bind b) t) c0
                                              we proved drop (S OO (CHead c0 (Bind b0) t) c0
                                              by (eq_ind_r . . . previous . H6)
                                              we proved drop (S OO (CHead c0 (Bind b0) t) e
(eq C e c0)(drop (S OO (CHead c0 (Bind b0) t) e)
                                        end of h1
                                        (h2
                                           consider H2
                                           we proved 
                                              eq
                                                C
                                                <λ:C.C> CASE CHead e (Bind b) u OF CSort e | CHead c1  c1
                                                <λ:C.C> CASE CHead c0 (Bind b0) t OF CSort e | CHead c1  c1
eq C e c0
                                        end of h2
                                        by (h1 h2)
                                        we proved drop (S OO (CHead c0 (Bind b0) t) e

                                        H1:clear (CHead c0 (Bind b0) t) (CHead e (Bind b) u)
                                          .drop (S OO (CHead c0 (Bind b0) t) e
                                     assume fF
                                     suppose H1clear (CHead c0 (Flat f) t) (CHead e (Bind b) u)
                                        (h1
                                           by (clear_gen_flat . . . . H1)
                                           we proved clear c0 (CHead e (Bind b) u)
                                           by (clear_flat . . previous . .)
clear (CHead c0 (Flat f) t) (CHead e (Bind b) u)
                                        end of h1
                                        (h2
                                           by (drop_refl .)
drop O O e e
                                        end of h2
                                        by (drop_clear_O . . . . h1 . . h2)
                                        we proved drop (S OO (CHead c0 (Flat f) t) e

                                        H1:clear (CHead c0 (Flat f) t) (CHead e (Bind b) u)
                                          .drop (S OO (CHead c0 (Flat f) t) e
                                  by (previous . previous)
                                  we proved drop (S OO (CHead c0 k t) e

                                  getl O (CHead c0 k t) (CHead e (Bind b) u)
                                    drop (S OO (CHead c0 k t) e
                         case S : n:nat 
                            the thesis becomes 
                            H1:getl (S n) (CHead c0 k t) (CHead e (Bind b) u)
                              .drop (S (S n)) O (CHead c0 k t) e
                            () by induction hypothesis we know 
                               getl n (CHead c0 k t) (CHead e (Bind b) u)
                                 drop (S n) O (CHead c0 k t) e
                               suppose H1getl (S n) (CHead c0 k t) (CHead e (Bind b) u)
                                  (h1
                                     by (getl_gen_S . . . . . H1)
                                     we proved getl (r k n) c0 (CHead e (Bind b) u)
                                     by (H . . . previous)
drop (S (r k n)) O c0 e
                                  end of h1
                                  (h2
                                     by (r_S . .)
eq nat (r k (S n)) (S (r k n))
                                  end of h2
                                  by (eq_ind_r . . . h1 . h2)
                                  we proved drop (r k (S n)) O c0 e
                                  by (drop_drop . . . . previous .)
                                  we proved drop (S (S n)) O (CHead c0 k t) e

                                  H1:getl (S n) (CHead c0 k t) (CHead e (Bind b) u)
                                    .drop (S (S n)) O (CHead c0 k t) e
                      we proved 
                         getl h (CHead c0 k t) (CHead e (Bind b) u)
                           drop (S h) O (CHead c0 k t) e

                      e:C
                        .u:T
                          .h:nat
                            .getl h (CHead c0 k t) (CHead e (Bind b) u)
                              drop (S h) O (CHead c0 k t) e
          we proved 
             e:C.u:T.h:nat.(getl h c (CHead e (Bind b) u))(drop (S h) O c e)
       we proved 
          b:B
            .c:C
              .e:C.u:T.h:nat.(getl h c (CHead e (Bind b) u))(drop (S h) O c e)