DEFINITION nfs2_tapp()
TYPE =
       c:C.t:T.ts:TList.(nfs2 c (TApp ts t))(land (nfs2 c ts) (nf2 c t))
BODY =
        assume cC
        assume tT
        assume tsTList
          we proceed by induction on ts to prove (nfs2 c (TApp ts t))(land (nfs2 c ts) (nf2 c t))
             case TNil : 
                the thesis becomes (nfs2 c (TApp TNil t))(land (nfs2 c TNil) (nf2 c t))
                   we must prove (nfs2 c (TApp TNil t))(land (nfs2 c TNil) (nf2 c t))
                   or equivalently (land (nf2 c t) True)(land (nfs2 c TNil) (nf2 c t))
                   suppose Hland (nf2 c t) True
                      (H0consider H
                      we proceed by induction on H0 to prove land True (nf2 c t)
                         case conj : H1:nf2 c t :True 
                            the thesis becomes land True (nf2 c t)
                               by (conj . . I H1)
land True (nf2 c t)
                      we proved land True (nf2 c t)
                      that is equivalent to land (nfs2 c TNil) (nf2 c t)
                   we proved (land (nf2 c t) True)(land (nfs2 c TNil) (nf2 c t))
(nfs2 c (TApp TNil t))(land (nfs2 c TNil) (nf2 c t))
             case TCons : t0:T t1:TList 
                the thesis becomes (nfs2 c (TApp (TCons t0 t1) t))(land (nfs2 c (TCons t0 t1)) (nf2 c t))
                (H) by induction hypothesis we know (nfs2 c (TApp t1 t))(land (nfs2 c t1) (nf2 c t))
                   we must prove (nfs2 c (TApp (TCons t0 t1) t))(land (nfs2 c (TCons t0 t1)) (nf2 c t))
                   or equivalently (land (nf2 c t0) (nfs2 c (TApp t1 t)))(land (nfs2 c (TCons t0 t1)) (nf2 c t))
                   suppose H0land (nf2 c t0) (nfs2 c (TApp t1 t))
                      (H1consider H0
                      we proceed by induction on H1 to prove land (land (nf2 c t0) (nfs2 c t1)) (nf2 c t)
                         case conj : H2:nf2 c t0 H3:nfs2 c (TApp t1 t) 
                            the thesis becomes land (land (nf2 c t0) (nfs2 c t1)) (nf2 c t)
                               (H_x
                                  by (H H3)
land (nfs2 c t1) (nf2 c t)
                               end of H_x
                               (H4consider H_x
                               we proceed by induction on H4 to prove land (land (nf2 c t0) (nfs2 c t1)) (nf2 c t)
                                  case conj : H5:nfs2 c t1 H6:nf2 c t 
                                     the thesis becomes land (land (nf2 c t0) (nfs2 c t1)) (nf2 c t)
                                        by (conj . . H2 H5)
                                        we proved land (nf2 c t0) (nfs2 c t1)
                                        by (conj . . previous H6)
land (land (nf2 c t0) (nfs2 c t1)) (nf2 c t)
land (land (nf2 c t0) (nfs2 c t1)) (nf2 c t)
                      we proved land (land (nf2 c t0) (nfs2 c t1)) (nf2 c t)
                      that is equivalent to land (nfs2 c (TCons t0 t1)) (nf2 c t)
                   we proved (land (nf2 c t0) (nfs2 c (TApp t1 t)))(land (nfs2 c (TCons t0 t1)) (nf2 c t))
(nfs2 c (TApp (TCons t0 t1) t))(land (nfs2 c (TCons t0 t1)) (nf2 c t))
          we proved (nfs2 c (TApp ts t))(land (nfs2 c ts) (nf2 c t))
       we proved c:C.t:T.ts:TList.(nfs2 c (TApp ts t))(land (nfs2 c ts) (nf2 c t))