DEFINITION getl_gen_bind()
TYPE =
       b:B
         .e:C
           .d:C
             .v:T
               .i:nat
                 .getl i (CHead e (Bind b) v) d
                   (or
                        land (eq nat i O) (eq C d (CHead e (Bind b) v))
                        ex2 nat λj:nat.eq nat i (S j) λj:nat.getl j e d)
BODY =
        assume bB
        assume eC
        assume dC
        assume vT
        assume inat
          we proceed by induction on i to prove 
             getl i (CHead e (Bind b) v) d
               (or
                    land (eq nat i O) (eq C d (CHead e (Bind b) v))
                    ex2 nat λj:nat.eq nat i (S j) λj:nat.getl j e d)
             case O : 
                the thesis becomes 
                getl O (CHead e (Bind b) v) d
                  (or
                       land (eq nat O O) (eq C d (CHead e (Bind b) v))
                       ex2 nat λj:nat.eq nat O (S j) λj:nat.getl j e d)
                   suppose Hgetl O (CHead e (Bind b) v) d
                      (h1
                         (h1
                            by (refl_equal . .)
eq nat O O
                         end of h1
                         (h2
                            by (refl_equal . .)
eq C (CHead e (Bind b) v) (CHead e (Bind b) v)
                         end of h2
                         by (conj . . h1 h2)
                         we proved 
                            land
                              eq nat O O
                              eq C (CHead e (Bind b) v) (CHead e (Bind b) v)
                         by (or_introl . . previous)

                            or
                              land
                                eq nat O O
                                eq C (CHead e (Bind b) v) (CHead e (Bind b) v)
                              ex2 nat λj:nat.eq nat O (S j) λj:nat.getl j e (CHead e (Bind b) v)
                      end of h1
                      (h2
                         by (getl_gen_O . . H)
                         we proved clear (CHead e (Bind b) v) d
                         by (clear_gen_bind . . . . previous)
eq C d (CHead e (Bind b) v)
                      end of h2
                      by (eq_ind_r . . . h1 . h2)
                      we proved 
                         or
                           land (eq nat O O) (eq C d (CHead e (Bind b) v))
                           ex2 nat λj:nat.eq nat O (S j) λj:nat.getl j e d

                      getl O (CHead e (Bind b) v) d
                        (or
                             land (eq nat O O) (eq C d (CHead e (Bind b) v))
                             ex2 nat λj:nat.eq nat O (S j) λj:nat.getl j e d)
             case S : n:nat 
                the thesis becomes 
                H0:getl (S n) (CHead e (Bind b) v) d
                  .or
                    land (eq nat (S n) O) (eq C d (CHead e (Bind b) v))
                    ex2 nat λj:nat.eq nat (S n) (S j) λj:nat.getl j e d
                () by induction hypothesis we know 
                   getl n (CHead e (Bind b) v) d
                     (or
                          land (eq nat n O) (eq C d (CHead e (Bind b) v))
                          ex2 nat λj:nat.eq nat n (S j) λj:nat.getl j e d)
                   suppose H0getl (S n) (CHead e (Bind b) v) d
                      (h1
                         by (refl_equal . .)
eq nat (S n) (S n)
                      end of h1
                      (h2
                         by (getl_gen_S . . . . . H0)
                         we proved getl (r (Bind b) n) e d
getl n e d
                      end of h2
                      by (ex_intro2 . . . . h1 h2)
                      we proved ex2 nat λj:nat.eq nat (S n) (S j) λj:nat.getl j e d
                      by (or_intror . . previous)
                      we proved 
                         or
                           land (eq nat (S n) O) (eq C d (CHead e (Bind b) v))
                           ex2 nat λj:nat.eq nat (S n) (S j) λj:nat.getl j e d

                      H0:getl (S n) (CHead e (Bind b) v) d
                        .or
                          land (eq nat (S n) O) (eq C d (CHead e (Bind b) v))
                          ex2 nat λj:nat.eq nat (S n) (S j) λj:nat.getl j e d
          we proved 
             getl i (CHead e (Bind b) v) d
               (or
                    land (eq nat i O) (eq C d (CHead e (Bind b) v))
                    ex2 nat λj:nat.eq nat i (S j) λj:nat.getl j e d)
       we proved 
          b:B
            .e:C
              .d:C
                .v:T
                  .i:nat
                    .getl i (CHead e (Bind b) v) d
                      (or
                           land (eq nat i O) (eq C d (CHead e (Bind b) v))
                           ex2 nat λj:nat.eq nat i (S j) λj:nat.getl j e d)