DEFINITION drop_gen_skip_r()
TYPE =
       c:C
         .x:C
           .u:T
             .h:nat
               .d:nat
                 .k:K
                   .drop h (S d) x (CHead c k u)
                     (ex2
                          C
                          λe:C.eq C x (CHead e k (lift h (r k d) u))
                          λe:C.drop h (r k d) e c)
BODY =
        assume cC
        assume xC
        assume uT
        assume hnat
        assume dnat
        assume kK
        suppose Hdrop h (S d) x (CHead c k u)
           assume yC
           suppose H0drop h (S d) x y
              assume y0nat
              suppose H1drop h y0 x y
                we proceed by induction on H1 to prove 
                   eq nat y0 (S d)
                     (eq C y (CHead c k u)
                          (ex2
                               C
                               λe:C.eq C x (CHead e k (lift h (r k d) u))
                               λe:C.drop h (r k d) e c))
                   case drop_refl : c0:C 
                      the thesis becomes 
                      H2:eq nat O (S d)
                        .H3:eq C c0 (CHead c k u)
                          .ex2 C λe:C.eq C c0 (CHead e k (lift O (r k d) u)) λe:C.drop O (r k d) e c
                          suppose H2eq nat O (S d)
                          suppose H3eq C c0 (CHead c k u)
                            (H4
                               we proceed by induction on H2 to prove <λ:nat.Prop> CASE S d OF OTrue | S False
                                  case refl_equal : 
                                     the thesis becomes <λ:nat.Prop> CASE O OF OTrue | S False
                                        consider I
                                        we proved True
<λ:nat.Prop> CASE O OF OTrue | S False
<λ:nat.Prop> CASE S d OF OTrue | S False
                            end of H4
                            consider H4
                            we proved <λ:nat.Prop> CASE S d OF OTrue | S False
                            that is equivalent to False
                            we proceed by induction on the previous result to prove 
                               ex2
                                 C
                                 λe:C.eq C (CHead c k u) (CHead e k (lift O (r k d) u))
                                 λe:C.drop O (r k d) e c
                            we proved 
                               ex2
                                 C
                                 λe:C.eq C (CHead c k u) (CHead e k (lift O (r k d) u))
                                 λe:C.drop O (r k d) e c
                            by (eq_ind_r . . . previous . H3)
                            we proved 
                               ex2 C λe:C.eq C c0 (CHead e k (lift O (r k d) u)) λe:C.drop O (r k d) e c

                            H2:eq nat O (S d)
                              .H3:eq C c0 (CHead c k u)
                                .ex2 C λe:C.eq C c0 (CHead e k (lift O (r k d) u)) λe:C.drop O (r k d) e c
                   case drop_drop : k0:K h0:nat c0:C e:C H2:drop (r k0 h0) O c0 e u0:T 
                      the thesis becomes 
                      H4:eq nat O (S d)
                        .H5:eq C e (CHead c k u)
                          .ex2
                            C
                            λe0:C.eq C (CHead c0 k0 u0) (CHead e0 k (lift (S h0) (r k d) u))
                            λe0:C.drop (S h0) (r k d) e0 c
                      (H3) by induction hypothesis we know 
                         eq nat O (S d)
                           (eq C e (CHead c k u)
                                (ex2
                                     C
                                     λe0:C.eq C c0 (CHead e0 k (lift (r k0 h0) (r k d) u))
                                     λe0:C.drop (r k0 h0) (r k d) e0 c))
                          suppose H4eq nat O (S d)
                          suppose H5eq C e (CHead c k u)
                            (H8
                               we proceed by induction on H4 to prove <λ:nat.Prop> CASE S d OF OTrue | S False
                                  case refl_equal : 
                                     the thesis becomes <λ:nat.Prop> CASE O OF OTrue | S False
                                        consider I
                                        we proved True
<λ:nat.Prop> CASE O OF OTrue | S False
<λ:nat.Prop> CASE S d OF OTrue | S False
                            end of H8
                            consider H8
                            we proved <λ:nat.Prop> CASE S d OF OTrue | S False
                            that is equivalent to False
                            we proceed by induction on the previous result to prove 
                               ex2
                                 C
                                 λe0:C.eq C (CHead c0 k0 u0) (CHead e0 k (lift (S h0) (r k d) u))
                                 λe0:C.drop (S h0) (r k d) e0 c
                            we proved 
                               ex2
                                 C
                                 λe0:C.eq C (CHead c0 k0 u0) (CHead e0 k (lift (S h0) (r k d) u))
                                 λe0:C.drop (S h0) (r k d) e0 c

                            H4:eq nat O (S d)
                              .H5:eq C e (CHead c k u)
                                .ex2
                                  C
                                  λe0:C.eq C (CHead c0 k0 u0) (CHead e0 k (lift (S h0) (r k d) u))
                                  λe0:C.drop (S h0) (r k d) e0 c
                   case drop_skip : k0:K h0:nat d0:nat c0:C e:C H2:drop h0 (r k0 d0) c0 e u0:T 
                      the thesis becomes 
                      H4:eq nat (S d0) (S d)
                        .H5:eq C (CHead e k0 u0) (CHead c k u)
                          .ex2
                            C
                            λe0:C.eq C (CHead c0 k0 (lift h0 (r k0 d0) u0)) (CHead e0 k (lift h0 (r k d) u))
                            λe0:C.drop h0 (r k d) e0 c
                      (H3) by induction hypothesis we know 
                         eq nat (r k0 d0) (S d)
                           (eq C e (CHead c k u)
                                ex2 C λe0:C.eq C c0 (CHead e0 k (lift h0 (r k d) u)) λe0:C.drop h0 (r k d) e0 c)
                          suppose H4eq nat (S d0) (S d)
                          suppose H5eq C (CHead e k0 u0) (CHead c k u)
                            (H6
                               by (f_equal . . . . . H5)
                               we proved 
                                  eq
                                    C
                                    <λ:C.C> CASE CHead e k0 u0 OF CSort e | CHead c1  c1
                                    <λ:C.C> CASE CHead c k u OF CSort e | CHead c1  c1

                                  eq
                                    C
                                    λe0:C.<λ:C.C> CASE e0 OF CSort e | CHead c1  c1 (CHead e k0 u0)
                                    λe0:C.<λ:C.C> CASE e0 OF CSort e | CHead c1  c1 (CHead c k u)
                            end of H6
                            (h1
                               (H7
                                  by (f_equal . . . . . H5)
                                  we proved 
                                     eq
                                       K
                                       <λ:C.K> CASE CHead e k0 u0 OF CSort k0 | CHead  k1 k1
                                       <λ:C.K> CASE CHead c k u OF CSort k0 | CHead  k1 k1

                                     eq
                                       K
                                       λe0:C.<λ:C.K> CASE e0 OF CSort k0 | CHead  k1 k1 (CHead e k0 u0)
                                       λe0:C.<λ:C.K> CASE e0 OF CSort k0 | CHead  k1 k1 (CHead c k u)
                               end of H7
                               (h1
                                  (H8
                                     by (f_equal . . . . . H5)
                                     we proved 
                                        eq
                                          T
                                          <λ:C.T> CASE CHead e k0 u0 OF CSort u0 | CHead   tt
                                          <λ:C.T> CASE CHead c k u OF CSort u0 | CHead   tt

                                        eq
                                          T
                                          λe0:C.<λ:C.T> CASE e0 OF CSort u0 | CHead   tt (CHead e k0 u0)
                                          λe0:C.<λ:C.T> CASE e0 OF CSort u0 | CHead   tt (CHead c k u)
                                  end of H8
                                   suppose H9eq K k0 k
                                   suppose H10eq C e c
                                     (h1
                                        (H11
                                           we proceed by induction on H10 to prove 
                                              eq nat (r k0 d0) (S d)
                                                (eq C c (CHead c k u)
                                                     ex2 C λe0:C.eq C c0 (CHead e0 k (lift h0 (r k d) u)) λe0:C.drop h0 (r k d) e0 c)
                                              case refl_equal : 
                                                 the thesis becomes the hypothesis H3

                                              eq nat (r k0 d0) (S d)
                                                (eq C c (CHead c k u)
                                                     ex2 C λe0:C.eq C c0 (CHead e0 k (lift h0 (r k d) u)) λe0:C.drop h0 (r k d) e0 c)
                                        end of H11
                                        (H12
                                           we proceed by induction on H10 to prove drop h0 (r k0 d0) c0 c
                                              case refl_equal : 
                                                 the thesis becomes the hypothesis H2
drop h0 (r k0 d0) c0 c
                                        end of H12
                                        (H13
                                           we proceed by induction on H9 to prove 
                                              eq nat (r k d0) (S d)
                                                (eq C c (CHead c k u)
                                                     ex2 C λe0:C.eq C c0 (CHead e0 k (lift h0 (r k d) u)) λe0:C.drop h0 (r k d) e0 c)
                                              case refl_equal : 
                                                 the thesis becomes the hypothesis H11

                                              eq nat (r k d0) (S d)
                                                (eq C c (CHead c k u)
                                                     ex2 C λe0:C.eq C c0 (CHead e0 k (lift h0 (r k d) u)) λe0:C.drop h0 (r k d) e0 c)
                                        end of H13
                                        (H14
                                           we proceed by induction on H9 to prove drop h0 (r k d0) c0 c
                                              case refl_equal : 
                                                 the thesis becomes the hypothesis H12
drop h0 (r k d0) c0 c
                                        end of H14
                                        (H15
                                           by (f_equal . . . . . H4)
                                           we proved 
                                              eq
                                                nat
                                                <λ:nat.nat> CASE S d0 OF Od0 | S nn
                                                <λ:nat.nat> CASE S d OF Od0 | S nn

                                              eq
                                                nat
                                                λe0:nat.<λ:nat.nat> CASE e0 OF Od0 | S nn (S d0)
                                                λe0:nat.<λ:nat.nat> CASE e0 OF Od0 | S nn (S d)
                                        end of H15
                                        (H17
                                           consider H15
                                           we proved 
                                              eq
                                                nat
                                                <λ:nat.nat> CASE S d0 OF Od0 | S nn
                                                <λ:nat.nat> CASE S d OF Od0 | S nn
                                           that is equivalent to eq nat d0 d
                                           we proceed by induction on the previous result to prove drop h0 (r k d) c0 c
                                              case refl_equal : 
                                                 the thesis becomes the hypothesis H14
drop h0 (r k d) c0 c
                                        end of H17
                                        (h1
                                           by (refl_equal . .)
                                           we proved eq C (CHead c0 k (lift h0 (r k d) u)) (CHead c0 k (lift h0 (r k d) u))
                                           by (ex_intro2 . . . . previous H17)

                                              ex2
                                                C
                                                λe0:C.eq C (CHead c0 k (lift h0 (r k d) u)) (CHead e0 k (lift h0 (r k d) u))
                                                λe0:C.drop h0 (r k d) e0 c
                                        end of h1
                                        (h2
                                           consider H15
                                           we proved 
                                              eq
                                                nat
                                                <λ:nat.nat> CASE S d0 OF Od0 | S nn
                                                <λ:nat.nat> CASE S d OF Od0 | S nn
eq nat d0 d
                                        end of h2
                                        by (eq_ind_r . . . h1 . h2)
                                        we proved 
                                           ex2
                                             C
                                             λe0:C.eq C (CHead c0 k (lift h0 (r k d0) u)) (CHead e0 k (lift h0 (r k d) u))
                                             λe0:C.drop h0 (r k d) e0 c
                                        by (eq_ind_r . . . previous . H9)

                                           ex2
                                             C
                                             λe0:C.eq C (CHead c0 k0 (lift h0 (r k0 d0) u)) (CHead e0 k (lift h0 (r k d) u))
                                             λe0:C.drop h0 (r k d) e0 c
                                     end of h1
                                     (h2
                                        consider H8
                                        we proved 
                                           eq
                                             T
                                             <λ:C.T> CASE CHead e k0 u0 OF CSort u0 | CHead   tt
                                             <λ:C.T> CASE CHead c k u OF CSort u0 | CHead   tt
eq T u0 u
                                     end of h2
                                     by (eq_ind_r . . . h1 . h2)
                                     we proved 
                                        ex2
                                          C
                                          λe0:C.eq C (CHead c0 k0 (lift h0 (r k0 d0) u0)) (CHead e0 k (lift h0 (r k d) u))
                                          λe0:C.drop h0 (r k d) e0 c

                                     eq K k0 k
                                       (eq C e c
                                            (ex2
                                                 C
                                                 λe0:C.eq C (CHead c0 k0 (lift h0 (r k0 d0) u0)) (CHead e0 k (lift h0 (r k d) u))
                                                 λe0:C.drop h0 (r k d) e0 c))
                               end of h1
                               (h2
                                  consider H7
                                  we proved 
                                     eq
                                       K
                                       <λ:C.K> CASE CHead e k0 u0 OF CSort k0 | CHead  k1 k1
                                       <λ:C.K> CASE CHead c k u OF CSort k0 | CHead  k1 k1
eq K k0 k
                               end of h2
                               by (h1 h2)

                                  eq C e c
                                    (ex2
                                         C
                                         λe0:C.eq C (CHead c0 k0 (lift h0 (r k0 d0) u0)) (CHead e0 k (lift h0 (r k d) u))
                                         λe0:C.drop h0 (r k d) e0 c)
                            end of h1
                            (h2
                               consider H6
                               we proved 
                                  eq
                                    C
                                    <λ:C.C> CASE CHead e k0 u0 OF CSort e | CHead c1  c1
                                    <λ:C.C> CASE CHead c k u OF CSort e | CHead c1  c1
eq C e c
                            end of h2
                            by (h1 h2)
                            we proved 
                               ex2
                                 C
                                 λe0:C.eq C (CHead c0 k0 (lift h0 (r k0 d0) u0)) (CHead e0 k (lift h0 (r k d) u))
                                 λe0:C.drop h0 (r k d) e0 c

                            H4:eq nat (S d0) (S d)
                              .H5:eq C (CHead e k0 u0) (CHead c k u)
                                .ex2
                                  C
                                  λe0:C.eq C (CHead c0 k0 (lift h0 (r k0 d0) u0)) (CHead e0 k (lift h0 (r k d) u))
                                  λe0:C.drop h0 (r k d) e0 c
                we proved 
                   eq nat y0 (S d)
                     (eq C y (CHead c k u)
                          (ex2
                               C
                               λe:C.eq C x (CHead e k (lift h (r k d) u))
                               λe:C.drop h (r k d) e c))
             we proved 
                y0:nat
                  .drop h y0 x y
                    (eq nat y0 (S d)
                         (eq C y (CHead c k u)
                              (ex2
                                   C
                                   λe:C.eq C x (CHead e k (lift h (r k d) u))
                                   λe:C.drop h (r k d) e c)))
             by (insert_eq . . . . previous H0)
             we proved 
                eq C y (CHead c k u)
                  (ex2
                       C
                       λe:C.eq C x (CHead e k (lift h (r k d) u))
                       λe:C.drop h (r k d) e c)
          we proved 
             y:C
               .drop h (S d) x y
                 (eq C y (CHead c k u)
                      (ex2
                           C
                           λe:C.eq C x (CHead e k (lift h (r k d) u))
                           λe:C.drop h (r k d) e c))
          by (insert_eq . . . . previous H)
          we proved 
             ex2
               C
               λe:C.eq C x (CHead e k (lift h (r k d) u))
               λe:C.drop h (r k d) e c
       we proved 
          c:C
            .x:C
              .u:T
                .h:nat
                  .d:nat
                    .k:K
                      .drop h (S d) x (CHead c k u)
                        (ex2
                             C
                             λe:C.eq C x (CHead e k (lift h (r k d) u))
                             λe:C.drop h (r k d) e c)