DEFINITION drop_mono()
TYPE =
       c:C.x1:C.d:nat.h:nat.(drop h d c x1)x2:C.(drop h d c x2)(eq C x1 x2)
BODY =
       assume cC
          we proceed by induction on c to prove x1:C.d:nat.h:nat.(drop h d c x1)x2:C.(drop h d c x2)(eq C x1 x2)
             case CSort : n:nat 
                the thesis becomes x1:C.d:nat.h:nat.H:(drop h d (CSort n) x1).x2:C.H0:(drop h d (CSort n) x2).(eq C x1 x2)
                    assume x1C
                    assume dnat
                    assume hnat
                    suppose Hdrop h d (CSort n) x1
                    assume x2C
                    suppose H0drop h d (CSort n) x2
                      by (drop_gen_sort . . . . H0)
                      we proved and3 (eq C x2 (CSort n)) (eq nat h O) (eq nat d O)
                      we proceed by induction on the previous result to prove eq C x1 x2
                         case and3_intro : H1:eq C x2 (CSort n) H2:eq nat h O H3:eq nat d O 
                            the thesis becomes eq C x1 x2
                               by (drop_gen_sort . . . . H)
                               we proved and3 (eq C x1 (CSort n)) (eq nat h O) (eq nat d O)
                               we proceed by induction on the previous result to prove eq C x1 x2
                                  case and3_intro : H4:eq C x1 (CSort n) H5:eq nat h O H6:eq nat d O 
                                     the thesis becomes eq C x1 x2
                                        by (refl_equal . .)
                                        we proved eq C (CSort n) (CSort n)
                                        by (eq_ind_r . . . previous . H4)
                                        we proved eq C x1 (CSort n)
                                        by (eq_ind_r . . . previous . H1)
eq C x1 x2
eq C x1 x2
                      we proved eq C x1 x2
x1:C.d:nat.h:nat.H:(drop h d (CSort n) x1).x2:C.H0:(drop h d (CSort n) x2).(eq C x1 x2)
             case CHead : c0:C k:K t:T 
                the thesis becomes 
                x1:C
                  .d:nat
                    .h:nat
                      .(drop h d (CHead c0 k t) x1)x2:C.(drop h d (CHead c0 k t) x2)(eq C x1 x2)
                (H) by induction hypothesis we know x1:C.d:nat.h:nat.(drop h d c0 x1)x2:C.(drop h d c0 x2)(eq C x1 x2)
                    assume x1C
                    assume dnat
                      we proceed by induction on d to prove 
                         h:nat
                           .(drop h d (CHead c0 k t) x1)x2:C.(drop h d (CHead c0 k t) x2)(eq C x1 x2)
                         case O : 
                            the thesis becomes 
                            h:nat
                              .(drop h O (CHead c0 k t) x1)x2:C.(drop h O (CHead c0 k t) x2)(eq C x1 x2)
                               assume hnat
                                  we proceed by induction on h to prove 
                                     (drop h O (CHead c0 k t) x1)x2:C.(drop h O (CHead c0 k t) x2)(eq C x1 x2)
                                     case O : 
                                        the thesis becomes 
                                        (drop O O (CHead c0 k t) x1)x2:C.(drop O O (CHead c0 k t) x2)(eq C x1 x2)
                                            suppose H0drop O O (CHead c0 k t) x1
                                            assume x2C
                                            suppose H1drop O O (CHead c0 k t) x2
                                              by (drop_gen_refl . . H1)
                                              we proved eq C (CHead c0 k t) x2
                                              we proceed by induction on the previous result to prove eq C x1 x2
                                                 case refl_equal : 
                                                    the thesis becomes eq C x1 (CHead c0 k t)
                                                       by (drop_gen_refl . . H0)
                                                       we proved eq C (CHead c0 k t) x1
                                                       we proceed by induction on the previous result to prove eq C x1 (CHead c0 k t)
                                                          case refl_equal : 
                                                             the thesis becomes eq C (CHead c0 k t) (CHead c0 k t)
                                                                by (refl_equal . .)
eq C (CHead c0 k t) (CHead c0 k t)
eq C x1 (CHead c0 k t)
                                              we proved eq C x1 x2

                                              (drop O O (CHead c0 k t) x1)x2:C.(drop O O (CHead c0 k t) x2)(eq C x1 x2)
                                     case S : n:nat 
                                        the thesis becomes H1:(drop (S n) O (CHead c0 k t) x1).x2:C.H2:(drop (S n) O (CHead c0 k t) x2).(eq C x1 x2)
                                        () by induction hypothesis we know 
                                           (drop n O (CHead c0 k t) x1)x2:C.(drop n O (CHead c0 k t) x2)(eq C x1 x2)
                                            suppose H1drop (S n) O (CHead c0 k t) x1
                                            assume x2C
                                            suppose H2drop (S n) O (CHead c0 k t) x2
                                              (h1
                                                 by (drop_gen_drop . . . . . H1)
drop (r k n) O c0 x1
                                              end of h1
                                              (h2
                                                 by (drop_gen_drop . . . . . H2)
drop (r k n) O c0 x2
                                              end of h2
                                              by (H . . . h1 . h2)
                                              we proved eq C x1 x2
H1:(drop (S n) O (CHead c0 k t) x1).x2:C.H2:(drop (S n) O (CHead c0 k t) x2).(eq C x1 x2)
                                  we proved 
                                     (drop h O (CHead c0 k t) x1)x2:C.(drop h O (CHead c0 k t) x2)(eq C x1 x2)

                                  h:nat
                                    .(drop h O (CHead c0 k t) x1)x2:C.(drop h O (CHead c0 k t) x2)(eq C x1 x2)
                         case S : n:nat 
                            the thesis becomes 
                            h:nat
                              .H1:(drop h (S n) (CHead c0 k t) x1).x2:C.H2:(drop h (S n) (CHead c0 k t) x2).(eq C x1 x2)
                            (H0) by induction hypothesis we know 
                               h:nat
                                 .(drop h n (CHead c0 k t) x1)x2:C.(drop h n (CHead c0 k t) x2)(eq C x1 x2)
                                assume hnat
                                suppose H1drop h (S n) (CHead c0 k t) x1
                                assume x2C
                                suppose H2drop h (S n) (CHead c0 k t) x2
                                  by (drop_gen_skip_l . . . . . . H2)
                                  we proved 
                                     ex3_2
                                       C
                                       T
                                       λe:C.λv:T.eq C x2 (CHead e k v)
                                       λ:C.λv:T.eq T t (lift h (r k n) v)
                                       λe:C.λ:T.drop h (r k n) c0 e
                                  we proceed by induction on the previous result to prove eq C x1 x2
                                     case ex3_2_intro : x0:C x3:T H3:eq C x2 (CHead x0 k x3) H4:eq T t (lift h (r k n) x3) H5:drop h (r k n) c0 x0 
                                        the thesis becomes eq C x1 x2
                                           by (drop_gen_skip_l . . . . . . H1)
                                           we proved 
                                              ex3_2
                                                C
                                                T
                                                λe:C.λv:T.eq C x1 (CHead e k v)
                                                λ:C.λv:T.eq T t (lift h (r k n) v)
                                                λe:C.λ:T.drop h (r k n) c0 e
                                           we proceed by induction on the previous result to prove eq C x1 x2
                                              case ex3_2_intro : x4:C x5:T H6:eq C x1 (CHead x4 k x5) H7:eq T t (lift h (r k n) x5) H8:drop h (r k n) c0 x4 
                                                 the thesis becomes eq C x1 x2
                                                    (H9
                                                       we proceed by induction on H6 to prove 
                                                          h0:nat
                                                            .drop h0 n (CHead c0 k t) (CHead x4 k x5)
                                                              x6:C.(drop h0 n (CHead c0 k t) x6)(eq C (CHead x4 k x5) x6)
                                                          case refl_equal : 
                                                             the thesis becomes the hypothesis H0

                                                          h0:nat
                                                            .drop h0 n (CHead c0 k t) (CHead x4 k x5)
                                                              x6:C.(drop h0 n (CHead c0 k t) x6)(eq C (CHead x4 k x5) x6)
                                                    end of H9
                                                    (H10
                                                       we proceed by induction on H7 to prove 
                                                          h0:nat
                                                            .drop h0 n (CHead c0 k (lift h (r k n) x5)) (CHead x4 k x5)
                                                              x6:C.(drop h0 n (CHead c0 k (lift h (r k n) x5)) x6)(eq C (CHead x4 k x5) x6)
                                                          case refl_equal : 
                                                             the thesis becomes the hypothesis H9

                                                          h0:nat
                                                            .drop h0 n (CHead c0 k (lift h (r k n) x5)) (CHead x4 k x5)
                                                              x6:C.(drop h0 n (CHead c0 k (lift h (r k n) x5)) x6)(eq C (CHead x4 k x5) x6)
                                                    end of H10
                                                    (H11
                                                       we proceed by induction on H7 to prove eq T (lift h (r k n) x5) (lift h (r k n) x3)
                                                          case refl_equal : 
                                                             the thesis becomes the hypothesis H4
eq T (lift h (r k n) x5) (lift h (r k n) x3)
                                                    end of H11
                                                    (h1
                                                       (h1
                                                          by (H . . . H5 . H8)
                                                          we proved eq C x0 x4
                                                          by (sym_eq . . . previous)
eq C x4 x0
                                                       end of h1
                                                       (h2
                                                          by (refl_equal . .)
eq K k k
                                                       end of h2
                                                       (h3
                                                          by (refl_equal . .)
eq T x3 x3
                                                       end of h3
                                                       by (f_equal3 . . . . . . . . . . . h1 h2 h3)
eq C (CHead x4 k x3) (CHead x0 k x3)
                                                    end of h1
                                                    (h2
                                                       by (lift_inj . . . . H11)
eq T x5 x3
                                                    end of h2
                                                    by (eq_ind_r . . . h1 . h2)
                                                    we proved eq C (CHead x4 k x5) (CHead x0 k x3)
                                                    by (eq_ind_r . . . previous . H6)
                                                    we proved eq C x1 (CHead x0 k x3)
                                                    by (eq_ind_r . . . previous . H3)
eq C x1 x2
eq C x1 x2
                                  we proved eq C x1 x2

                                  h:nat
                                    .H1:(drop h (S n) (CHead c0 k t) x1).x2:C.H2:(drop h (S n) (CHead c0 k t) x2).(eq C x1 x2)
                      we proved 
                         h:nat
                           .(drop h d (CHead c0 k t) x1)x2:C.(drop h d (CHead c0 k t) x2)(eq C x1 x2)

                      x1:C
                        .d:nat
                          .h:nat
                            .(drop h d (CHead c0 k t) x1)x2:C.(drop h d (CHead c0 k t) x2)(eq C x1 x2)
          we proved x1:C.d:nat.h:nat.(drop h d c x1)x2:C.(drop h d c x2)(eq C x1 x2)
       we proved c:C.x1:C.d:nat.h:nat.(drop h d c x1)x2:C.(drop h d c x2)(eq C x1 x2)