DEFINITION aprem_ind()
TYPE =
       P:natAAProp
         .a:A.a1:A.(P O (AHead a a1) a)
           (a:A.a1:A.n:nat.(aprem n a a1)(P n a a1)a2:A.(P (S n) (AHead a2 a) a1)
                n:nat.a:A.a1:A.(aprem n a a1)(P n a a1))
BODY =
        assume PnatAAProp
        suppose Ha:A.a1:A.(P O (AHead a a1) a)
        suppose H1a:A.a1:A.n:nat.(aprem n a a1)(P n a a1)a2:A.(P (S n) (AHead a2 a) a1)
          (aux) by well-founded reasoning we prove n:nat.a:A.a1:A.(aprem n a a1)(P n a a1)
           assume nnat
           assume aA
           assume a1A
           suppose H2aprem n a a1
             by cases on H2 we prove P n a a1
                case aprem_zero a2:A a3:A 
                   the thesis becomes O (AHead a2 a3) a2
                   by (H . .)
O (AHead a2 a3) a2
                case aprem_succ a2:A a3:A n1:nat H3:aprem n1 a2 a3 a4:A 
                   the thesis becomes P (S n1) (AHead a4 a2) a3
                   by (aux . . . H3)
                   we proved P n1 a2 a3
                   by (H1 . . . H3 previous .)
P (S n1) (AHead a4 a2) a3
             we proved P n a a1
n:nat.a:A.a1:A.(aprem n a a1)(P n a a1)
          done
          consider aux
          we proved n:nat.a:A.a1:A.(aprem n a a1)(P n a a1)
       we proved 
          P:natAAProp
            .a:A.a1:A.(P O (AHead a a1) a)
              (a:A.a1:A.n:nat.(aprem n a a1)(P n a a1)a2:A.(P (S n) (AHead a2 a) a1)
                   n:nat.a:A.a1:A.(aprem n a a1)(P n a a1))