DEFINITION sn3_gen_bind()
TYPE =
       b:B
         .c:C
           .u:T
             .t:T
               .sn3 c (THead (Bind b) u t)
                 land (sn3 c u) (sn3 (CHead c (Bind b) u) t)
BODY =
        assume bB
        assume cC
        assume uT
        assume tT
        suppose Hsn3 c (THead (Bind b) u t)
           assume yT
           suppose H0sn3 c y
             we proceed by induction on H0 to prove 
                x:T
                  .x0:T
                    .eq T y (THead (Bind b) x x0)
                      land (sn3 c x) (sn3 (CHead c (Bind b) x) 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 (Bind b) x x0)
                         .land (sn3 c x) (sn3 (CHead c (Bind b) x) 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 (Bind b) x x0)
                                        land (sn3 c x) (sn3 (CHead c (Bind b) x) x0))
                       assume xT
                       assume x0T
                       suppose H3eq T t1 (THead (Bind b) x x0)
                         (H4
                            we proceed by induction on H3 to prove 
                               t2:T
                                 .(eq T (THead (Bind b) x x0) t2)P:Prop.P
                                   (pr3 c (THead (Bind b) x x0) t2
                                        x1:T
                                             .x2:T
                                               .eq T t2 (THead (Bind b) x1 x2)
                                                 land (sn3 c x1) (sn3 (CHead c (Bind b) x1) x2))
                               case refl_equal : 
                                  the thesis becomes the hypothesis H2

                               t2:T
                                 .(eq T (THead (Bind b) x x0) t2)P:Prop.P
                                   (pr3 c (THead (Bind b) x x0) t2
                                        x1:T
                                             .x2:T
                                               .eq T t2 (THead (Bind b) x1 x2)
                                                 land (sn3 c x1) (sn3 (CHead c (Bind b) x1) 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 (Bind b) x x0) (THead (Bind b) t2 x0)
                                      assume PProp
                                        (H9
                                           by (f_equal . . . . . H8)
                                           we proved 
                                              eq
                                                T
                                                <λ:T.T> CASE THead (Bind b) x x0 OF TSort x | TLRef x | THead  t0 t0
                                                <λ:T.T> CASE THead (Bind b) 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 (Bind b) x x0
                                                λe:T.<λ:T.T> CASE e OF TSort x | TLRef x | THead  t0 t0
                                                  THead (Bind b) t2 x0
                                        end of H9
                                        (H11
                                           consider H9
                                           we proved 
                                              eq
                                                T
                                                <λ:T.T> CASE THead (Bind b) x x0 OF TSort x | TLRef x | THead  t0 t0
                                                <λ:T.T> CASE THead (Bind b) 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 (Bind b) x x0) (THead (Bind b) t2 x0))P:Prop.P
                                  end of h1
                                  (h2
                                     by (pr3_refl . .)
                                     we proved pr3 (CHead c (Bind b) t2) x0 x0
                                     by (pr3_head_12 . . . H7 . . . previous)
pr3 c (THead (Bind b) x x0) (THead (Bind b) t2 x0)
                                  end of h2
                                  (h3
                                     by (refl_equal . .)
eq T (THead (Bind b) t2 x0) (THead (Bind b) t2 x0)
                                  end of h3
                                  by (H4 . h1 h2 . . h3)
land (sn3 c t2) (sn3 (CHead c (Bind b) t2) x0)
                               end of H8
                               we proceed by induction on H8 to prove sn3 c t2
                                  case conj : H9:sn3 c t2 :sn3 (CHead c (Bind b) t2) 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 (CHead c (Bind b) x) x0 t2
                               (H8
                                  (h1
                                      suppose H8eq T (THead (Bind b) x x0) (THead (Bind b) x t2)
                                      assume PProp
                                        (H9
                                           by (f_equal . . . . . H8)
                                           we proved 
                                              eq
                                                T
                                                <λ:T.T> CASE THead (Bind b) x x0 OF TSort x0 | TLRef x0 | THead   t0t0
                                                <λ:T.T> CASE THead (Bind b) 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 (Bind b) x x0
                                                λe:T.<λ:T.T> CASE e OF TSort x0 | TLRef x0 | THead   t0t0
                                                  THead (Bind b) x t2
                                        end of H9
                                        (H11
                                           consider H9
                                           we proved 
                                              eq
                                                T
                                                <λ:T.T> CASE THead (Bind b) x x0 OF TSort x0 | TLRef x0 | THead   t0t0
                                                <λ:T.T> CASE THead (Bind b) 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 (Bind b) x x0) (THead (Bind b) x t2))P:Prop.P
                                  end of h1
                                  (h2
                                     by (pr3_refl . .)
                                     we proved pr3 c x x
                                     by (pr3_head_12 . . . previous . . . H7)
pr3 c (THead (Bind b) x x0) (THead (Bind b) x t2)
                                  end of h2
                                  (h3
                                     by (refl_equal . .)
eq T (THead (Bind b) x t2) (THead (Bind b) x t2)
                                  end of h3
                                  by (H4 . h1 h2 . . h3)
land (sn3 c x) (sn3 (CHead c (Bind b) x) t2)
                               end of H8
                               we proceed by induction on H8 to prove sn3 (CHead c (Bind b) x) t2
                                  case conj : :sn3 c x H10:sn3 (CHead c (Bind b) x) t2 
                                     the thesis becomes the hypothesis H10
                               we proved sn3 (CHead c (Bind b) x) t2
                            we proved 
                               t2:T
                                 .(eq T x0 t2)P:Prop.P
                                   (pr3 (CHead c (Bind b) x) x0 t2)(sn3 (CHead c (Bind b) x) t2)
                            by (sn3_sing . . previous)
sn3 (CHead c (Bind b) x) x0
                         end of h2
                         by (conj . . h1 h2)
                         we proved land (sn3 c x) (sn3 (CHead c (Bind b) x) x0)

                         x:T
                           .x0:T
                             .H3:eq T t1 (THead (Bind b) x x0)
                               .land (sn3 c x) (sn3 (CHead c (Bind b) x) x0)
             we proved 
                x:T
                  .x0:T
                    .eq T y (THead (Bind b) x x0)
                      land (sn3 c x) (sn3 (CHead c (Bind b) x) x0)
             by (unintro . . . previous)
             we proved 
                x:T
                  .eq T y (THead (Bind b) u x)
                    land (sn3 c u) (sn3 (CHead c (Bind b) u) x)
             by (unintro . . . previous)
             we proved 
                eq T y (THead (Bind b) u t)
                  land (sn3 c u) (sn3 (CHead c (Bind b) u) t)
          we proved 
             y:T
               .sn3 c y
                 (eq T y (THead (Bind b) u t)
                      land (sn3 c u) (sn3 (CHead c (Bind b) u) t))
          by (insert_eq . . . . previous H)
          we proved land (sn3 c u) (sn3 (CHead c (Bind b) u) t)
       we proved 
          b:B
            .c:C
              .u:T
                .t:T
                  .sn3 c (THead (Bind b) u t)
                    land (sn3 c u) (sn3 (CHead c (Bind b) u) t)