DEFINITION arity_appls_bind()
TYPE =
       g:G
         .b:B
           .not (eq B b Abst)
             c:C
                  .v:T
                    .a1:A
                      .arity g c v a1
                        t:T
                             .vs:TList
                               .a2:A
                                 .(arity
                                     g
                                     CHead c (Bind b) v
                                     THeads (Flat Appl) (lifts (S OO vs) t
                                     a2)
                                   arity g c (THeads (Flat Appl) vs (THead (Bind b) v t)) a2
BODY =
        assume gG
        assume bB
        suppose Hnot (eq B b Abst)
        assume cC
        assume vT
        assume a1A
        suppose H0arity g c v a1
        assume tT
        assume vsTList
          we proceed by induction on vs to prove 
             a2:A
               .(arity
                   g
                   CHead c (Bind b) v
                   THeads (Flat Appl) (lifts (S OO vs) t
                   a2)
                 arity g c (THeads (Flat Appl) vs (THead (Bind b) v t)) a2
             case TNil : 
                the thesis becomes 
                a2:A
                  .(arity
                      g
                      CHead c (Bind b) v
                      THeads (Flat Appl) (lifts (S OO TNil) t
                      a2)
                    arity g c (THeads (Flat ApplTNil (THead (Bind b) v t)) a2
                   assume a2A
                      we must prove 
                            (arity
                                g
                                CHead c (Bind b) v
                                THeads (Flat Appl) (lifts (S OO TNil) t
                                a2)
                              arity g c (THeads (Flat ApplTNil (THead (Bind b) v t)) a2
                      or equivalently 
                            arity g (CHead c (Bind b) v) t a2
                              arity g c (THeads (Flat ApplTNil (THead (Bind b) v t)) a2
                      suppose H1arity g (CHead c (Bind b) v) t a2
                         by (arity_bind . . H . . . H0 . . H1)
                         we proved arity g c (THead (Bind b) v t) a2
                         that is equivalent to arity g c (THeads (Flat ApplTNil (THead (Bind b) v t)) a2
                      we proved 
                         arity g (CHead c (Bind b) v) t a2
                           arity g c (THeads (Flat ApplTNil (THead (Bind b) v t)) a2
                      that is equivalent to 
                         (arity
                             g
                             CHead c (Bind b) v
                             THeads (Flat Appl) (lifts (S OO TNil) t
                             a2)
                           arity g c (THeads (Flat ApplTNil (THead (Bind b) v t)) a2

                      a2:A
                        .(arity
                            g
                            CHead c (Bind b) v
                            THeads (Flat Appl) (lifts (S OO TNil) t
                            a2)
                          arity g c (THeads (Flat ApplTNil (THead (Bind b) v t)) a2
             case TCons : t0:T t1:TList 
                the thesis becomes 
                a2:A
                  .(arity
                      g
                      CHead c (Bind b) v
                      THeads (Flat Appl) (lifts (S OO (TCons t0 t1)) t
                      a2)
                    (arity
                         g
                         c
                         THeads (Flat Appl) (TCons t0 t1) (THead (Bind b) v t)
                         a2)
                (H1) by induction hypothesis we know 
                   a2:A
                     .(arity
                         g
                         CHead c (Bind b) v
                         THeads (Flat Appl) (lifts (S OO t1) t
                         a2)
                       arity g c (THeads (Flat Appl) t1 (THead (Bind b) v t)) a2
                   assume a2A
                      we must prove 
                            (arity
                                g
                                CHead c (Bind b) v
                                THeads (Flat Appl) (lifts (S OO (TCons t0 t1)) t
                                a2)
                              (arity
                                   g
                                   c
                                   THeads (Flat Appl) (TCons t0 t1) (THead (Bind b) v t)
                                   a2)
                      or equivalently 
                            (arity
                                g
                                CHead c (Bind b) v
                                THead
                                  Flat Appl
                                  lift (S OO t0
                                  THeads (Flat Appl) (lifts (S OO t1) t
                                a2)
                              (arity
                                   g
                                   c
                                   THeads (Flat Appl) (TCons t0 t1) (THead (Bind b) v t)
                                   a2)
                      suppose H2
                         arity
                           g
                           CHead c (Bind b) v
                           THead
                             Flat Appl
                             lift (S OO t0
                             THeads (Flat Appl) (lifts (S OO t1) t
                           a2
                         (H3
                            by (arity_gen_appl . . . . . H2)

                               ex2
                                 A
                                 λa1:A.arity g (CHead c (Bind b) v) (lift (S OO t0) a1
                                 λa1:A
                                   .arity
                                     g
                                     CHead c (Bind b) v
                                     THeads (Flat Appl) (lifts (S OO t1) t
                                     AHead a1 a2
                         end of H3
                         we proceed by induction on H3 to prove 
                            arity
                              g
                              c
                              THead
                                Flat Appl
                                t0
                                THeads (Flat Appl) t1 (THead (Bind b) v t)
                              a2
                            case ex_intro2 : x:A H4:arity g (CHead c (Bind b) v) (lift (S OO t0) x H5:arity g (CHead c (Bind b) v) (THeads (Flat Appl) (lifts (S OO t1) t) (AHead x a2) 
                               the thesis becomes 
                               arity
                                 g
                                 c
                                 THead
                                   Flat Appl
                                   t0
                                   THeads (Flat Appl) t1 (THead (Bind b) v t)
                                 a2
                                  (h1
                                     by (drop_refl .)
                                     we proved drop O O c c
                                     that is equivalent to drop (r (Bind b) OO c c
                                     by (drop_drop . . . . previous .)
                                     we proved drop (S OO (CHead c (Bind b) v) c
                                     by (arity_gen_lift . . . . . . H4 . previous)
arity g c t0 x
                                  end of h1
                                  (h2
                                     by (H1 . H5)

                                        arity
                                          g
                                          c
                                          THeads (Flat Appl) t1 (THead (Bind b) v t)
                                          AHead x a2
                                  end of h2
                                  by (arity_appl . . . . h1 . . h2)

                                     arity
                                       g
                                       c
                                       THead
                                         Flat Appl
                                         t0
                                         THeads (Flat Appl) t1 (THead (Bind b) v t)
                                       a2
                         we proved 
                            arity
                              g
                              c
                              THead
                                Flat Appl
                                t0
                                THeads (Flat Appl) t1 (THead (Bind b) v t)
                              a2
                         that is equivalent to 
                            arity
                              g
                              c
                              THeads (Flat Appl) (TCons t0 t1) (THead (Bind b) v t)
                              a2
                      we proved 
                         (arity
                             g
                             CHead c (Bind b) v
                             THead
                               Flat Appl
                               lift (S OO t0
                               THeads (Flat Appl) (lifts (S OO t1) t
                             a2)
                           (arity
                                g
                                c
                                THeads (Flat Appl) (TCons t0 t1) (THead (Bind b) v t)
                                a2)
                      that is equivalent to 
                         (arity
                             g
                             CHead c (Bind b) v
                             THeads (Flat Appl) (lifts (S OO (TCons t0 t1)) t
                             a2)
                           (arity
                                g
                                c
                                THeads (Flat Appl) (TCons t0 t1) (THead (Bind b) v t)
                                a2)

                      a2:A
                        .(arity
                            g
                            CHead c (Bind b) v
                            THeads (Flat Appl) (lifts (S OO (TCons t0 t1)) t
                            a2)
                          (arity
                               g
                               c
                               THeads (Flat Appl) (TCons t0 t1) (THead (Bind b) v t)
                               a2)
          we proved 
             a2:A
               .(arity
                   g
                   CHead c (Bind b) v
                   THeads (Flat Appl) (lifts (S OO vs) t
                   a2)
                 arity g c (THeads (Flat Appl) vs (THead (Bind b) v t)) a2
       we proved 
          g:G
            .b:B
              .not (eq B b Abst)
                c:C
                     .v:T
                       .a1:A
                         .arity g c v a1
                           t:T
                                .vs:TList
                                  .a2:A
                                    .(arity
                                        g
                                        CHead c (Bind b) v
                                        THeads (Flat Appl) (lifts (S OO vs) t
                                        a2)
                                      arity g c (THeads (Flat Appl) vs (THead (Bind b) v t)) a2