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 n: nat
          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 i: nat
                    suppose H: lt i O
                    assume c1: C
                    assume c2: C
                    assume v: T
                    suppose : csubst0 i v c1 c2
                    assume e: C
                    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 i: nat
                    suppose H0: lt i (S n0)
                    assume c1: C
                      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 c2: C
                                assume v: T
                                suppose : csubst0 i v (CSort n1) c2
                                assume e: C
                                suppose H2: drop (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 O⇒False | S ⇒True
                                                 case refl_equal : ⇒
                                                    the thesis becomes <λ:nat.Prop> CASE S n0 OF O⇒False | S ⇒True
                                                       consider I
                                                       we proved True
<λ:nat.Prop> CASE S n0 OF O⇒False | S ⇒True
<λ:nat.Prop> CASE O OF O⇒False | S ⇒True
                                           end of H6
                                           consider H6
                                           we proved <λ:nat.Prop> CASE O OF O⇒False | 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 c2: C
                                assume v: T
                                suppose H2: csubst0 i v (CHead c k t) c2
                                assume e: C
                                suppose H3: drop (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 b: B
                                                        suppose H10: drop (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 f: F
                                                        suppose H10: drop (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 H12: lt (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 b: B
                                                        suppose H10: drop (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 H12: lt (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 f: F
                                                        suppose H10: drop (r (Flat f) n0) O c e
                                                        suppose 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)
                                                        suppose H12: lt (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 b: B
                                                        suppose H11: drop (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 H13: lt (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 f: F
                                                        suppose H11: drop (r (Flat f) n0) O c e
                                                        suppose 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)
                                                        suppose H13: lt (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)