DEFINITION aprem_gen_head_S()
TYPE =
       a1:A.a2:A.x:A.i:nat.(aprem (S i) (AHead a1 a2) x)(aprem i a2 x)
BODY =
        assume a1A
        assume a2A
        assume xA
        assume inat
        suppose Haprem (S i) (AHead a1 a2) x
           assume yA
           suppose H0aprem (S i) y x
              assume y0nat
              suppose H1aprem y0 y x
                we proceed by induction on H1 to prove (eq nat y0 (S i))(eq A y (AHead a1 a2))(aprem i a2 x)
                   case aprem_zero : a0:A a3:A 
                      the thesis becomes H2:(eq nat O (S i)).H3:(eq A (AHead a0 a3) (AHead a1 a2)).(aprem i a2 a0)
                          suppose H2eq nat O (S i)
                          suppose H3eq A (AHead a0 a3) (AHead a1 a2)
                            (H4
                               by (f_equal . . . . . H3)
                               we proved 
                                  eq
                                    A
                                    <λ:A.A> CASE AHead a0 a3 OF ASort  a0 | AHead a a
                                    <λ:A.A> CASE AHead a1 a2 OF ASort  a0 | AHead a a

                                  eq
                                    A
                                    λe:A.<λ:A.A> CASE e OF ASort  a0 | AHead a a (AHead a0 a3)
                                    λe:A.<λ:A.A> CASE e OF ASort  a0 | AHead a a (AHead a1 a2)
                            end of H4
                            (H6
                               consider H4
                               we proved 
                                  eq
                                    A
                                    <λ:A.A> CASE AHead a0 a3 OF ASort  a0 | AHead a a
                                    <λ:A.A> CASE AHead a1 a2 OF ASort  a0 | AHead a a
eq A a0 a1
                            end of H6
                            (H7
                               we proceed by induction on H2 to prove <λ:nat.Prop> CASE S i OF OTrue | S False
                                  case refl_equal : 
                                     the thesis becomes <λ:nat.Prop> CASE O OF OTrue | S False
                                        consider I
                                        we proved True
<λ:nat.Prop> CASE O OF OTrue | S False
<λ:nat.Prop> CASE S i OF OTrue | S False
                            end of H7
                            consider H7
                            we proved <λ:nat.Prop> CASE S i OF OTrue | S False
                            that is equivalent to False
                            we proceed by induction on the previous result to prove aprem i a2 a1
                            we proved aprem i a2 a1
                            by (eq_ind_r . . . previous . H6)
                            we proved aprem i a2 a0
H2:(eq nat O (S i)).H3:(eq A (AHead a0 a3) (AHead a1 a2)).(aprem i a2 a0)
                   case aprem_succ : a0:A a:A i0:nat H2:aprem i0 a0 a a3:A 
                      the thesis becomes H4:(eq nat (S i0) (S i)).H5:(eq A (AHead a3 a0) (AHead a1 a2)).(aprem i a2 a)
                      (H3) by induction hypothesis we know (eq nat i0 (S i))(eq A a0 (AHead a1 a2))(aprem i a2 a)
                          suppose H4eq nat (S i0) (S i)
                          suppose H5eq A (AHead a3 a0) (AHead a1 a2)
                            (H6
                               by (f_equal . . . . . H5)
                               we proved 
                                  eq
                                    A
                                    <λ:A.A> CASE AHead a3 a0 OF ASort  a3 | AHead a4 a4
                                    <λ:A.A> CASE AHead a1 a2 OF ASort  a3 | AHead a4 a4

                                  eq
                                    A
                                    λe:A.<λ:A.A> CASE e OF ASort  a3 | AHead a4 a4 (AHead a3 a0)
                                    λe:A.<λ:A.A> CASE e OF ASort  a3 | AHead a4 a4 (AHead a1 a2)
                            end of H6
                            (h1
                               (H7
                                  by (f_equal . . . . . H5)
                                  we proved 
                                     eq
                                       A
                                       <λ:A.A> CASE AHead a3 a0 OF ASort  a0 | AHead  a4a4
                                       <λ:A.A> CASE AHead a1 a2 OF ASort  a0 | AHead  a4a4

                                     eq
                                       A
                                       λe:A.<λ:A.A> CASE e OF ASort  a0 | AHead  a4a4 (AHead a3 a0)
                                       λe:A.<λ:A.A> CASE e OF ASort  a0 | AHead  a4a4 (AHead a1 a2)
                               end of H7
                               suppose eq A a3 a1
                                  (H9
                                     consider H7
                                     we proved 
                                        eq
                                          A
                                          <λ:A.A> CASE AHead a3 a0 OF ASort  a0 | AHead  a4a4
                                          <λ:A.A> CASE AHead a1 a2 OF ASort  a0 | AHead  a4a4
                                     that is equivalent to eq A a0 a2
                                     we proceed by induction on the previous result to prove (eq nat i0 (S i))(eq A a2 (AHead a1 a2))(aprem i a2 a)
                                        case refl_equal : 
                                           the thesis becomes the hypothesis H3
(eq nat i0 (S i))(eq A a2 (AHead a1 a2))(aprem i a2 a)
                                  end of H9
                                  (H10
                                     consider H7
                                     we proved 
                                        eq
                                          A
                                          <λ:A.A> CASE AHead a3 a0 OF ASort  a0 | AHead  a4a4
                                          <λ:A.A> CASE AHead a1 a2 OF ASort  a0 | AHead  a4a4
                                     that is equivalent to eq A a0 a2
                                     we proceed by induction on the previous result to prove aprem i0 a2 a
                                        case refl_equal : 
                                           the thesis becomes the hypothesis H2
aprem i0 a2 a
                                  end of H10
                                  (H11
                                     by (f_equal . . . . . H4)
                                     we proved 
                                        eq
                                          nat
                                          <λ:nat.nat> CASE S i0 OF Oi0 | S nn
                                          <λ:nat.nat> CASE S i OF Oi0 | S nn

                                        eq
                                          nat
                                          λe:nat.<λ:nat.nat> CASE e OF Oi0 | S nn (S i0)
                                          λe:nat.<λ:nat.nat> CASE e OF Oi0 | S nn (S i)
                                  end of H11
                                  (H13
                                     consider H11
                                     we proved 
                                        eq
                                          nat
                                          <λ:nat.nat> CASE S i0 OF Oi0 | S nn
                                          <λ:nat.nat> CASE S i OF Oi0 | S nn
                                     that is equivalent to eq nat i0 i
                                     we proceed by induction on the previous result to prove aprem i a2 a
                                        case refl_equal : 
                                           the thesis becomes the hypothesis H10
aprem i a2 a
                                  end of H13
                                  consider H13
                                  we proved aprem i a2 a
(eq A a3 a1)(aprem i a2 a)
                            end of h1
                            (h2
                               consider H6
                               we proved 
                                  eq
                                    A
                                    <λ:A.A> CASE AHead a3 a0 OF ASort  a3 | AHead a4 a4
                                    <λ:A.A> CASE AHead a1 a2 OF ASort  a3 | AHead a4 a4
eq A a3 a1
                            end of h2
                            by (h1 h2)
                            we proved aprem i a2 a
H4:(eq nat (S i0) (S i)).H5:(eq A (AHead a3 a0) (AHead a1 a2)).(aprem i a2 a)
                we proved (eq nat y0 (S i))(eq A y (AHead a1 a2))(aprem i a2 x)
             we proved 
                y0:nat
                  .aprem y0 y x
                    (eq nat y0 (S i))(eq A y (AHead a1 a2))(aprem i a2 x)
             by (insert_eq . . . . previous H0)
             we proved (eq A y (AHead a1 a2))(aprem i a2 x)
          we proved y:A.(aprem (S i) y x)(eq A y (AHead a1 a2))(aprem i a2 x)
          by (insert_eq . . . . previous H)
          we proved aprem i a2 x
       we proved a1:A.a2:A.x:A.i:nat.(aprem (S i) (AHead a1 a2) x)(aprem i a2 x)