DEFINITION eq_nat_dec()
TYPE =
       i:nat.j:nat.(or (not (eq nat i j)) (eq nat i j))
BODY =
       assume inat
          we proceed by induction on i to prove j:nat.(or (not (eq nat i j)) (eq nat i j))
             case O : 
                the thesis becomes j:nat.(or (not (eq nat O j)) (eq nat O j))
                   assume jnat
                      we proceed by induction on j to prove or (not (eq nat O j)) (eq nat O j)
                         case O : 
                            the thesis becomes or (not (eq nat O O)) (eq nat O O)
                               by (refl_equal . .)
                               we proved eq nat O O
                               by (or_intror . . previous)
or (not (eq nat O O)) (eq nat O O)
                         case S : n:nat 
                            the thesis becomes or (not (eq nat O (S n))) (eq nat O (S n))
                            () by induction hypothesis we know or (not (eq nat O n)) (eq nat O n)
                               by (O_S .)
                               we proved not (eq nat O (S n))
                               by (or_introl . . previous)
or (not (eq nat O (S n))) (eq nat O (S n))
                      we proved or (not (eq nat O j)) (eq nat O j)
j:nat.(or (not (eq nat O j)) (eq nat O j))
             case S : n:nat 
                the thesis becomes j:nat.(or (not (eq nat (S n) j)) (eq nat (S n) j))
                (H) by induction hypothesis we know j:nat.(or (not (eq nat n j)) (eq nat n j))
                   assume jnat
                      we proceed by induction on j to prove or (not (eq nat (S n) j)) (eq nat (S n) j)
                         case O : 
                            the thesis becomes or (not (eq nat (S n) O)) (eq nat (S n) O)
                               by (O_S .)
                               we proved not (eq nat O (S n))
                               by (sym_not_eq . . . previous)
                               we proved not (eq nat (S n) O)
                               by (or_introl . . previous)
or (not (eq nat (S n) O)) (eq nat (S n) O)
                         case S : n0:nat 
                            the thesis becomes or (not (eq nat (S n) (S n0))) (eq nat (S n) (S n0))
                            () by induction hypothesis we know or (not (eq nat (S n) n0)) (eq nat (S n) n0)
                               by (H .)
                               we proved or (not (eq nat n n0)) (eq nat n n0)
                               we proceed by induction on the previous result to prove or (not (eq nat (S n) (S n0))) (eq nat (S n) (S n0))
                                  case or_introl : H1:not (eq nat n n0) 
                                     the thesis becomes or (not (eq nat (S n) (S n0))) (eq nat (S n) (S n0))
                                        by (not_eq_S . . H1)
                                        we proved not (eq nat (S n) (S n0))
                                        by (or_introl . . previous)
or (not (eq nat (S n) (S n0))) (eq nat (S n) (S n0))
                                  case or_intror : H1:eq nat n n0 
                                     the thesis becomes or (not (eq nat (S n) (S n0))) (eq nat (S n) (S n0))
                                        by (f_equal . . . . . H1)
                                        we proved eq nat (S n) (S n0)
                                        by (or_intror . . previous)
or (not (eq nat (S n) (S n0))) (eq nat (S n) (S n0))
or (not (eq nat (S n) (S n0))) (eq nat (S n) (S n0))
                      we proved or (not (eq nat (S n) j)) (eq nat (S n) j)
j:nat.(or (not (eq nat (S n) j)) (eq nat (S n) j))
          we proved j:nat.(or (not (eq nat i j)) (eq nat i j))
       we proved i:nat.j:nat.(or (not (eq nat i j)) (eq nat i j))