DEFINITION sn3_appls_bind()
TYPE =
       b:B
         .not (eq B b Abst)
           c:C
                .u:T
                  .sn3 c u
                    vs:TList
                         .t:T
                           .(sn3
                               CHead c (Bind b) u
                               THeads (Flat Appl) (lifts (S OO vs) t)
                             sn3 c (THeads (Flat Appl) vs (THead (Bind b) u t))
BODY =
        assume bB
        suppose Hnot (eq B b Abst)
        assume cC
        assume uT
        suppose H0sn3 c u
        assume vsTList
          we proceed by induction on vs to prove 
             t0:T
               .(sn3
                   CHead c (Bind b) u
                   THeads (Flat Appl) (lifts (S OO vs) t0)
                 sn3 c (THeads (Flat Appl) vs (THead (Bind b) u t0))
             case TNil : 
                the thesis becomes 
                t:T
                  .(sn3
                      CHead c (Bind b) u
                      THeads (Flat Appl) (lifts (S OO TNil) t)
                    sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))
                   assume tT
                      we must prove 
                            (sn3
                                CHead c (Bind b) u
                                THeads (Flat Appl) (lifts (S OO TNil) t)
                              sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))
                      or equivalently 
                            sn3 (CHead c (Bind b) u) t
                              sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))
                      suppose H1sn3 (CHead c (Bind b) u) t
                         by (sn3_bind . . . H0 . H1)
                         we proved sn3 c (THead (Bind b) u t)
                         that is equivalent to sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))
                      we proved 
                         sn3 (CHead c (Bind b) u) t
                           sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))
                      that is equivalent to 
                         (sn3
                             CHead c (Bind b) u
                             THeads (Flat Appl) (lifts (S OO TNil) t)
                           sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))

                      t:T
                        .(sn3
                            CHead c (Bind b) u
                            THeads (Flat Appl) (lifts (S OO TNil) t)
                          sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))
             case TCons 
                we need to prove 
                v:T
                  .vs0:TList
                    .t0:T
                        .sn3 (CHead c (Bind b) u) (THeads (Flat Appl) (lifts (S OO vs0) t0)
                          sn3 c (THeads (Flat Appl) vs0 (THead (Bind b) u t0))
                      t0:T
                           .(sn3
                               CHead c (Bind b) u
                               THeads (Flat Appl) (lifts (S OO (TCons v vs0)) t0)
                             sn3 c (THeads (Flat Appl) (TCons v vs0) (THead (Bind b) u t0))
                    assume vT
                    assume vs0TList
                      we proceed by induction on vs0 to prove 
                         t0:T
                             .sn3 (CHead c (Bind b) u) (THeads (Flat Appl) (lifts (S OO vs0) t0)
                               sn3 c (THeads (Flat Appl) vs0 (THead (Bind b) u t0))
                           t0:T
                                .(sn3
                                    CHead c (Bind b) u
                                    THead
                                      Flat Appl
                                      lift (S OO v
                                      THeads (Flat Appl) (lifts (S OO vs0) t0)
                                  (sn3
                                       c
                                       THead
                                         Flat Appl
                                         v
                                         THeads (Flat Appl) vs0 (THead (Bind b) u t0))
                         case TNil : 
                            the thesis becomes 
                            t:T
                                .(sn3
                                    CHead c (Bind b) u
                                    THeads (Flat Appl) (lifts (S OO TNil) t)
                                  sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))
                              t:T
                                   .(sn3
                                       CHead c (Bind b) u
                                       THead
                                         Flat Appl
                                         lift (S OO v
                                         THeads (Flat Appl) (lifts (S OO TNil) t)
                                     (sn3
                                          c
                                          THead
                                            Flat Appl
                                            v
                                            THeads (Flat ApplTNil (THead (Bind b) u t))
                                suppose 
                                   t:T
                                     .(sn3
                                         CHead c (Bind b) u
                                         THeads (Flat Appl) (lifts (S OO TNil) t)
                                       sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))
                                assume tT
                                suppose H2
                                   sn3
                                     CHead c (Bind b) u
                                     THead
                                       Flat Appl
                                       lift (S OO v
                                       THeads (Flat Appl) (lifts (S OO TNil) t
                                  consider H2
                                  we proved 
                                     sn3
                                       CHead c (Bind b) u
                                       THead
                                         Flat Appl
                                         lift (S OO v
                                         THeads (Flat Appl) (lifts (S OO TNil) t
                                  that is equivalent to 
                                     sn3 (CHead c (Bind b) u) (THead (Flat Appl) (lift (S OO v) t)
                                  by (sn3_appl_bind . H . . H0 . . previous)
                                  we proved sn3 c (THead (Flat Appl) v (THead (Bind b) u t))
                                  that is equivalent to 
                                     sn3
                                       c
                                       THead
                                         Flat Appl
                                         v
                                         THeads (Flat ApplTNil (THead (Bind b) u t)

                                  t:T
                                      .(sn3
                                          CHead c (Bind b) u
                                          THeads (Flat Appl) (lifts (S OO TNil) t)
                                        sn3 c (THeads (Flat ApplTNil (THead (Bind b) u t))
                                    t:T
                                         .(sn3
                                             CHead c (Bind b) u
                                             THead
                                               Flat Appl
                                               lift (S OO v
                                               THeads (Flat Appl) (lifts (S OO TNil) t)
                                           (sn3
                                                c
                                                THead
                                                  Flat Appl
                                                  v
                                                  THeads (Flat ApplTNil (THead (Bind b) u t))
                         case TCons : t:T t0:TList 
                            the thesis becomes 
                            H2:t1:T
                                       .(sn3
                                           CHead c (Bind b) u
                                           THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1)
                                         sn3 c (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1))
                              .t1:T
                                .H3:sn3
                                           CHead c (Bind b) u
                                           THead
                                             Flat Appl
                                             lift (S OO v
                                             THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1
                                  .sn3
                                    c
                                    THead
                                      Flat Appl
                                      v
                                      THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)
                            () by induction hypothesis we know 
                               t1:T
                                   .sn3 (CHead c (Bind b) u) (THeads (Flat Appl) (lifts (S OO t0) t1)
                                     sn3 c (THeads (Flat Appl) t0 (THead (Bind b) u t1))
                                 t1:T
                                      .(sn3
                                          CHead c (Bind b) u
                                          THead
                                            Flat Appl
                                            lift (S OO v
                                            THeads (Flat Appl) (lifts (S OO t0) t1)
                                        (sn3
                                             c
                                             THead
                                               Flat Appl
                                               v
                                               THeads (Flat Appl) t0 (THead (Bind b) u t1))
                                suppose H2
                                   t1:T
                                     .(sn3
                                         CHead c (Bind b) u
                                         THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1)
                                       sn3 c (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1))
                                assume t1T
                                suppose H3
                                   sn3
                                     CHead c (Bind b) u
                                     THead
                                       Flat Appl
                                       lift (S OO v
                                       THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1
                                  (H_x
                                     by (sn3_gen_flat . . . . H3)

                                        land
                                          sn3 (CHead c (Bind b) u) (lift (S OO v)
                                          sn3
                                            CHead c (Bind b) u
                                            THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1
                                  end of H_x
                                  (H4consider H_x
                                  consider H4
                                  we proved 
                                     land
                                       sn3 (CHead c (Bind b) u) (lift (S OO v)
                                       sn3
                                         CHead c (Bind b) u
                                         THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1
                                  that is equivalent to 
                                     land
                                       sn3 (CHead c (Bind b) u) (lift (S OO v)
                                       sn3
                                         CHead c (Bind b) u
                                         THead
                                           Flat Appl
                                           lift (S OO t
                                           THeads (Flat Appl) (lifts (S OO t0) t1
                                  we proceed by induction on the previous result to prove 
                                     sn3
                                       c
                                       THead
                                         Flat Appl
                                         v
                                         THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)
                                     case conj : H5:sn3 (CHead c (Bind b) u) (lift (S OO v) H6:sn3 (CHead c (Bind b) u) (THead (Flat Appl) (lift (S OO t) (THeads (Flat Appl) (lifts (S OO t0) t1)) 
                                        the thesis becomes 
                                        sn3
                                          c
                                          THead
                                            Flat Appl
                                            v
                                            THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)
                                           (H_y
                                              by (sn3_gen_lift . . . . H5 .)
(drop (S OO (CHead c (Bind b) u) c)(sn3 c v)
                                           end of H_y
                                           (h1
                                              consider H6
                                              we proved 
                                                 sn3
                                                   CHead c (Bind b) u
                                                   THead
                                                     Flat Appl
                                                     lift (S OO t
                                                     THeads (Flat Appl) (lifts (S OO t0) t1
                                              that is equivalent to 
                                                 sn3
                                                   CHead c (Bind b) u
                                                   THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1
                                              by (H2 . previous)
sn3 c (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1))
                                           end of h1
                                           (h2
                                              by (drop_refl .)
                                              we proved drop O O c c
                                              that is equivalent to drop (r (Bind b) OO c c
                                              by (drop_drop . . . . previous .)
                                              we proved drop (S OO (CHead c (Bind b) u) c
                                              by (H_y previous)
sn3 c v
                                           end of h2
                                           (h3
                                               assume u2T
                                               suppose H7pr3 c (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)) u2
                                               suppose H8
                                                  iso (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)) u2
                                                    P:Prop.P
                                                 (H9
                                                    by (pr3_iso_appls_bind . H . . . . . H7 H8)

                                                       pr3
                                                         c
                                                         THead
                                                           Bind b
                                                           u
                                                           THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1
                                                         u2
                                                 end of H9
                                                 (h1
                                                    by (sn3_appl_bind . H . . H0 . . H3)

                                                       sn3
                                                         c
                                                         THead
                                                           Flat Appl
                                                           v
                                                           THead
                                                             Bind b
                                                             u
                                                             THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1
                                                 end of h1
                                                 (h2
                                                    by (pr3_refl . .)
                                                    we proved pr3 c v v
                                                    by (pr3_flat . . . previous . . H9 .)

                                                       pr3
                                                         c
                                                         THead
                                                           Flat Appl
                                                           v
                                                           THead
                                                             Bind b
                                                             u
                                                             THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1
                                                         THead (Flat Appl) v u2
                                                 end of h2
                                                 by (sn3_pr3_trans . . h1 . h2)
                                                 we proved sn3 c (THead (Flat Appl) v u2)

                                                 u2:T
                                                   .pr3 c (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)) u2
                                                     (iso (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)) u2
                                                            P:Prop.P
                                                          sn3 c (THead (Flat Appl) v u2))
                                           end of h3
                                           by (sn3_appl_appls . . . . h1 . h2 h3)

                                              sn3
                                                c
                                                THead
                                                  Flat Appl
                                                  v
                                                  THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)
                                  we proved 
                                     sn3
                                       c
                                       THead
                                         Flat Appl
                                         v
                                         THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)

                                  H2:t1:T
                                             .(sn3
                                                 CHead c (Bind b) u
                                                 THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1)
                                               sn3 c (THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1))
                                    .t1:T
                                      .H3:sn3
                                                 CHead c (Bind b) u
                                                 THead
                                                   Flat Appl
                                                   lift (S OO v
                                                   THeads (Flat Appl) (lifts (S OO (TCons t t0)) t1
                                        .sn3
                                          c
                                          THead
                                            Flat Appl
                                            v
                                            THeads (Flat Appl) (TCons t t0) (THead (Bind b) u t1)
                      we proved 
                         t0:T
                             .sn3 (CHead c (Bind b) u) (THeads (Flat Appl) (lifts (S OO vs0) t0)
                               sn3 c (THeads (Flat Appl) vs0 (THead (Bind b) u t0))
                           t0:T
                                .(sn3
                                    CHead c (Bind b) u
                                    THead
                                      Flat Appl
                                      lift (S OO v
                                      THeads (Flat Appl) (lifts (S OO vs0) t0)
                                  (sn3
                                       c
                                       THead
                                         Flat Appl
                                         v
                                         THeads (Flat Appl) vs0 (THead (Bind b) u t0))
                      that is equivalent to 
                         t0:T
                             .sn3 (CHead c (Bind b) u) (THeads (Flat Appl) (lifts (S OO vs0) t0)
                               sn3 c (THeads (Flat Appl) vs0 (THead (Bind b) u t0))
                           t0:T
                                .(sn3
                                    CHead c (Bind b) u
                                    THeads (Flat Appl) (lifts (S OO (TCons v vs0)) t0)
                                  sn3 c (THeads (Flat Appl) (TCons v vs0) (THead (Bind b) u t0))

                      v:T
                        .vs0:TList
                          .t0:T
                              .sn3 (CHead c (Bind b) u) (THeads (Flat Appl) (lifts (S OO vs0) t0)
                                sn3 c (THeads (Flat Appl) vs0 (THead (Bind b) u t0))
                            t0:T
                                 .(sn3
                                     CHead c (Bind b) u
                                     THeads (Flat Appl) (lifts (S OO (TCons v vs0)) t0)
                                   sn3 c (THeads (Flat Appl) (TCons v vs0) (THead (Bind b) u t0))
          we proved 
             t0:T
               .(sn3
                   CHead c (Bind b) u
                   THeads (Flat Appl) (lifts (S OO vs) t0)
                 sn3 c (THeads (Flat Appl) vs (THead (Bind b) u t0))
       we proved 
          b:B
            .not (eq B b Abst)
              c:C
                   .u:T
                     .sn3 c u
                       vs:TList
                            .t0:T
                              .(sn3
                                  CHead c (Bind b) u
                                  THeads (Flat Appl) (lifts (S OO vs) t0)
                                sn3 c (THeads (Flat Appl) vs (THead (Bind b) u t0))