DEFINITION drop_conf_rev()
TYPE =
       j:nat
         .e1:C
           .e2:C
             .drop j O e1 e2
               c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop j O c1 c2 λc1:C.drop i j c1 e1)
BODY =
       assume jnat
          we proceed by induction on j to prove 
             e1:C
               .e2:C
                 .drop j O e1 e2
                   c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop j O c1 c2 λc1:C.drop i j c1 e1)
             case O : 
                the thesis becomes 
                e1:C
                  .e2:C
                    .drop O O e1 e2
                      c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop O O c1 c2 λc1:C.drop i O c1 e1)
                    assume e1C
                    assume e2C
                    suppose Hdrop O O e1 e2
                    assume c2C
                    assume inat
                    suppose H0drop i O c2 e2
                      (H1
                         by (drop_gen_refl . . H)
                         we proved eq C e1 e2
                         by (eq_ind_r . . . H0 . previous)
drop i O c2 e1
                      end of H1
                      by (drop_refl .)
                      we proved drop O O c2 c2
                      by (ex_intro2 . . . . previous H1)
                      we proved ex2 C λc1:C.drop O O c1 c2 λc1:C.drop i O c1 e1

                      e1:C
                        .e2:C
                          .drop O O e1 e2
                            c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop O O c1 c2 λc1:C.drop i O c1 e1)
             case S : j0:nat 
                the thesis becomes 
                e1:C
                  .e2:C
                    .drop (S j0) O e1 e2
                      c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 e1)
                (IHj) by induction hypothesis we know 
                   e1:C
                     .e2:C.(drop j0 O e1 e2)c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop j0 O c1 c2 λc1:C.drop i j0 c1 e1)
                   assume e1C
                      we proceed by induction on e1 to prove 
                         e2:C
                           .drop (S j0) O e1 e2
                             c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 e1)
                         case CSort : n:nat 
                            the thesis becomes 
                            e2:C
                              .H:drop (S j0) O (CSort n) e2
                                .c2:C.i:nat.H0:(drop i O c2 e2).(ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CSort n))
                                assume e2C
                                suppose Hdrop (S j0) O (CSort n) e2
                                assume c2C
                                assume inat
                                suppose H0drop i O c2 e2
                                  by (drop_gen_sort . . . . H)
                                  we proved and3 (eq C e2 (CSort n)) (eq nat (S j0) O) (eq nat O O)
                                  we proceed by induction on the previous result to prove ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CSort n)
                                     case and3_intro : H1:eq C e2 (CSort n) H2:eq nat (S j0) O :eq nat O O 
                                        the thesis becomes ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CSort n)
                                           (H5
                                              we proceed by induction on H2 to prove <λ:nat.Prop> CASE O OF OFalse | S True
                                                 case refl_equal : 
                                                    the thesis becomes <λ:nat.Prop> CASE S j0 OF OFalse | S True
                                                       consider I
                                                       we proved True
<λ:nat.Prop> CASE S j0 OF OFalse | S True
<λ:nat.Prop> CASE O OF OFalse | S True
                                           end of H5
                                           consider H5
                                           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 ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CSort n)
ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CSort n)
                                  we proved ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CSort n)

                                  e2:C
                                    .H:drop (S j0) O (CSort n) e2
                                      .c2:C.i:nat.H0:(drop i O c2 e2).(ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CSort n))
                         case CHead : e2:C k:K t:T 
                            the thesis becomes 
                            e3:C
                              .H:drop (S j0) O (CHead e2 k t) e3
                                .c2:C.i:nat.H0:(drop i O c2 e3).(ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 k t))
                            (IHe1) by induction hypothesis we know 
                               e3:C
                                 .drop (S j0) O e2 e3
                                   c2:C.i:nat.(drop i O c2 e3)(ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 e2)
                                assume e3C
                                suppose Hdrop (S j0) O (CHead e2 k t) e3
                                assume c2C
                                assume inat
                                suppose H0drop i O c2 e3
                                  by (drop_gen_drop . . . . . H)
                                  we proved drop (r k j0) O e2 e3
                                     assume bB
                                     suppose H1drop (r (Bind b) j0) O e2 e3
                                        (H_x
                                           consider H1
                                           we proved drop (r (Bind b) j0) O e2 e3
                                           that is equivalent to drop j0 O e2 e3
                                           by (IHj . . previous . . H0)
ex2 C λc1:C.drop j0 O c1 c2 λc1:C.drop i j0 c1 e2
                                        end of H_x
                                        (H2consider H_x
                                        we proceed by induction on H2 to prove ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Bind b) t)
                                           case ex_intro2 : x:C H3:drop j0 O x c2 H4:drop i j0 x e2 
                                              the thesis becomes ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Bind b) t)
                                                 (h1
                                                    consider H3
                                                    we proved drop j0 O x c2
                                                    that is equivalent to drop (r (Bind b) j0) O x c2
                                                    by (drop_drop . . . . previous .)
drop (S j0) O (CHead x (Bind b) (lift i (r (Bind b) j0) t)) c2
                                                 end of h1
                                                 (h2
                                                    consider H4
                                                    we proved drop i j0 x e2
                                                    that is equivalent to drop i (r (Bind b) j0) x e2
                                                    by (drop_skip . . . . . previous .)

                                                       drop
                                                         i
                                                         S j0
                                                         CHead x (Bind b) (lift i (r (Bind b) j0) t)
                                                         CHead e2 (Bind b) t
                                                 end of h2
                                                 by (ex_intro2 . . . . h1 h2)
ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Bind b) t)
                                        we proved ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Bind b) t)

                                        H1:drop (r (Bind b) j0) O e2 e3
                                          .ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Bind b) t)
                                     assume fF
                                     suppose H1drop (r (Flat f) j0) O e2 e3
                                        (H_x
                                           consider H1
                                           we proved drop (r (Flat f) j0) O e2 e3
                                           that is equivalent to drop (S j0) O e2 e3
                                           by (IHe1 . previous . . H0)
ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 e2
                                        end of H_x
                                        (H2consider H_x
                                        we proceed by induction on H2 to prove ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Flat f) t)
                                           case ex_intro2 : x:C H3:drop (S j0) O x c2 H4:drop i (S j0) x e2 
                                              the thesis becomes ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Flat f) t)
                                                 (h1
                                                    consider H3
                                                    we proved drop (S j0) O x c2
                                                    that is equivalent to drop (r (Flat f) j0) O x c2
                                                    by (drop_drop . . . . previous .)
drop (S j0) O (CHead x (Flat f) (lift i (r (Flat f) j0) t)) c2
                                                 end of h1
                                                 (h2
                                                    consider H4
                                                    we proved drop i (S j0) x e2
                                                    that is equivalent to drop i (r (Flat f) j0) x e2
                                                    by (drop_skip . . . . . previous .)

                                                       drop
                                                         i
                                                         S j0
                                                         CHead x (Flat f) (lift i (r (Flat f) j0) t)
                                                         CHead e2 (Flat f) t
                                                 end of h2
                                                 by (ex_intro2 . . . . h1 h2)
ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Flat f) t)
                                        we proved ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Flat f) t)

                                        H1:drop (r (Flat f) j0) O e2 e3
                                          .ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 (Flat f) t)
                                  by (previous . previous)
                                  we proved ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 k t)

                                  e3:C
                                    .H:drop (S j0) O (CHead e2 k t) e3
                                      .c2:C.i:nat.H0:(drop i O c2 e3).(ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 (CHead e2 k t))
                      we proved 
                         e2:C
                           .drop (S j0) O e1 e2
                             c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 e1)

                      e1:C
                        .e2:C
                          .drop (S j0) O e1 e2
                            c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop (S j0) O c1 c2 λc1:C.drop i (S j0) c1 e1)
          we proved 
             e1:C
               .e2:C
                 .drop j O e1 e2
                   c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop j O c1 c2 λc1:C.drop i j c1 e1)
       we proved 
          j:nat
            .e1:C
              .e2:C
                .drop j O e1 e2
                  c2:C.i:nat.(drop i O c2 e2)(ex2 C λc1:C.drop j O c1 c2 λc1:C.drop i j c1 e1)