DEFINITION sns3_lifts()
TYPE =
       c:C
         .d:C
           .h:nat
             .i:nat.(drop h i c d)ts:TList.(sns3 d ts)(sns3 c (lifts h i ts))
BODY =
        assume cC
        assume dC
        assume hnat
        assume inat
        suppose Hdrop h i c d
        assume tsTList
          we proceed by induction on ts to prove (sns3 d ts)(sns3 c (lifts h i ts))
             case TNil : 
                the thesis becomes (sns3 d TNil)(sns3 c (lifts h i TNil))
                   we must prove (sns3 d TNil)(sns3 c (lifts h i TNil))
                   or equivalently True(sns3 c (lifts h i TNil))
                   suppose H0True
                      consider H0
                      we proved True
                      that is equivalent to sns3 c (lifts h i TNil)
                   we proved True(sns3 c (lifts h i TNil))
(sns3 d TNil)(sns3 c (lifts h i TNil))
             case TCons : t:T t0:TList 
                the thesis becomes (sns3 d (TCons t t0))(sns3 c (lifts h i (TCons t t0)))
                (H0) by induction hypothesis we know (sns3 d t0)(sns3 c (lifts h i t0))
                   we must prove (sns3 d (TCons t t0))(sns3 c (lifts h i (TCons t t0)))
                   or equivalently (land (sn3 d t) (sns3 d t0))(sns3 c (lifts h i (TCons t t0)))
                   suppose H1land (sn3 d t) (sns3 d t0)
                      (H2consider H1
                      we proceed by induction on H2 to prove land (sn3 c (lift h i t)) (sns3 c (lifts h i t0))
                         case conj : H3:sn3 d t H4:sns3 d t0 
                            the thesis becomes land (sn3 c (lift h i t)) (sns3 c (lifts h i t0))
                               (h1
                                  by (sn3_lift . . H3 . . . H)
sn3 c (lift h i t)
                               end of h1
                               (h2by (H0 H4) we proved sns3 c (lifts h i t0)
                               by (conj . . h1 h2)
land (sn3 c (lift h i t)) (sns3 c (lifts h i t0))
                      we proved land (sn3 c (lift h i t)) (sns3 c (lifts h i t0))
                      that is equivalent to sns3 c (lifts h i (TCons t t0))
                   we proved (land (sn3 d t) (sns3 d t0))(sns3 c (lifts h i (TCons t t0)))
(sns3 d (TCons t t0))(sns3 c (lifts h i (TCons t t0)))
          we proved (sns3 d ts)(sns3 c (lifts h i ts))
       we proved 
          c:C
            .d:C
              .h:nat
                .i:nat.(drop h i c d)ts:TList.(sns3 d ts)(sns3 c (lifts h i ts))