DEFINITION sn3_gen_flat()
TYPE =
       f:F.c:C.u:T.t:T.(sn3 c (THead (Flat f) u t))(land (sn3 c u) (sn3 c t))
BODY =
        assume fF
        assume cC
        assume uT
        assume tT
        suppose Hsn3 c (THead (Flat f) u t)
           assume yT
           suppose H0sn3 c y
             we proceed by induction on H0 to prove x:T.x0:T.(eq T y (THead (Flat f) x x0))(land (sn3 c x) (sn3 c x0))
                case sn3_sing : t1:T H1:t2:T.((eq T t1 t2)P:Prop.P)(pr3 c t1 t2)(sn3 c t2) 
                   the thesis becomes x:T.x0:T.H3:(eq T t1 (THead (Flat f) x x0)).(land (sn3 c x) (sn3 c x0))
                   (H2) by induction hypothesis we know 
                      t2:T
                        .(eq T t1 t2)P:Prop.P
                          (pr3 c t1 t2
                               x:T.x0:T.(eq T t2 (THead (Flat f) x x0))(land (sn3 c x) (sn3 c x0)))
                       assume xT
                       assume x0T
                       suppose H3eq T t1 (THead (Flat f) x x0)
                         (H4
                            we proceed by induction on H3 to prove 
                               t2:T
                                 .(eq T (THead (Flat f) x x0) t2)P:Prop.P
                                   (pr3 c (THead (Flat f) x x0) t2
                                        x1:T.x2:T.(eq T t2 (THead (Flat f) x1 x2))(land (sn3 c x1) (sn3 c x2)))
                               case refl_equal : 
                                  the thesis becomes the hypothesis H2

                               t2:T
                                 .(eq T (THead (Flat f) x x0) t2)P:Prop.P
                                   (pr3 c (THead (Flat f) x x0) t2
                                        x1:T.x2:T.(eq T t2 (THead (Flat f) x1 x2))(land (sn3 c x1) (sn3 c x2)))
                         end of H4
                         (h1
                             assume t2T
                             suppose H6(eq T x t2)P:Prop.P
                             suppose H7pr3 c x t2
                               (H8
                                  (h1
                                      suppose H8eq T (THead (Flat f) x x0) (THead (Flat f) t2 x0)
                                      assume PProp
                                        (H9
                                           by (f_equal . . . . . H8)
                                           we proved 
                                              eq
                                                T
                                                <λ:T.T> CASE THead (Flat f) x x0 OF TSort x | TLRef x | THead  t0 t0
                                                <λ:T.T> CASE THead (Flat f) t2 x0 OF TSort x | TLRef x | THead  t0 t0

                                              eq
                                                T
                                                λe:T.<λ:T.T> CASE e OF TSort x | TLRef x | THead  t0 t0
                                                  THead (Flat f) x x0
                                                λe:T.<λ:T.T> CASE e OF TSort x | TLRef x | THead  t0 t0
                                                  THead (Flat f) t2 x0
                                        end of H9
                                        (H11
                                           consider H9
                                           we proved 
                                              eq
                                                T
                                                <λ:T.T> CASE THead (Flat f) x x0 OF TSort x | TLRef x | THead  t0 t0
                                                <λ:T.T> CASE THead (Flat f) t2 x0 OF TSort x | TLRef x | THead  t0 t0
                                           that is equivalent to eq T x t2
                                           by (eq_ind_r . . . H6 . previous)
(eq T x x)P0:Prop.P0
                                        end of H11
                                        by (refl_equal . .)
                                        we proved eq T x x
                                        by (H11 previous .)
                                        we proved P
(eq T (THead (Flat f) x x0) (THead (Flat f) t2 x0))P:Prop.P
                                  end of h1
                                  (h2
                                     by (pr3_refl . .)
                                     we proved pr3 (CHead c (Flat f) t2) x0 x0
                                     by (pr3_head_12 . . . H7 . . . previous)
pr3 c (THead (Flat f) x x0) (THead (Flat f) t2 x0)
                                  end of h2
                                  (h3
                                     by (refl_equal . .)
eq T (THead (Flat f) t2 x0) (THead (Flat f) t2 x0)
                                  end of h3
                                  by (H4 . h1 h2 . . h3)
land (sn3 c t2) (sn3 c x0)
                               end of H8
                               we proceed by induction on H8 to prove sn3 c t2
                                  case conj : H9:sn3 c t2 :sn3 c x0 
                                     the thesis becomes the hypothesis H9
                               we proved sn3 c t2
                            we proved t2:T.((eq T x t2)P:Prop.P)(pr3 c x t2)(sn3 c t2)
                            by (sn3_sing . . previous)
sn3 c x
                         end of h1
                         (h2
                             assume t2T
                             suppose H6(eq T x0 t2)P:Prop.P
                             suppose H7pr3 c x0 t2
                               (H8
                                  (h1
                                      suppose H8eq T (THead (Flat f) x x0) (THead (Flat f) x t2)
                                      assume PProp
                                        (H9
                                           by (f_equal . . . . . H8)
                                           we proved 
                                              eq
                                                T
                                                <λ:T.T> CASE THead (Flat f) x x0 OF TSort x0 | TLRef x0 | THead   t0t0
                                                <λ:T.T> CASE THead (Flat f) x t2 OF TSort x0 | TLRef x0 | THead   t0t0

                                              eq
                                                T
                                                λe:T.<λ:T.T> CASE e OF TSort x0 | TLRef x0 | THead   t0t0
                                                  THead (Flat f) x x0
                                                λe:T.<λ:T.T> CASE e OF TSort x0 | TLRef x0 | THead   t0t0
                                                  THead (Flat f) x t2
                                        end of H9
                                        (H11
                                           consider H9
                                           we proved 
                                              eq
                                                T
                                                <λ:T.T> CASE THead (Flat f) x x0 OF TSort x0 | TLRef x0 | THead   t0t0
                                                <λ:T.T> CASE THead (Flat f) x t2 OF TSort x0 | TLRef x0 | THead   t0t0
                                           that is equivalent to eq T x0 t2
                                           by (eq_ind_r . . . H6 . previous)
(eq T x0 x0)P0:Prop.P0
                                        end of H11
                                        by (refl_equal . .)
                                        we proved eq T x0 x0
                                        by (H11 previous .)
                                        we proved P
(eq T (THead (Flat f) x x0) (THead (Flat f) x t2))P:Prop.P
                                  end of h1
                                  (h2
                                     by (pr3_thin_dx . . . H7 . .)
pr3 c (THead (Flat f) x x0) (THead (Flat f) x t2)
                                  end of h2
                                  (h3
                                     by (refl_equal . .)
eq T (THead (Flat f) x t2) (THead (Flat f) x t2)
                                  end of h3
                                  by (H4 . h1 h2 . . h3)
land (sn3 c x) (sn3 c t2)
                               end of H8
                               we proceed by induction on H8 to prove sn3 c t2
                                  case conj : :sn3 c x H10:sn3 c t2 
                                     the thesis becomes the hypothesis H10
                               we proved sn3 c t2
                            we proved t2:T.((eq T x0 t2)P:Prop.P)(pr3 c x0 t2)(sn3 c t2)
                            by (sn3_sing . . previous)
sn3 c x0
                         end of h2
                         by (conj . . h1 h2)
                         we proved land (sn3 c x) (sn3 c x0)
x:T.x0:T.H3:(eq T t1 (THead (Flat f) x x0)).(land (sn3 c x) (sn3 c x0))
             we proved x:T.x0:T.(eq T y (THead (Flat f) x x0))(land (sn3 c x) (sn3 c x0))
             by (unintro . . . previous)
             we proved x:T.(eq T y (THead (Flat f) u x))(land (sn3 c u) (sn3 c x))
             by (unintro . . . previous)
             we proved (eq T y (THead (Flat f) u t))(land (sn3 c u) (sn3 c t))
          we proved 
             y:T
               .sn3 c y
                 (eq T y (THead (Flat f) u t))(land (sn3 c u) (sn3 c t))
          by (insert_eq . . . . previous H)
          we proved land (sn3 c u) (sn3 c t)
       we proved f:F.c:C.u:T.t:T.(sn3 c (THead (Flat f) u t))(land (sn3 c u) (sn3 c t))