DEFINITION sns3_lifts1()
TYPE =
       e:C.hds:PList.c:C.(drop1 hds c e)ts:TList.(sns3 e ts)(sns3 c (lifts1 hds ts))
BODY =
        assume eC
        assume hdsPList
          we proceed by induction on hds to prove c:C.(drop1 hds c e)ts:TList.(sns3 e ts)(sns3 c (lifts1 hds ts))
             case PNil : 
                the thesis becomes c:C.(drop1 PNil c e)ts:TList.(sns3 e ts)(sns3 c (lifts1 PNil ts))
                    assume cC
                    suppose Hdrop1 PNil c e
                    assume tsTList
                    suppose H0sns3 e ts
                      (H_y
                         by (drop1_gen_pnil . . H)
eq C c e
                      end of H_y
                      by (lifts1_nil .)
                      we proved eq TList (lifts1 PNil ts) ts
                      by (eq_ind_r . . . H0 . previous)
                      we proved sns3 e (lifts1 PNil ts)
                      by (eq_ind_r . . . previous . H_y)
                      we proved sns3 c (lifts1 PNil ts)
c:C.(drop1 PNil c e)ts:TList.(sns3 e ts)(sns3 c (lifts1 PNil ts))
             case PCons : n:nat n0:nat p:PList 
                the thesis becomes c:C.H0:(drop1 (PCons n n0 p) c e).ts:TList.H1:(sns3 e ts).(sns3 c (lifts1 (PCons n n0 p) ts))
                (H) by induction hypothesis we know c:C.(drop1 p c e)ts:TList.(sns3 e ts)(sns3 c (lifts1 p ts))
                    assume cC
                    suppose H0drop1 (PCons n n0 p) c e
                    assume tsTList
                    suppose H1sns3 e ts
                      (H_x
                         by (drop1_gen_pcons . . . . . H0)
ex2 C λc2:C.drop n n0 c c2 λc2:C.drop1 p c2 e
                      end of H_x
                      (H2consider H_x
                      we proceed by induction on H2 to prove sns3 c (lifts1 (PCons n n0 p) ts)
                         case ex_intro2 : x:C H3:drop n n0 c x H4:drop1 p x e 
                            the thesis becomes sns3 c (lifts1 (PCons n n0 p) ts)
                               (h1
                                  by (H . H4 . H1)
                                  we proved sns3 x (lifts1 p ts)
                                  by (sns3_lifts . . . . H3 . previous)
sns3 c (lifts n n0 (lifts1 p ts))
                               end of h1
                               (h2
                                  by (lifts1_cons . . . .)
eq TList (lifts1 (PCons n n0 p) ts) (lifts n n0 (lifts1 p ts))
                               end of h2
                               by (eq_ind_r . . . h1 . h2)
sns3 c (lifts1 (PCons n n0 p) ts)
                      we proved sns3 c (lifts1 (PCons n n0 p) ts)
c:C.H0:(drop1 (PCons n n0 p) c e).ts:TList.H1:(sns3 e ts).(sns3 c (lifts1 (PCons n n0 p) ts))
          we proved c:C.(drop1 hds c e)ts:TList.(sns3 e ts)(sns3 c (lifts1 hds ts))
       we proved 
          e:C.hds:PList.c:C.(drop1 hds c e)ts:TList.(sns3 e ts)(sns3 c (lifts1 hds ts))