DEFINITION drop_gen_refl()
TYPE =
       x:C.e:C.(drop O O x e)(eq C x e)
BODY =
        assume xC
        assume eC
        suppose Hdrop O O x e
           assume ynat
           suppose H0drop y O x e
              assume y0nat
              suppose H1drop y y0 x e
                we proceed by induction on H1 to prove (eq nat y0 O)(eq nat y y0)(eq C x e)
                   case drop_refl : c:C 
                      the thesis becomes (eq nat O O)(eq nat O O)(eq C c c)
                          suppose eq nat O O
                          suppose eq nat O O
                            by (refl_equal . .)
                            we proved eq C c c
(eq nat O O)(eq nat O O)(eq C c c)
                   case drop_drop : k:K h:nat c:C e0:C :drop (r k h) O c e0 u:T 
                      the thesis becomes (eq nat O O)H5:(eq nat (S h) O).(eq C (CHead c k u) e0)
                      () by induction hypothesis we know (eq nat O O)(eq nat (r k h) O)(eq C c e0)
                          suppose eq nat O O
                          suppose H5eq nat (S h) O
                            (H6
                               we proceed by induction on H5 to prove <λ:nat.Prop> CASE O OF OFalse | S True
                                  case refl_equal : 
                                     the thesis becomes <λ:nat.Prop> CASE S h OF OFalse | S True
                                        consider I
                                        we proved True
<λ:nat.Prop> CASE S h 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 eq C (CHead c k u) e0
                            we proved eq C (CHead c k u) e0
(eq nat O O)H5:(eq nat (S h) O).(eq C (CHead c k u) e0)
                   case drop_skip : k:K h:nat d:nat c:C e0:C H2:drop h (r k d) c e0 u:T 
                      the thesis becomes 
                      H4:eq nat (S d) O
                        .H5:(eq nat h (S d)).(eq C (CHead c k (lift h (r k d) u)) (CHead e0 k u))
                      (H3) by induction hypothesis we know (eq nat (r k d) O)(eq nat h (r k d))(eq C c e0)
                          suppose H4eq nat (S d) O
                          suppose H5eq nat h (S d)
                            (H6
                               by (f_equal . . . . . H5)
                               we proved eq nat h (S d)
eq nat (λe1:nat.e1 h) (λe1:nat.e1 (S d))
                            end of H6
                            (H9
                               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 d OF OFalse | S True
                                        consider I
                                        we proved True
<λ:nat.Prop> CASE S d OF OFalse | S True
<λ:nat.Prop> CASE O OF OFalse | S True
                            end of H9
                            consider H9
                            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 eq C (CHead c k (lift (S d) (r k d) u)) (CHead e0 k u)
                            we proved eq C (CHead c k (lift (S d) (r k d) u)) (CHead e0 k u)
                            by (eq_ind_r . . . previous . H6)
                            we proved eq C (CHead c k (lift h (r k d) u)) (CHead e0 k u)

                            H4:eq nat (S d) O
                              .H5:(eq nat h (S d)).(eq C (CHead c k (lift h (r k d) u)) (CHead e0 k u))
                we proved (eq nat y0 O)(eq nat y y0)(eq C x e)
             we proved y0:nat.(drop y y0 x e)(eq nat y0 O)(eq nat y y0)(eq C x e)
             by (insert_eq . . . . previous H0)
             we proved (eq nat y O)(eq C x e)
          we proved y:nat.(drop y O x e)(eq nat y O)(eq C x e)
          by (insert_eq . . . . previous H)
          we proved eq C x e
       we proved x:C.e:C.(drop O O x e)(eq C x e)