DEFINITION csubst0_drop_gt()
TYPE =
       n:nat
         .i:nat
           .(lt i n)c1:C.c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop n O c1 e)(drop n O c2 e)
BODY =
       assume nnat
          we proceed by induction on n to prove 
             i:nat
               .(lt i n)c1:C.c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop n O c1 e)(drop n O c2 e)
             case O : 
                the thesis becomes 
                i:nat
                  .(lt i O)c1:C.c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop O O c1 e)(drop O O c2 e)
                    assume inat
                    suppose Hlt i O
                    assume c1C
                    assume c2C
                    assume vT
                    suppose csubst0 i v c1 c2
                    assume eC
                    suppose drop O O c1 e
                      by (lt_x_O . H .)
                      we proved drop O O c2 e

                      i:nat
                        .(lt i O)c1:C.c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop O O c1 e)(drop O O c2 e)
             case S : n0:nat 
                the thesis becomes 
                i:nat
                  .H0:lt i (S n0)
                    .c1:C.c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop (S n0) O c1 e)(drop (S n0) O c2 e)
                (H) by induction hypothesis we know i:nat.(lt i n0)c1:C.c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop n0 O c1 e)(drop n0 O c2 e)
                    assume inat
                    suppose H0lt i (S n0)
                    assume c1C
                      we proceed by induction on c1 to prove c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop (S n0) O c1 e)(drop (S n0) O c2 e)
                         case CSort : n1:nat 
                            the thesis becomes 
                            c2:C
                              .v:T
                                .(csubst0 i v (CSort n1) c2)e:C.H2:(drop (S n0) O (CSort n1) e).(drop (S n0) O c2 e)
                                assume c2C
                                assume vT
                                suppose csubst0 i v (CSort n1) c2
                                assume eC
                                suppose H2drop (S n0) O (CSort n1) e
                                  by (drop_gen_sort . . . . H2)
                                  we proved and3 (eq C e (CSort n1)) (eq nat (S n0) O) (eq nat O O)
                                  we proceed by induction on the previous result to prove drop (S n0) O c2 e
                                     case and3_intro : H3:eq C e (CSort n1) H4:eq nat (S n0) O :eq nat O O 
                                        the thesis becomes drop (S n0) O c2 e
                                           (H6
                                              we proceed by induction on H4 to prove <λ:nat.Prop> CASE O OF OFalse | S True
                                                 case refl_equal : 
                                                    the thesis becomes <λ:nat.Prop> CASE S n0 OF OFalse | S True
                                                       consider I
                                                       we proved True
<λ:nat.Prop> CASE S n0 OF OFalse | S True
<λ:nat.Prop> CASE O OF OFalse | S True
                                           end of H6
                                           consider H6
                                           we proved <λ:nat.Prop> CASE O OF OFalse | S True
                                           that is equivalent to False
                                           we proceed by induction on the previous result to prove drop (S n0) O c2 (CSort n1)
                                           we proved drop (S n0) O c2 (CSort n1)
                                           by (eq_ind_r . . . previous . H3)
drop (S n0) O c2 e
                                  we proved drop (S n0) O c2 e

                                  c2:C
                                    .v:T
                                      .(csubst0 i v (CSort n1) c2)e:C.H2:(drop (S n0) O (CSort n1) e).(drop (S n0) O c2 e)
                         case CHead : c:C k:K t:T 
                            the thesis becomes 
                            c2:C
                              .v:T
                                .H2:(csubst0 i v (CHead c k t) c2).e:C.H3:(drop (S n0) O (CHead c k t) e).(drop (S n0) O c2 e)
                            (H1) by induction hypothesis we know c2:C.v:T.(csubst0 i v c c2)e:C.(drop (S n0) O c e)(drop (S n0) O c2 e)
                                assume c2C
                                assume vT
                                suppose H2csubst0 i v (CHead c k t) c2
                                assume eC
                                suppose H3drop (S n0) O (CHead c k t) e
                                  by (csubst0_gen_head . . . . . . H2)
                                  we proved 
                                     or3
                                       ex3_2
                                         T
                                         nat
                                         λ:T.λj:nat.eq nat i (s k j)
                                         λu2:T.λ:nat.eq C c2 (CHead c k u2)
                                         λu2:T.λj:nat.subst0 j v t u2
                                       ex3_2
                                         C
                                         nat
                                         λ:C.λj:nat.eq nat i (s k j)
                                         λc2:C.λ:nat.eq C c2 (CHead c2 k t)
                                         λc2:C.λj:nat.csubst0 j v c c2
                                       ex4_3
                                         T
                                         C
                                         nat
                                         λ:T.λ:C.λj:nat.eq nat i (s k j)
                                         λu2:T.λc2:C.λ:nat.eq C c2 (CHead c2 k u2)
                                         λu2:T.λ:C.λj:nat.subst0 j v t u2
                                         λ:T.λc2:C.λj:nat.csubst0 j v c c2
                                  we proceed by induction on the previous result to prove drop (S n0) O c2 e
                                     case or3_intro0 : H4:ex3_2 T nat λ:T.λj:nat.eq nat i (s k j) λu2:T.λ:nat.eq C c2 (CHead c k u2) λu2:T.λj:nat.subst0 j v t u2 
                                        the thesis becomes drop (S n0) O c2 e
                                           we proceed by induction on H4 to prove drop (S n0) O c2 e
                                              case ex3_2_intro : x0:T x1:nat H5:eq nat i (s k x1) H6:eq C c2 (CHead c k x0) :subst0 x1 v t x0 
                                                 the thesis becomes drop (S n0) O c2 e
                                                    (H8
                                                       we proceed by induction on H5 to prove c3:C.v0:T.(csubst0 (s k x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                          case refl_equal : 
                                                             the thesis becomes the hypothesis H1
c3:C.v0:T.(csubst0 (s k x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                    end of H8
                                                    (H9
                                                       we proceed by induction on H5 to prove lt (s k x1) (S n0)
                                                          case refl_equal : 
                                                             the thesis becomes the hypothesis H0
lt (s k x1) (S n0)
                                                    end of H9
                                                    by (drop_gen_drop . . . . . H3)
                                                    we proved drop (r k n0) O c e
                                                       assume bB
                                                        suppose H10drop (r (Bind b) n0) O c e
                                                        suppose c3:C.v0:T.(csubst0 (s (Bind b) x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                        suppose lt (s (Bind b) x1) (S n0)
                                                          by (drop_drop . . . . H10 .)
                                                          we proved drop (S n0) O (CHead c (Bind b) x0) e

                                                          H10:drop (r (Bind b) n0) O c e
                                                            .c3:C.v0:T.(csubst0 (s (Bind b) x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                              (lt (s (Bind b) x1) (S n0)
                                                                   drop (S n0) O (CHead c (Bind b) x0) e)
                                                       assume fF
                                                        suppose H10drop (r (Flat f) n0) O c e
                                                        suppose c3:C.v0:T.(csubst0 (s (Flat f) x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                        suppose H12lt (s (Flat f) x1) (S n0)
                                                          consider H12
                                                          we proved lt (s (Flat f) x1) (S n0)
                                                          that is equivalent to lt x1 (S n0)
                                                          by (lt_gen_xS . . previous)
                                                          we proved or (eq nat x1 O) (ex2 nat λm:nat.eq nat x1 (S m) λm:nat.lt m n0)
                                                          we proceed by induction on the previous result to prove drop (S n0) O (CHead c (Flat f) x0) e
                                                             case or_introl : :eq nat x1 O 
                                                                the thesis becomes drop (S n0) O (CHead c (Flat f) x0) e
                                                                   by (drop_drop . . . . H10 .)
drop (S n0) O (CHead c (Flat f) x0) e
                                                             case or_intror : H13:ex2 nat λm:nat.eq nat x1 (S m) λm:nat.lt m n0 
                                                                the thesis becomes drop (S n0) O (CHead c (Flat f) x0) e
                                                                   we proceed by induction on H13 to prove drop (S n0) O (CHead c (Flat f) x0) e
                                                                      case ex_intro2 : x:nat :eq nat x1 (S x) :lt x n0 
                                                                         the thesis becomes drop (S n0) O (CHead c (Flat f) x0) e
                                                                            by (drop_drop . . . . H10 .)
drop (S n0) O (CHead c (Flat f) x0) e
drop (S n0) O (CHead c (Flat f) x0) e
                                                          we proved drop (S n0) O (CHead c (Flat f) x0) e

                                                          H10:drop (r (Flat f) n0) O c e
                                                            .c3:C.v0:T.(csubst0 (s (Flat f) x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                              H12:(lt (s (Flat f) x1) (S n0)).(drop (S n0) O (CHead c (Flat f) x0) e)
                                                    by (previous . previous H8 H9)
                                                    we proved drop (S n0) O (CHead c k x0) e
                                                    by (eq_ind_r . . . previous . H6)
drop (S n0) O c2 e
drop (S n0) O c2 e
                                     case or3_intro1 : H4:ex3_2 C nat λ:C.λj:nat.eq nat i (s k j) λc3:C.λ:nat.eq C c2 (CHead c3 k t) λc3:C.λj:nat.csubst0 j v c c3 
                                        the thesis becomes drop (S n0) O c2 e
                                           we proceed by induction on H4 to prove drop (S n0) O c2 e
                                              case ex3_2_intro : x0:C x1:nat H5:eq nat i (s k x1) H6:eq C c2 (CHead x0 k t) H7:csubst0 x1 v c x0 
                                                 the thesis becomes drop (S n0) O c2 e
                                                    (H8
                                                       we proceed by induction on H5 to prove c3:C.v0:T.(csubst0 (s k x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                          case refl_equal : 
                                                             the thesis becomes the hypothesis H1
c3:C.v0:T.(csubst0 (s k x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                    end of H8
                                                    (H9
                                                       we proceed by induction on H5 to prove lt (s k x1) (S n0)
                                                          case refl_equal : 
                                                             the thesis becomes the hypothesis H0
lt (s k x1) (S n0)
                                                    end of H9
                                                    by (drop_gen_drop . . . . . H3)
                                                    we proved drop (r k n0) O c e
                                                       assume bB
                                                        suppose H10drop (r (Bind b) n0) O c e
                                                        suppose c3:C.v0:T.(csubst0 (s (Bind b) x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                        suppose H12lt (s (Bind b) x1) (S n0)
                                                          (h1
                                                             consider H12
                                                             we proved lt (s (Bind b) x1) (S n0)
                                                             that is equivalent to lt (S x1) (S n0)
                                                             by (lt_S_n . . previous)
lt x1 n0
                                                          end of h1
                                                          (h2
                                                             consider H10
                                                             we proved drop (r (Bind b) n0) O c e
drop n0 O c e
                                                          end of h2
                                                          by (H . h1 . . . H7 . h2)
                                                          we proved drop n0 O x0 e
                                                          that is equivalent to drop (r (Bind b) n0) O x0 e
                                                          by (drop_drop . . . . previous .)
                                                          we proved drop (S n0) O (CHead x0 (Bind b) t) e

                                                          H10:drop (r (Bind b) n0) O c e
                                                            .c3:C.v0:T.(csubst0 (s (Bind b) x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                              H12:(lt (s (Bind b) x1) (S n0)).(drop (S n0) O (CHead x0 (Bind b) t) e)
                                                       assume fF
                                                        suppose H10drop (r (Flat f) n0) O c e
                                                        suppose H11c3:C.v0:T.(csubst0 (s (Flat f) x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                        suppose H12lt (s (Flat f) x1) (S n0)
                                                          consider H12
                                                          we proved lt (s (Flat f) x1) (S n0)
                                                          that is equivalent to lt x1 (S n0)
                                                          by (lt_gen_xS . . previous)
                                                          we proved or (eq nat x1 O) (ex2 nat λm:nat.eq nat x1 (S m) λm:nat.lt m n0)
                                                          we proceed by induction on the previous result to prove drop (S n0) O (CHead x0 (Flat f) t) e
                                                             case or_introl : :eq nat x1 O 
                                                                the thesis becomes drop (S n0) O (CHead x0 (Flat f) t) e
                                                                   (h1
                                                                      consider H7
                                                                      we proved csubst0 x1 v c x0
csubst0 (s (Flat f) x1) v c x0
                                                                   end of h1
                                                                   (h2
                                                                      consider H10
                                                                      we proved drop (r (Flat f) n0) O c e
drop (S n0) O c e
                                                                   end of h2
                                                                   by (H11 . . h1 . h2)
                                                                   we proved drop (S n0) O x0 e
                                                                   that is equivalent to drop (r (Flat f) n0) O x0 e
                                                                   by (drop_drop . . . . previous .)
drop (S n0) O (CHead x0 (Flat f) t) e
                                                             case or_intror : H13:ex2 nat λm:nat.eq nat x1 (S m) λm:nat.lt m n0 
                                                                the thesis becomes drop (S n0) O (CHead x0 (Flat f) t) e
                                                                   we proceed by induction on H13 to prove drop (S n0) O (CHead x0 (Flat f) t) e
                                                                      case ex_intro2 : x:nat :eq nat x1 (S x) :lt x n0 
                                                                         the thesis becomes drop (S n0) O (CHead x0 (Flat f) t) e
                                                                            (h1
                                                                               consider H7
                                                                               we proved csubst0 x1 v c x0
csubst0 (s (Flat f) x1) v c x0
                                                                            end of h1
                                                                            (h2
                                                                               consider H10
                                                                               we proved drop (r (Flat f) n0) O c e
drop (S n0) O c e
                                                                            end of h2
                                                                            by (H11 . . h1 . h2)
                                                                            we proved drop (S n0) O x0 e
                                                                            that is equivalent to drop (r (Flat f) n0) O x0 e
                                                                            by (drop_drop . . . . previous .)
drop (S n0) O (CHead x0 (Flat f) t) e
drop (S n0) O (CHead x0 (Flat f) t) e
                                                          we proved drop (S n0) O (CHead x0 (Flat f) t) e

                                                          H10:drop (r (Flat f) n0) O c e
                                                            .H11:c3:C.v0:T.(csubst0 (s (Flat f) x1) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                              .H12:(lt (s (Flat f) x1) (S n0)).(drop (S n0) O (CHead x0 (Flat f) t) e)
                                                    by (previous . previous H8 H9)
                                                    we proved drop (S n0) O (CHead x0 k t) e
                                                    by (eq_ind_r . . . previous . H6)
drop (S n0) O c2 e
drop (S n0) O c2 e
                                     case or3_intro2 : H4:ex4_3 T C nat λ:T.λ:C.λj:nat.eq nat i (s k j) λu2:T.λc3:C.λ:nat.eq C c2 (CHead c3 k u2) λu2:T.λ:C.λj:nat.subst0 j v t u2 λ:T.λc3:C.λj:nat.csubst0 j v c c3 
                                        the thesis becomes drop (S n0) O c2 e
                                           we proceed by induction on H4 to prove drop (S n0) O c2 e
                                              case ex4_3_intro : x0:T x1:C x2:nat H5:eq nat i (s k x2) H6:eq C c2 (CHead x1 k x0) :subst0 x2 v t x0 H8:csubst0 x2 v c x1 
                                                 the thesis becomes drop (S n0) O c2 e
                                                    (H9
                                                       we proceed by induction on H5 to prove c3:C.v0:T.(csubst0 (s k x2) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                          case refl_equal : 
                                                             the thesis becomes the hypothesis H1
c3:C.v0:T.(csubst0 (s k x2) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                    end of H9
                                                    (H10
                                                       we proceed by induction on H5 to prove lt (s k x2) (S n0)
                                                          case refl_equal : 
                                                             the thesis becomes the hypothesis H0
lt (s k x2) (S n0)
                                                    end of H10
                                                    by (drop_gen_drop . . . . . H3)
                                                    we proved drop (r k n0) O c e
                                                       assume bB
                                                        suppose H11drop (r (Bind b) n0) O c e
                                                        suppose c3:C.v0:T.(csubst0 (s (Bind b) x2) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                        suppose H13lt (s (Bind b) x2) (S n0)
                                                          (h1
                                                             consider H13
                                                             we proved lt (s (Bind b) x2) (S n0)
                                                             that is equivalent to lt (S x2) (S n0)
                                                             by (lt_S_n . . previous)
lt x2 n0
                                                          end of h1
                                                          (h2
                                                             consider H11
                                                             we proved drop (r (Bind b) n0) O c e
drop n0 O c e
                                                          end of h2
                                                          by (H . h1 . . . H8 . h2)
                                                          we proved drop n0 O x1 e
                                                          that is equivalent to drop (r (Bind b) n0) O x1 e
                                                          by (drop_drop . . . . previous .)
                                                          we proved drop (S n0) O (CHead x1 (Bind b) x0) e

                                                          H11:drop (r (Bind b) n0) O c e
                                                            .c3:C.v0:T.(csubst0 (s (Bind b) x2) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                              H13:(lt (s (Bind b) x2) (S n0)).(drop (S n0) O (CHead x1 (Bind b) x0) e)
                                                       assume fF
                                                        suppose H11drop (r (Flat f) n0) O c e
                                                        suppose H12c3:C.v0:T.(csubst0 (s (Flat f) x2) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                        suppose H13lt (s (Flat f) x2) (S n0)
                                                          consider H13
                                                          we proved lt (s (Flat f) x2) (S n0)
                                                          that is equivalent to lt x2 (S n0)
                                                          by (lt_gen_xS . . previous)
                                                          we proved or (eq nat x2 O) (ex2 nat λm:nat.eq nat x2 (S m) λm:nat.lt m n0)
                                                          we proceed by induction on the previous result to prove drop (S n0) O (CHead x1 (Flat f) x0) e
                                                             case or_introl : :eq nat x2 O 
                                                                the thesis becomes drop (S n0) O (CHead x1 (Flat f) x0) e
                                                                   (h1
                                                                      consider H8
                                                                      we proved csubst0 x2 v c x1
csubst0 (s (Flat f) x2) v c x1
                                                                   end of h1
                                                                   (h2
                                                                      consider H11
                                                                      we proved drop (r (Flat f) n0) O c e
drop (S n0) O c e
                                                                   end of h2
                                                                   by (H12 . . h1 . h2)
                                                                   we proved drop (S n0) O x1 e
                                                                   that is equivalent to drop (r (Flat f) n0) O x1 e
                                                                   by (drop_drop . . . . previous .)
drop (S n0) O (CHead x1 (Flat f) x0) e
                                                             case or_intror : H14:ex2 nat λm:nat.eq nat x2 (S m) λm:nat.lt m n0 
                                                                the thesis becomes drop (S n0) O (CHead x1 (Flat f) x0) e
                                                                   we proceed by induction on H14 to prove drop (S n0) O (CHead x1 (Flat f) x0) e
                                                                      case ex_intro2 : x:nat :eq nat x2 (S x) :lt x n0 
                                                                         the thesis becomes drop (S n0) O (CHead x1 (Flat f) x0) e
                                                                            (h1
                                                                               consider H8
                                                                               we proved csubst0 x2 v c x1
csubst0 (s (Flat f) x2) v c x1
                                                                            end of h1
                                                                            (h2
                                                                               consider H11
                                                                               we proved drop (r (Flat f) n0) O c e
drop (S n0) O c e
                                                                            end of h2
                                                                            by (H12 . . h1 . h2)
                                                                            we proved drop (S n0) O x1 e
                                                                            that is equivalent to drop (r (Flat f) n0) O x1 e
                                                                            by (drop_drop . . . . previous .)
drop (S n0) O (CHead x1 (Flat f) x0) e
drop (S n0) O (CHead x1 (Flat f) x0) e
                                                          we proved drop (S n0) O (CHead x1 (Flat f) x0) e

                                                          H11:drop (r (Flat f) n0) O c e
                                                            .H12:c3:C.v0:T.(csubst0 (s (Flat f) x2) v0 c c3)e0:C.(drop (S n0) O c e0)(drop (S n0) O c3 e0)
                                                              .H13:(lt (s (Flat f) x2) (S n0)).(drop (S n0) O (CHead x1 (Flat f) x0) e)
                                                    by (previous . previous H9 H10)
                                                    we proved drop (S n0) O (CHead x1 k x0) e
                                                    by (eq_ind_r . . . previous . H6)
drop (S n0) O c2 e
drop (S n0) O c2 e
                                  we proved drop (S n0) O c2 e

                                  c2:C
                                    .v:T
                                      .H2:(csubst0 i v (CHead c k t) c2).e:C.H3:(drop (S n0) O (CHead c k t) e).(drop (S n0) O c2 e)
                      we proved c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop (S n0) O c1 e)(drop (S n0) O c2 e)

                      i:nat
                        .H0:lt i (S n0)
                          .c1:C.c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop (S n0) O c1 e)(drop (S n0) O c2 e)
          we proved 
             i:nat
               .(lt i n)c1:C.c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop n O c1 e)(drop n O c2 e)
       we proved 
          n:nat
            .i:nat
              .(lt i n)c1:C.c2:C.v:T.(csubst0 i v c1 c2)e:C.(drop n O c1 e)(drop n O c2 e)