DEFINITION lt_gen_xS()
TYPE =
       x:nat
         .n:nat
           .lt x (S n)
             or (eq nat x O) (ex2 nat λm:nat.eq nat x (S m) λm:nat.lt m n)
BODY =
       assume xnat
          we proceed by induction on x to prove 
             n0:nat
               .lt x (S n0)
                 or (eq nat x O) (ex2 nat λm:nat.eq nat x (S m) λm:nat.lt m n0)
             case O : 
                the thesis becomes 
                n:nat
                  .lt O (S n)
                    or (eq nat O O) (ex2 nat λm:nat.eq nat O (S m) λm:nat.lt m n)
                    assume nnat
                    suppose lt O (S n)
                      by (refl_equal . .)
                      we proved eq nat O O
                      by (or_introl . . previous)
                      we proved or (eq nat O O) (ex2 nat λm:nat.eq nat O (S m) λm:nat.lt m n)

                      n:nat
                        .lt O (S n)
                          or (eq nat O O) (ex2 nat λm:nat.eq nat O (S m) λm:nat.lt m n)
             case S : n:nat 
                the thesis becomes 
                n0:nat
                  .H0:lt (S n) (S n0)
                    .or
                      eq nat (S n) O
                      ex2 nat λm:nat.eq nat (S n) (S m) λm:nat.lt m n0
                () by induction hypothesis we know 
                   n0:nat
                     .lt n (S n0)
                       or (eq nat n O) (ex2 nat λm:nat.eq nat n (S m) λm:nat.lt m n0)
                    assume n0nat
                    suppose H0lt (S n) (S n0)
                      (h1
                         by (refl_equal . .)
eq nat (S n) (S n)
                      end of h1
                      (h2
                         consider H0
                         we proved lt (S n) (S n0)
                         that is equivalent to le (S (S n)) (S n0)
                         by (le_S_n . . previous)
                         we proved le (S n) n0
lt n n0
                      end of h2
                      by (ex_intro2 . . . . h1 h2)
                      we proved ex2 nat λm:nat.eq nat (S n) (S m) λm:nat.lt m n0
                      by (or_intror . . previous)
                      we proved 
                         or
                           eq nat (S n) O
                           ex2 nat λm:nat.eq nat (S n) (S m) λm:nat.lt m n0

                      n0:nat
                        .H0:lt (S n) (S n0)
                          .or
                            eq nat (S n) O
                            ex2 nat λm:nat.eq nat (S n) (S m) λm:nat.lt m n0
          we proved 
             n0:nat
               .lt x (S n0)
                 or (eq nat x O) (ex2 nat λm:nat.eq nat x (S m) λm:nat.lt m n0)
       we proved 
          x:nat
            .n0:nat
              .lt x (S n0)
                or (eq nat x O) (ex2 nat λm:nat.eq nat x (S m) λm:nat.lt m n0)