DEFINITION le_x_pred_y()
TYPE =
       y:nat.x:nat.(lt x y)(le x (pred y))
BODY =
       assume ynat
          we proceed by induction on y to prove x:nat.(lt x y)(le x (pred y))
             case O : 
                the thesis becomes x:nat.(lt x O)(le x (pred O))
                    assume xnat
                    suppose Hlt x O
                      (H0
                         by cases on H we prove (eq nat O O)(le x O)
                            case le_n 
                               the thesis becomes (eq nat (S x) O)(le x O)
                               suppose H0eq nat (S x) O
                                  (H1
                                     we proceed by induction on H0 to prove <λ:nat.Prop> CASE O OF OFalse | S True
                                        case refl_equal : 
                                           the thesis becomes <λ:nat.Prop> CASE S x OF OFalse | S True
                                              consider I
                                              we proved True
<λ:nat.Prop> CASE S x OF OFalse | S True
<λ:nat.Prop> CASE O OF OFalse | S True
                                  end of H1
                                  consider H1
                                  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 le x O
                                  we proved le x O
(eq nat (S x) O)(le x O)
                            case le_S m:nat H0:le (S x) m 
                               the thesis becomes H1:(eq nat (S m) O).(le x O)
                               suppose H1eq nat (S m) O
                                  (H2
                                     we proceed by induction on H1 to prove <λ:nat.Prop> CASE O OF OFalse | S True
                                        case refl_equal : 
                                           the thesis becomes <λ:nat.Prop> CASE S m OF OFalse | S True
                                              consider I
                                              we proved True
<λ:nat.Prop> CASE S m OF OFalse | S True
<λ:nat.Prop> CASE O OF OFalse | S True
                                  end of H2
                                  consider H2
                                  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 (le (S x) m)(le x O)
                                  we proved (le (S x) m)(le x O)
                                  by (previous H0)
                                  we proved le x O
H1:(eq nat (S m) O).(le x O)
(eq nat O O)(le x O)
                      end of H0
                      by (refl_equal . .)
                      we proved eq nat O O
                      by (H0 previous)
                      we proved le x O
                      that is equivalent to le x (pred O)
x:nat.(lt x O)(le x (pred O))
             case S : n:nat 
                the thesis becomes x:nat.H0:(lt x (S n)).(le x n)
                () by induction hypothesis we know x:nat.(lt x n)(le x (pred n))
                    assume xnat
                    suppose H0lt x (S n)
                      consider H0
                      we proved lt x (S n)
                      that is equivalent to le (S x) (S n)
                      by (le_S_n . . previous)
                      we proved le x n
                      that is equivalent to le x (pred (S n))
x:nat.H0:(lt x (S n)).(le x n)
          we proved x:nat.(lt x y)(le x (pred y))
       we proved y:nat.x:nat.(lt x y)(le x (pred y))