DEFINITION drop1_getl_trans()
TYPE =
       hds:PList
         .c1:C
           .c2:C
             .drop1 hds c2 c1
               b:B
                    .e1:C
                      .v:T
                        .i:nat
                          .getl i c1 (CHead e1 (Bind b) v)
                            (ex2
                                 C
                                 λe2:C.drop1 (ptrans hds i) e2 e1
                                 λe2:C.getl (trans hds i) c2 (CHead e2 (Bind b) (lift1 (ptrans hds i) v)))
BODY =
       assume hdsPList
          we proceed by induction on hds to prove 
             c1:C
               .c2:C
                 .drop1 hds c2 c1
                   b:B
                        .e1:C
                          .v:T
                            .i:nat
                              .getl i c1 (CHead e1 (Bind b) v)
                                (ex2
                                     C
                                     λe2:C.drop1 (ptrans hds i) e2 e1
                                     λe2:C.getl (trans hds i) c2 (CHead e2 (Bind b) (lift1 (ptrans hds i) v)))
             case PNil : 
                the thesis becomes 
                c1:C
                  .c2:C
                    .drop1 PNil c2 c1
                      b:B
                           .e1:C
                             .v:T
                               .i:nat
                                 .getl i c1 (CHead e1 (Bind b) v)
                                   (ex2
                                        C
                                        λe2:C.drop1 (ptrans PNil i) e2 e1
                                        λe2:C.getl (trans PNil i) c2 (CHead e2 (Bind b) (lift1 (ptrans PNil i) v)))
                    assume c1C
                    assume c2C
                    suppose Hdrop1 PNil c2 c1
                    assume bB
                    assume e1C
                    assume vT
                    assume inat
                    suppose H0getl i c1 (CHead e1 (Bind b) v)
                      (H_y
                         by (drop1_gen_pnil . . H)
eq C c2 c1
                      end of H_y
                      by (drop1_nil .)
                      we proved drop1 PNil e1 e1
                      by (ex_intro2 . . . . previous H0)
                      we proved ex2 C λe2:C.drop1 PNil e2 e1 λe2:C.getl i c1 (CHead e2 (Bind b) v)
                      by (eq_ind_r . . . previous . H_y)
                      we proved ex2 C λe2:C.drop1 PNil e2 e1 λe2:C.getl i c2 (CHead e2 (Bind b) v)
                      that is equivalent to 
                         ex2
                           C
                           λe2:C.drop1 (ptrans PNil i) e2 e1
                           λe2:C.getl (trans PNil i) c2 (CHead e2 (Bind b) (lift1 (ptrans PNil i) v))

                      c1:C
                        .c2:C
                          .drop1 PNil c2 c1
                            b:B
                                 .e1:C
                                   .v:T
                                     .i:nat
                                       .getl i c1 (CHead e1 (Bind b) v)
                                         (ex2
                                              C
                                              λe2:C.drop1 (ptrans PNil i) e2 e1
                                              λe2:C.getl (trans PNil i) c2 (CHead e2 (Bind b) (lift1 (ptrans PNil i) v)))
             case PCons : h:nat d:nat hds0:PList 
                the thesis becomes 
                c1:C
                  .c2:C
                    .H0:drop1 (PCons h d hds0) c2 c1
                      .b:B
                        .e1:C
                          .v:T
                            .i:nat
                              .H1:getl i c1 (CHead e1 (Bind b) v)
                                .ex2
                                  C
                                  λe2:C
                                    .drop1
                                      <λb1:bool.PList>
                                        CASE blt (trans hds0 i) d OF
                                          truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                        | falseptrans hds0 i
                                      e2
                                      e1
                                  λe2:C
                                    .getl
                                      <λb1:bool.nat>
                                        CASE blt (trans hds0 i) d OF
                                          truetrans hds0 i
                                        | falseplus (trans hds0 i) h
                                      c2
                                      CHead
                                        e2
                                        Bind b
                                        lift1
                                          <λb1:bool.PList>
                                            CASE blt (trans hds0 i) d OF
                                              truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                            | falseptrans hds0 i
                                          v
                (H) by induction hypothesis we know 
                   c1:C
                     .c2:C
                       .drop1 hds0 c2 c1
                         b:B
                              .e1:C
                                .v:T
                                  .i:nat
                                    .getl i c1 (CHead e1 (Bind b) v)
                                      (ex2
                                           C
                                           λe2:C.drop1 (ptrans hds0 i) e2 e1
                                           λe2:C.getl (trans hds0 i) c2 (CHead e2 (Bind b) (lift1 (ptrans hds0 i) v)))
                    assume c1C
                    assume c2C
                    suppose H0drop1 (PCons h d hds0) c2 c1
                    assume bB
                    assume e1C
                    assume vT
                    assume inat
                    suppose H1getl i c1 (CHead e1 (Bind b) v)
                      (H_x
                         by (drop1_gen_pcons . . . . . H0)
ex2 C λc2:C.drop h d c2 c2 λc2:C.drop1 hds0 c2 c1
                      end of H_x
                      (H2consider H_x
                      we proceed by induction on H2 to prove 
                         ex2
                           C
                           λe2:C
                             .drop1
                               <λb1:bool.PList>
                                 CASE blt (trans hds0 i) d OF
                                   truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                 | falseptrans hds0 i
                               e2
                               e1
                           λe2:C
                             .getl
                               <λb1:bool.nat>
                                 CASE blt (trans hds0 i) d OF
                                   truetrans hds0 i
                                 | falseplus (trans hds0 i) h
                               c2
                               CHead
                                 e2
                                 Bind b
                                 lift1
                                   <λb1:bool.PList>
                                     CASE blt (trans hds0 i) d OF
                                       truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                     | falseptrans hds0 i
                                   v
                         case ex_intro2 : x:C H3:drop h d c2 x H4:drop1 hds0 x c1 
                            the thesis becomes 
                            ex2
                              C
                              λe2:C
                                .drop1
                                  <λb1:bool.PList>
                                    CASE blt (trans hds0 i) d OF
                                      truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                    | falseptrans hds0 i
                                  e2
                                  e1
                              λe2:C
                                .getl
                                  <λb1:bool.nat>
                                    CASE blt (trans hds0 i) d OF
                                      truetrans hds0 i
                                    | falseplus (trans hds0 i) h
                                  c2
                                  CHead
                                    e2
                                    Bind b
                                    lift1
                                      <λb1:bool.PList>
                                        CASE blt (trans hds0 i) d OF
                                          truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                        | falseptrans hds0 i
                                      v
                               assume x_xbool
                                  we proceed by induction on x_x to prove 
                                     eq bool (blt (trans hds0 i) d) x_x
                                       (ex2
                                            C
                                            λe2:C
                                              .drop1
                                                <λb1:bool.PList>
                                                  CASE x_x OF
                                                    truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                  | falseptrans hds0 i
                                                e2
                                                e1
                                            λe2:C
                                              .getl
                                                <λb1:bool.nat> CASE x_x OF truetrans hds0 i | falseplus (trans hds0 i) h
                                                c2
                                                CHead
                                                  e2
                                                  Bind b
                                                  lift1
                                                    <λb1:bool.PList>
                                                      CASE x_x OF
                                                        truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                      | falseptrans hds0 i
                                                    v)
                                     case true : 
                                        the thesis becomes 
                                        eq bool (blt (trans hds0 i) d) true
                                          (ex2
                                               C
                                               λe2:C
                                                 .drop1
                                                   <λb1:bool.PList>
                                                     CASE true OF
                                                       truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                     | falseptrans hds0 i
                                                   e2
                                                   e1
                                               λe2:C
                                                 .getl
                                                   <λb1:bool.nat> CASE true OF truetrans hds0 i | falseplus (trans hds0 i) h
                                                   c2
                                                   CHead
                                                     e2
                                                     Bind b
                                                     lift1
                                                       <λb1:bool.PList>
                                                         CASE true OF
                                                           truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                         | falseptrans hds0 i
                                                       v)
                                           suppose H5eq bool (blt (trans hds0 i) d) true
                                              (H_x0
                                                 by (H . . H4 . . . . H1)

                                                    ex2
                                                      C
                                                      λe2:C.drop1 (ptrans hds0 i) e2 e1
                                                      λe2:C.getl (trans hds0 i) x (CHead e2 (Bind b) (lift1 (ptrans hds0 i) v))
                                              end of H_x0
                                              (H6consider H_x0
                                              we proceed by induction on H6 to prove 
                                                 ex2
                                                   C
                                                   λe2:C.drop1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) e2 e1
                                                   λe2:C
                                                     .getl
                                                       trans hds0 i
                                                       c2
                                                       CHead
                                                         e2
                                                         Bind b
                                                         lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) v
                                                 case ex_intro2 : x0:C H7:drop1 (ptrans hds0 i) x0 e1 H8:getl (trans hds0 i) x (CHead x0 (Bind b) (lift1 (ptrans hds0 i) v)) 
                                                    the thesis becomes 
                                                    ex2
                                                      C
                                                      λe2:C.drop1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) e2 e1
                                                      λe2:C
                                                        .getl
                                                          trans hds0 i
                                                          c2
                                                          CHead
                                                            e2
                                                            Bind b
                                                            lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) v
                                                       (H_x1
                                                          by (blt_lt . . H5)
                                                          we proved lt (trans hds0 i) d
                                                          by (drop_getl_trans_lt . . previous . . . H3 . . . H8)

                                                             ex2
                                                               C
                                                               λe1:C
                                                                 .getl
                                                                   trans hds0 i
                                                                   c2
                                                                   CHead
                                                                     e1
                                                                     Bind b
                                                                     lift h (minus d (S (trans hds0 i))) (lift1 (ptrans hds0 i) v)
                                                               λe1:C.drop h (minus d (S (trans hds0 i))) e1 x0
                                                       end of H_x1
                                                       (H9consider H_x1
                                                       we proceed by induction on H9 to prove 
                                                          ex2
                                                            C
                                                            λe2:C.drop1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) e2 e1
                                                            λe2:C
                                                              .getl
                                                                trans hds0 i
                                                                c2
                                                                CHead
                                                                  e2
                                                                  Bind b
                                                                  lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) v
                                                          case ex_intro2 : x1:C H10:getl (trans hds0 i) c2 (CHead x1 (Bind b) (lift h (minus d (S (trans hds0 i))) (lift1 (ptrans hds0 i) v))) H11:drop h (minus d (S (trans hds0 i))) x1 x0 
                                                             the thesis becomes 
                                                             ex2
                                                               C
                                                               λe2:C.drop1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) e2 e1
                                                               λe2:C
                                                                 .getl
                                                                   trans hds0 i
                                                                   c2
                                                                   CHead
                                                                     e2
                                                                     Bind b
                                                                     lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) v
                                                                (h1
                                                                   by (drop1_cons . . . . H11 . . H7)
drop1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) x1 e1
                                                                end of h1
                                                                (h2
                                                                   consider H10
                                                                   we proved 
                                                                      getl
                                                                        trans hds0 i
                                                                        c2
                                                                        CHead
                                                                          x1
                                                                          Bind b
                                                                          lift h (minus d (S (trans hds0 i))) (lift1 (ptrans hds0 i) v)

                                                                      getl
                                                                        trans hds0 i
                                                                        c2
                                                                        CHead
                                                                          x1
                                                                          Bind b
                                                                          lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) v
                                                                end of h2
                                                                by (ex_intro2 . . . . h1 h2)

                                                                   ex2
                                                                     C
                                                                     λe2:C.drop1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) e2 e1
                                                                     λe2:C
                                                                       .getl
                                                                         trans hds0 i
                                                                         c2
                                                                         CHead
                                                                           e2
                                                                           Bind b
                                                                           lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) v

                                                          ex2
                                                            C
                                                            λe2:C.drop1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) e2 e1
                                                            λe2:C
                                                              .getl
                                                                trans hds0 i
                                                                c2
                                                                CHead
                                                                  e2
                                                                  Bind b
                                                                  lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) v
                                              we proved 
                                                 ex2
                                                   C
                                                   λe2:C.drop1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) e2 e1
                                                   λe2:C
                                                     .getl
                                                       trans hds0 i
                                                       c2
                                                       CHead
                                                         e2
                                                         Bind b
                                                         lift1 (PCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)) v
                                              that is equivalent to 
                                                 ex2
                                                   C
                                                   λe2:C
                                                     .drop1
                                                       <λb1:bool.PList>
                                                         CASE true OF
                                                           truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                         | falseptrans hds0 i
                                                       e2
                                                       e1
                                                   λe2:C
                                                     .getl
                                                       <λb1:bool.nat> CASE true OF truetrans hds0 i | falseplus (trans hds0 i) h
                                                       c2
                                                       CHead
                                                         e2
                                                         Bind b
                                                         lift1
                                                           <λb1:bool.PList>
                                                             CASE true OF
                                                               truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                             | falseptrans hds0 i
                                                           v

                                              eq bool (blt (trans hds0 i) d) true
                                                (ex2
                                                     C
                                                     λe2:C
                                                       .drop1
                                                         <λb1:bool.PList>
                                                           CASE true OF
                                                             truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                           | falseptrans hds0 i
                                                         e2
                                                         e1
                                                     λe2:C
                                                       .getl
                                                         <λb1:bool.nat> CASE true OF truetrans hds0 i | falseplus (trans hds0 i) h
                                                         c2
                                                         CHead
                                                           e2
                                                           Bind b
                                                           lift1
                                                             <λb1:bool.PList>
                                                               CASE true OF
                                                                 truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                               | falseptrans hds0 i
                                                             v)
                                     case false : 
                                        the thesis becomes 
                                        eq bool (blt (trans hds0 i) d) false
                                          (ex2
                                               C
                                               λe2:C
                                                 .drop1
                                                   <λb1:bool.PList>
                                                     CASE false OF
                                                       truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                     | falseptrans hds0 i
                                                   e2
                                                   e1
                                               λe2:C
                                                 .getl
                                                   <λb1:bool.nat> CASE false OF truetrans hds0 i | falseplus (trans hds0 i) h
                                                   c2
                                                   CHead
                                                     e2
                                                     Bind b
                                                     lift1
                                                       <λb1:bool.PList>
                                                         CASE false OF
                                                           truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                         | falseptrans hds0 i
                                                       v)
                                           suppose H5eq bool (blt (trans hds0 i) d) false
                                              (H_x0
                                                 by (H . . H4 . . . . H1)

                                                    ex2
                                                      C
                                                      λe2:C.drop1 (ptrans hds0 i) e2 e1
                                                      λe2:C.getl (trans hds0 i) x (CHead e2 (Bind b) (lift1 (ptrans hds0 i) v))
                                              end of H_x0
                                              (H6consider H_x0
                                              we proceed by induction on H6 to prove 
                                                 ex2
                                                   C
                                                   λe2:C.drop1 (ptrans hds0 i) e2 e1
                                                   λe2:C.getl (plus (trans hds0 i) h) c2 (CHead e2 (Bind b) (lift1 (ptrans hds0 i) v))
                                                 case ex_intro2 : x0:C H7:drop1 (ptrans hds0 i) x0 e1 H8:getl (trans hds0 i) x (CHead x0 (Bind b) (lift1 (ptrans hds0 i) v)) 
                                                    the thesis becomes 
                                                    ex2
                                                      C
                                                      λe2:C.drop1 (ptrans hds0 i) e2 e1
                                                      λe2:C.getl (plus (trans hds0 i) h) c2 (CHead e2 (Bind b) (lift1 (ptrans hds0 i) v))
                                                       (H9
                                                          by (drop_getl_trans_ge . . . . . H3 . H8)

                                                             le d (trans hds0 i)
                                                               getl (plus (trans hds0 i) h) c2 (CHead x0 (Bind b) (lift1 (ptrans hds0 i) v))
                                                       end of H9
                                                       by (bge_le . . H5)
                                                       we proved le d (trans hds0 i)
                                                       by (H9 previous)
                                                       we proved getl (plus (trans hds0 i) h) c2 (CHead x0 (Bind b) (lift1 (ptrans hds0 i) v))
                                                       by (ex_intro2 . . . . H7 previous)

                                                          ex2
                                                            C
                                                            λe2:C.drop1 (ptrans hds0 i) e2 e1
                                                            λe2:C.getl (plus (trans hds0 i) h) c2 (CHead e2 (Bind b) (lift1 (ptrans hds0 i) v))
                                              we proved 
                                                 ex2
                                                   C
                                                   λe2:C.drop1 (ptrans hds0 i) e2 e1
                                                   λe2:C.getl (plus (trans hds0 i) h) c2 (CHead e2 (Bind b) (lift1 (ptrans hds0 i) v))
                                              that is equivalent to 
                                                 ex2
                                                   C
                                                   λe2:C
                                                     .drop1
                                                       <λb1:bool.PList>
                                                         CASE false OF
                                                           truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                         | falseptrans hds0 i
                                                       e2
                                                       e1
                                                   λe2:C
                                                     .getl
                                                       <λb1:bool.nat> CASE false OF truetrans hds0 i | falseplus (trans hds0 i) h
                                                       c2
                                                       CHead
                                                         e2
                                                         Bind b
                                                         lift1
                                                           <λb1:bool.PList>
                                                             CASE false OF
                                                               truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                             | falseptrans hds0 i
                                                           v

                                              eq bool (blt (trans hds0 i) d) false
                                                (ex2
                                                     C
                                                     λe2:C
                                                       .drop1
                                                         <λb1:bool.PList>
                                                           CASE false OF
                                                             truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                           | falseptrans hds0 i
                                                         e2
                                                         e1
                                                     λe2:C
                                                       .getl
                                                         <λb1:bool.nat> CASE false OF truetrans hds0 i | falseplus (trans hds0 i) h
                                                         c2
                                                         CHead
                                                           e2
                                                           Bind b
                                                           lift1
                                                             <λb1:bool.PList>
                                                               CASE false OF
                                                                 truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                               | falseptrans hds0 i
                                                             v)
                                  we proved 
                                     eq bool (blt (trans hds0 i) d) x_x
                                       (ex2
                                            C
                                            λe2:C
                                              .drop1
                                                <λb1:bool.PList>
                                                  CASE x_x OF
                                                    truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                  | falseptrans hds0 i
                                                e2
                                                e1
                                            λe2:C
                                              .getl
                                                <λb1:bool.nat> CASE x_x OF truetrans hds0 i | falseplus (trans hds0 i) h
                                                c2
                                                CHead
                                                  e2
                                                  Bind b
                                                  lift1
                                                    <λb1:bool.PList>
                                                      CASE x_x OF
                                                        truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                      | falseptrans hds0 i
                                                    v)
                               we proved 
                                  x_x:bool
                                    .eq bool (blt (trans hds0 i) d) x_x
                                      (ex2
                                           C
                                           λe2:C
                                             .drop1
                                               <λb1:bool.PList>
                                                 CASE x_x OF
                                                   truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                 | falseptrans hds0 i
                                               e2
                                               e1
                                           λe2:C
                                             .getl
                                               <λb1:bool.nat> CASE x_x OF truetrans hds0 i | falseplus (trans hds0 i) h
                                               c2
                                               CHead
                                                 e2
                                                 Bind b
                                                 lift1
                                                   <λb1:bool.PList>
                                                     CASE x_x OF
                                                       truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                     | falseptrans hds0 i
                                                   v)
                               by (xinduction . . . previous)

                                  ex2
                                    C
                                    λe2:C
                                      .drop1
                                        <λb1:bool.PList>
                                          CASE blt (trans hds0 i) d OF
                                            truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                          | falseptrans hds0 i
                                        e2
                                        e1
                                    λe2:C
                                      .getl
                                        <λb1:bool.nat>
                                          CASE blt (trans hds0 i) d OF
                                            truetrans hds0 i
                                          | falseplus (trans hds0 i) h
                                        c2
                                        CHead
                                          e2
                                          Bind b
                                          lift1
                                            <λb1:bool.PList>
                                              CASE blt (trans hds0 i) d OF
                                                truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                              | falseptrans hds0 i
                                            v
                      we proved 
                         ex2
                           C
                           λe2:C
                             .drop1
                               <λb1:bool.PList>
                                 CASE blt (trans hds0 i) d OF
                                   truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                 | falseptrans hds0 i
                               e2
                               e1
                           λe2:C
                             .getl
                               <λb1:bool.nat>
                                 CASE blt (trans hds0 i) d OF
                                   truetrans hds0 i
                                 | falseplus (trans hds0 i) h
                               c2
                               CHead
                                 e2
                                 Bind b
                                 lift1
                                   <λb1:bool.PList>
                                     CASE blt (trans hds0 i) d OF
                                       truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                     | falseptrans hds0 i
                                   v
                      that is equivalent to 
                         ex2
                           C
                           λe2:C.drop1 (ptrans (PCons h d hds0) i) e2 e1
                           λe2:C
                             .getl
                               trans (PCons h d hds0) i
                               c2
                               CHead e2 (Bind b) (lift1 (ptrans (PCons h d hds0) i) v)

                      c1:C
                        .c2:C
                          .H0:drop1 (PCons h d hds0) c2 c1
                            .b:B
                              .e1:C
                                .v:T
                                  .i:nat
                                    .H1:getl i c1 (CHead e1 (Bind b) v)
                                      .ex2
                                        C
                                        λe2:C
                                          .drop1
                                            <λb1:bool.PList>
                                              CASE blt (trans hds0 i) d OF
                                                truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                              | falseptrans hds0 i
                                            e2
                                            e1
                                        λe2:C
                                          .getl
                                            <λb1:bool.nat>
                                              CASE blt (trans hds0 i) d OF
                                                truetrans hds0 i
                                              | falseplus (trans hds0 i) h
                                            c2
                                            CHead
                                              e2
                                              Bind b
                                              lift1
                                                <λb1:bool.PList>
                                                  CASE blt (trans hds0 i) d OF
                                                    truePCons h (minus d (S (trans hds0 i))) (ptrans hds0 i)
                                                  | falseptrans hds0 i
                                                v
          we proved 
             c1:C
               .c2:C
                 .drop1 hds c2 c1
                   b:B
                        .e1:C
                          .v:T
                            .i:nat
                              .getl i c1 (CHead e1 (Bind b) v)
                                (ex2
                                     C
                                     λe2:C.drop1 (ptrans hds i) e2 e1
                                     λe2:C.getl (trans hds i) c2 (CHead e2 (Bind b) (lift1 (ptrans hds i) v)))
       we proved 
          hds:PList
            .c1:C
              .c2:C
                .drop1 hds c2 c1
                  b:B
                       .e1:C
                         .v:T
                           .i:nat
                             .getl i c1 (CHead e1 (Bind b) v)
                               (ex2
                                    C
                                    λe2:C.drop1 (ptrans hds i) e2 e1
                                    λe2:C.getl (trans hds i) c2 (CHead e2 (Bind b) (lift1 (ptrans hds i) v)))