DEFINITION arity_ind()
TYPE =
       g:G
         .P:CTAProp
           .c:C.n:nat.(P c (TSort n) (ASort O n))
             (c:C
                    .c1:C
                      .t:T
                        .n:nat
                          .getl n c (CHead c1 (Bind Abbr) t)
                            a:A.(arity g c1 t a)(P c1 t a)(P c (TLRef n) a)
                  (c:C
                         .c1:C
                           .t:T
                             .n:nat
                               .getl n c (CHead c1 (Bind Abst) t)
                                 a:A
                                      .arity g c1 t (asucc g a)
                                        (P c1 t (asucc g a))(P c (TLRef n) a)
                       (b:B
                              .not (eq B b Abst)
                                c:C
                                     .t:T
                                       .a:A
                                         .arity g c t a
                                           (P c t a
                                                t1:T
                                                     .a1:A
                                                       .arity g (CHead c (Bind b) t) t1 a1
                                                         (P (CHead c (Bind b) t) t1 a1)(P c (THead (Bind b) t t1) a1))
                            (c:C
                                   .t:T
                                     .a:A
                                       .arity g c t (asucc g a)
                                         (P c t (asucc g a)
                                              t1:T
                                                   .a1:A
                                                     .arity g (CHead c (Bind Abst) t) t1 a1
                                                       (P (CHead c (Bind Abst) t) t1 a1
                                                            P c (THead (Bind Abst) t t1) (AHead a a1)))
                                 (c:C
                                        .t:T
                                          .a:A
                                            .arity g c t a
                                              (P c t a
                                                   t1:T
                                                        .a1:A
                                                          .arity g c t1 (AHead a a1)
                                                            (P c t1 (AHead a a1))(P c (THead (Flat Appl) t t1) a1))
                                      (c:C
                                             .t:T
                                               .a:A
                                                 .arity g c t (asucc g a)
                                                   (P c t (asucc g a)
                                                        t1:T.(arity g c t1 a)(P c t1 a)(P c (THead (Flat Cast) t t1) a))
                                           (c:C.t:T.a:A.(arity g c t a)(P c t a)a1:A.(leq g a a1)(P c t a1)
                                                c:C.t:T.a:A.(arity g c t a)(P c t a))))))))
BODY =
        assume gG
        assume PCTAProp
        suppose Hc:C.n:nat.(P c (TSort n) (ASort O n))
        suppose H1
           c:C
             .c1:C
               .t:T
                 .n:nat
                   .getl n c (CHead c1 (Bind Abbr) t)
                     a:A.(arity g c1 t a)(P c1 t a)(P c (TLRef n) a)
        suppose H2
           c:C
             .c1:C
               .t:T
                 .n:nat
                   .getl n c (CHead c1 (Bind Abst) t)
                     a:A
                          .arity g c1 t (asucc g a)
                            (P c1 t (asucc g a))(P c (TLRef n) a)
        suppose H3
           b:B
             .not (eq B b Abst)
               c:C
                    .t:T
                      .a:A
                        .arity g c t a
                          (P c t a
                               t1:T
                                    .a1:A
                                      .arity g (CHead c (Bind b) t) t1 a1
                                        (P (CHead c (Bind b) t) t1 a1)(P c (THead (Bind b) t t1) a1))
        suppose H4
           c:C
             .t:T
               .a:A
                 .arity g c t (asucc g a)
                   (P c t (asucc g a)
                        t1:T
                             .a1:A
                               .arity g (CHead c (Bind Abst) t) t1 a1
                                 (P (CHead c (Bind Abst) t) t1 a1
                                      P c (THead (Bind Abst) t t1) (AHead a a1)))
        suppose H5
           c:C
             .t:T
               .a:A
                 .arity g c t a
                   (P c t a
                        t1:T
                             .a1:A
                               .arity g c t1 (AHead a a1)
                                 (P c t1 (AHead a a1))(P c (THead (Flat Appl) t t1) a1))
        suppose H6
           c:C
             .t:T
               .a:A
                 .arity g c t (asucc g a)
                   (P c t (asucc g a)
                        t1:T.(arity g c t1 a)(P c t1 a)(P c (THead (Flat Cast) t t1) a))
        suppose H7
           c:C.t:T.a:A.(arity g c t a)(P c t a)a1:A.(leq g a a1)(P c t a1)
          (aux) by well-founded reasoning we prove c:C.t:T.a:A.(arity g c t a)(P c t a)
           assume cC
           assume tT
           assume aA
           suppose H8arity g c t a
             by cases on H8 we prove P c t a
                case arity_sort c1:C n:nat 
                   the thesis becomes P c1 (TSort n) (ASort O n)
                   by (H . .)
P c1 (TSort n) (ASort O n)
                case arity_abbr c1:C c2:C t1:T n:nat H9:getl n c1 (CHead c2 (Bind Abbr) t1) a1:A H10:arity g c2 t1 a1 
                   the thesis becomes P c1 (TLRef n) a1
                   by (aux . . . H10)
                   we proved P c2 t1 a1
                   by (H1 . . . . H9 . H10 previous)
P c1 (TLRef n) a1
                case arity_abst c1:C c2:C t1:T n:nat H9:getl n c1 (CHead c2 (Bind Abst) t1) a1:A H10:arity g c2 t1 (asucc g a1) 
                   the thesis becomes P c1 (TLRef n) a1
                   by (aux . . . H10)
                   we proved P c2 t1 (asucc g a1)
                   by (H2 . . . . H9 . H10 previous)
P c1 (TLRef n) a1
                case arity_bind b:B H9:not (eq B b Abst) c1:C t1:T a1:A H10:arity g c1 t1 a1 t2:T a2:A H11:arity g (CHead c1 (Bind b) t1) t2 a2 
                   the thesis becomes P c1 (THead (Bind b) t1 t2) a2
                   (h1by (aux . . . H10) we proved P c1 t1 a1
                   (h2
                      by (aux . . . H11)
P (CHead c1 (Bind b) t1) t2 a2
                   end of h2
                   by (H3 . H9 . . . H10 h1 . . H11 h2)
P c1 (THead (Bind b) t1 t2) a2
                case arity_head c1:C t1:T a1:A H9:arity g c1 t1 (asucc g a1) t2:T a2:A H10:arity g (CHead c1 (Bind Abst) t1) t2 a2 
                   the thesis becomes P c1 (THead (Bind Abst) t1 t2) (AHead a1 a2)
                   (h1
                      by (aux . . . H9)
P c1 t1 (asucc g a1)
                   end of h1
                   (h2
                      by (aux . . . H10)
P (CHead c1 (Bind Abst) t1) t2 a2
                   end of h2
                   by (H4 . . . H9 h1 . . H10 h2)
P c1 (THead (Bind Abst) t1 t2) (AHead a1 a2)
                case arity_appl c1:C t1:T a1:A H9:arity g c1 t1 a1 t2:T a2:A H10:arity g c1 t2 (AHead a1 a2) 
                   the thesis becomes P c1 (THead (Flat Appl) t1 t2) a2
                   (h1by (aux . . . H9) we proved P c1 t1 a1
                   (h2
                      by (aux . . . H10)
P c1 t2 (AHead a1 a2)
                   end of h2
                   by (H5 . . . H9 h1 . . H10 h2)
P c1 (THead (Flat Appl) t1 t2) a2
                case arity_cast c1:C t1:T a1:A H9:arity g c1 t1 (asucc g a1) t2:T H10:arity g c1 t2 a1 
                   the thesis becomes P c1 (THead (Flat Cast) t1 t2) a1
                   (h1
                      by (aux . . . H9)
P c1 t1 (asucc g a1)
                   end of h1
                   (h2by (aux . . . H10) we proved P c1 t2 a1
                   by (H6 . . . H9 h1 . H10 h2)
P c1 (THead (Flat Cast) t1 t2) a1
                case arity_repl c1:C t1:T a1:A H9:arity g c1 t1 a1 a2:A H10:leq g a1 a2 
                   the thesis becomes P c1 t1 a2
                   by (aux . . . H9)
                   we proved P c1 t1 a1
                   by (H7 . . . H9 previous . H10)
P c1 t1 a2
             we proved P c t a
c:C.t:T.a:A.(arity g c t a)(P c t a)
          done
          consider aux
          we proved c:C.t:T.a:A.(arity g c t a)(P c t a)
       we proved 
          g:G
            .P:CTAProp
              .c:C.n:nat.(P c (TSort n) (ASort O n))
                (c:C
                       .c1:C
                         .t:T
                           .n:nat
                             .getl n c (CHead c1 (Bind Abbr) t)
                               a:A.(arity g c1 t a)(P c1 t a)(P c (TLRef n) a)
                     (c:C
                            .c1:C
                              .t:T
                                .n:nat
                                  .getl n c (CHead c1 (Bind Abst) t)
                                    a:A
                                         .arity g c1 t (asucc g a)
                                           (P c1 t (asucc g a))(P c (TLRef n) a)
                          (b:B
                                 .not (eq B b Abst)
                                   c:C
                                        .t:T
                                          .a:A
                                            .arity g c t a
                                              (P c t a
                                                   t1:T
                                                        .a1:A
                                                          .arity g (CHead c (Bind b) t) t1 a1
                                                            (P (CHead c (Bind b) t) t1 a1)(P c (THead (Bind b) t t1) a1))
                               (c:C
                                      .t:T
                                        .a:A
                                          .arity g c t (asucc g a)
                                            (P c t (asucc g a)
                                                 t1:T
                                                      .a1:A
                                                        .arity g (CHead c (Bind Abst) t) t1 a1
                                                          (P (CHead c (Bind Abst) t) t1 a1
                                                               P c (THead (Bind Abst) t t1) (AHead a a1)))
                                    (c:C
                                           .t:T
                                             .a:A
                                               .arity g c t a
                                                 (P c t a
                                                      t1:T
                                                           .a1:A
                                                             .arity g c t1 (AHead a a1)
                                                               (P c t1 (AHead a a1))(P c (THead (Flat Appl) t t1) a1))
                                         (c:C
                                                .t:T
                                                  .a:A
                                                    .arity g c t (asucc g a)
                                                      (P c t (asucc g a)
                                                           t1:T.(arity g c t1 a)(P c t1 a)(P c (THead (Flat Cast) t t1) a))
                                              (c:C.t:T.a:A.(arity g c t a)(P c t a)a1:A.(leq g a a1)(P c t a1)
                                                   c:C.t:T.a:A.(arity g c t a)(P c t a))))))))