DEFINITION sn3_appls_lref()
TYPE =
       c:C
         .i:nat
           .nf2 c (TLRef i)
             us:TList.(sns3 c us)(sn3 c (THeads (Flat Appl) us (TLRef i)))
BODY =
        assume cC
        assume inat
        suppose Hnf2 c (TLRef i)
        assume usTList
          we proceed by induction on us to prove (sns3 c us)(sn3 c (THeads (Flat Appl) us (TLRef i)))
             case TNil : 
                the thesis becomes (sns3 c TNil)(sn3 c (THeads (Flat ApplTNil (TLRef i)))
                   we must prove (sns3 c TNil)(sn3 c (THeads (Flat ApplTNil (TLRef i)))
                   or equivalently True(sn3 c (THeads (Flat ApplTNil (TLRef i)))
                   suppose True
                      by (sn3_nf2 . . H)
                      we proved sn3 c (TLRef i)
                      that is equivalent to sn3 c (THeads (Flat ApplTNil (TLRef i))
                   we proved True(sn3 c (THeads (Flat ApplTNil (TLRef i)))
(sns3 c TNil)(sn3 c (THeads (Flat ApplTNil (TLRef i)))
             case TCons 
                we need to prove 
                t:T
                  .t0:TList
                    .(sns3 c t0)(sn3 c (THeads (Flat Appl) t0 (TLRef i)))
                      (sns3 c (TCons t t0)
                           sn3 c (THeads (Flat Appl) (TCons t t0) (TLRef i)))
                    assume tT
                    assume t0TList
                      we proceed by induction on t0 to prove 
                         (sns3 c t0)(sn3 c (THeads (Flat Appl) t0 (TLRef i)))
                           (land (sn3 c t) (sns3 c t0)
                                sn3 c (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef i))))
                         case TNil : 
                            the thesis becomes 
                            (sns3 c TNil)(sn3 c (THeads (Flat ApplTNil (TLRef i)))
                              (land (sn3 c t) (sns3 c TNil)
                                   (sn3
                                        c
                                        THead (Flat Appl) t (THeads (Flat ApplTNil (TLRef i))))
                                suppose (sns3 c TNil)(sn3 c (THeads (Flat ApplTNil (TLRef i)))
                                suppose H1land (sn3 c t) (sns3 c TNil)
                                  (H2consider H1
                                  consider H2
                                  we proved land (sn3 c t) (sns3 c TNil)
                                  that is equivalent to land (sn3 c t) True
                                  we proceed by induction on the previous result to prove 
                                     sn3
                                       c
                                       THead (Flat Appl) t (THeads (Flat ApplTNil (TLRef i))
                                     case conj : H3:sn3 c t :True 
                                        the thesis becomes 
                                        sn3
                                          c
                                          THead (Flat Appl) t (THeads (Flat ApplTNil (TLRef i))
                                           by (sn3_appl_lref . . H . H3)
                                           we proved sn3 c (THead (Flat Appl) t (TLRef i))

                                              sn3
                                                c
                                                THead (Flat Appl) t (THeads (Flat ApplTNil (TLRef i))
                                  we proved 
                                     sn3
                                       c
                                       THead (Flat Appl) t (THeads (Flat ApplTNil (TLRef i))

                                  (sns3 c TNil)(sn3 c (THeads (Flat ApplTNil (TLRef i)))
                                    (land (sn3 c t) (sns3 c TNil)
                                         (sn3
                                              c
                                              THead (Flat Appl) t (THeads (Flat ApplTNil (TLRef i))))
                         case TCons : t1:T t2:TList 
                            the thesis becomes 
                            H1:sns3 c (TCons t1 t2)
                                       sn3 c (THeads (Flat Appl) (TCons t1 t2) (TLRef i))
                              .H2:land (sn3 c t) (sns3 c (TCons t1 t2))
                                .sn3
                                  c
                                  THead
                                    Flat Appl
                                    t
                                    THeads (Flat Appl) (TCons t1 t2) (TLRef i)
                            () by induction hypothesis we know 
                               (sns3 c t2)(sn3 c (THeads (Flat Appl) t2 (TLRef i)))
                                 (land (sn3 c t) (sns3 c t2)
                                      sn3 c (THead (Flat Appl) t (THeads (Flat Appl) t2 (TLRef i))))
                                suppose H1
                                   sns3 c (TCons t1 t2)
                                     sn3 c (THeads (Flat Appl) (TCons t1 t2) (TLRef i))
                                suppose H2land (sn3 c t) (sns3 c (TCons t1 t2))
                                  (H3consider H2
                                  consider H3
                                  we proved land (sn3 c t) (sns3 c (TCons t1 t2))
                                  that is equivalent to land (sn3 c t) (land (sn3 c t1) (sns3 c t2))
                                  we proceed by induction on the previous result to prove 
                                     sn3
                                       c
                                       THead
                                         Flat Appl
                                         t
                                         THeads (Flat Appl) (TCons t1 t2) (TLRef i)
                                     case conj : H4:sn3 c t H5:land (sn3 c t1) (sns3 c t2) 
                                        the thesis becomes 
                                        sn3
                                          c
                                          THead
                                            Flat Appl
                                            t
                                            THeads (Flat Appl) (TCons t1 t2) (TLRef i)
                                           we proceed by induction on H5 to prove 
                                              sn3
                                                c
                                                THead
                                                  Flat Appl
                                                  t
                                                  THeads (Flat Appl) (TCons t1 t2) (TLRef i)
                                              case conj : H6:sn3 c t1 H7:sns3 c t2 
                                                 the thesis becomes 
                                                 sn3
                                                   c
                                                   THead
                                                     Flat Appl
                                                     t
                                                     THeads (Flat Appl) (TCons t1 t2) (TLRef i)
                                                    (h1
                                                       by (conj . . H6 H7)
                                                       we proved land (sn3 c t1) (sns3 c t2)
                                                       that is equivalent to sns3 c (TCons t1 t2)
                                                       by (H1 previous)
sn3 c (THeads (Flat Appl) (TCons t1 t2) (TLRef i))
                                                    end of h1
                                                    (h2
                                                        assume u2T
                                                        suppose H8pr3 c (THeads (Flat Appl) (TCons t1 t2) (TLRef i)) u2
                                                        suppose H9(iso (THeads (Flat Appl) (TCons t1 t2) (TLRef i)) u2)P:Prop.P
                                                          by (nf2_iso_appls_lref . . H . . H8)
                                                          we proved iso (THeads (Flat Appl) (TCons t1 t2) (TLRef i)) u2
                                                          by (H9 previous .)
                                                          we proved sn3 c (THead (Flat Appl) t u2)

                                                          u2:T
                                                            .pr3 c (THeads (Flat Appl) (TCons t1 t2) (TLRef i)) u2
                                                              ((iso (THeads (Flat Appl) (TCons t1 t2) (TLRef i)) u2)P:Prop.P
                                                                   sn3 c (THead (Flat Appl) t u2))
                                                    end of h2
                                                    by (sn3_appl_appls . . . . h1 . H4 h2)

                                                       sn3
                                                         c
                                                         THead
                                                           Flat Appl
                                                           t
                                                           THeads (Flat Appl) (TCons t1 t2) (TLRef i)

                                              sn3
                                                c
                                                THead
                                                  Flat Appl
                                                  t
                                                  THeads (Flat Appl) (TCons t1 t2) (TLRef i)
                                  we proved 
                                     sn3
                                       c
                                       THead
                                         Flat Appl
                                         t
                                         THeads (Flat Appl) (TCons t1 t2) (TLRef i)

                                  H1:sns3 c (TCons t1 t2)
                                             sn3 c (THeads (Flat Appl) (TCons t1 t2) (TLRef i))
                                    .H2:land (sn3 c t) (sns3 c (TCons t1 t2))
                                      .sn3
                                        c
                                        THead
                                          Flat Appl
                                          t
                                          THeads (Flat Appl) (TCons t1 t2) (TLRef i)
                      we proved 
                         (sns3 c t0)(sn3 c (THeads (Flat Appl) t0 (TLRef i)))
                           (land (sn3 c t) (sns3 c t0)
                                sn3 c (THead (Flat Appl) t (THeads (Flat Appl) t0 (TLRef i))))
                      that is equivalent to 
                         (sns3 c t0)(sn3 c (THeads (Flat Appl) t0 (TLRef i)))
                           (sns3 c (TCons t t0)
                                sn3 c (THeads (Flat Appl) (TCons t t0) (TLRef i)))

                      t:T
                        .t0:TList
                          .(sns3 c t0)(sn3 c (THeads (Flat Appl) t0 (TLRef i)))
                            (sns3 c (TCons t t0)
                                 sn3 c (THeads (Flat Appl) (TCons t t0) (TLRef i)))
          we proved (sns3 c us)(sn3 c (THeads (Flat Appl) us (TLRef i)))
       we proved 
          c:C
            .i:nat
              .nf2 c (TLRef i)
                us:TList.(sns3 c us)(sn3 c (THeads (Flat Appl) us (TLRef i)))