DEFINITION csubt_gen_flat()
TYPE =
       ∀g:G
         .∀e1:C
           .∀c2:C
             .∀v:T
               .∀f:F
                 .csubt g (CHead e1 (Flat f) v) c2
                   →ex2 C λe2:C.eq C c2 (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
BODY =
        assume g: G
        assume e1: C
        assume c2: C
        assume v: T
        assume f: F
        suppose H: csubt g (CHead e1 (Flat f) v) c2
           assume y: C
           suppose H0: csubt g y c2
             we proceed by induction on H0 to prove 
                eq C y (CHead e1 (Flat f) v)
                  →ex2 C λe2:C.eq C c2 (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                case csubt_sort : n:nat ⇒
                   the thesis becomes 
                   ∀H1:eq C (CSort n) (CHead e1 (Flat f) v)
                     .ex2 C λe2:C.eq C (CSort n) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                      suppose H1: eq C (CSort n) (CHead e1 (Flat f) v)
                         (H2) 
                            we proceed by induction on H1 to prove <λ:C.Prop> CASE CHead e1 (Flat f) v OF CSort ⇒True | CHead   ⇒False
                               case refl_equal : ⇒
                                  the thesis becomes <λ:C.Prop> CASE CSort n OF CSort ⇒True | CHead   ⇒False
                                     consider I
                                     we proved True
<λ:C.Prop> CASE CSort n OF CSort ⇒True | CHead   ⇒False
<λ:C.Prop> CASE CHead e1 (Flat f) v OF CSort ⇒True | CHead   ⇒False
                         end of H2
                         consider H2
                         we proved <λ:C.Prop> CASE CHead e1 (Flat f) v OF CSort ⇒True | CHead   ⇒False
                         that is equivalent to False
                         we proceed by induction on the previous result to prove ex2 C λe2:C.eq C (CSort n) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                         we proved ex2 C λe2:C.eq C (CSort n) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2

                         ∀H1:eq C (CSort n) (CHead e1 (Flat f) v)
                           .ex2 C λe2:C.eq C (CSort n) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                case csubt_head : c1:C c3:C H1:csubt g c1 c3 k:K u:T ⇒
                   the thesis becomes 
                   ∀H3:eq C (CHead c1 k u) (CHead e1 (Flat f) v)
                     .ex2 C λe2:C.eq C (CHead c3 k u) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                   (H2) by induction hypothesis we know 
                      eq C c1 (CHead e1 (Flat f) v)
                        →ex2 C λe2:C.eq C c3 (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                      suppose H3: eq C (CHead c1 k u) (CHead e1 (Flat f) v)
                         (H4) 
                            by (f_equal . . . . . H3)
                            we proved 
                               eq
                                 C
                                 <λ:C.C> CASE CHead c1 k u OF CSort ⇒c1 | CHead c  ⇒c
                                 <λ:C.C> CASE CHead e1 (Flat f) v OF CSort ⇒c1 | CHead c  ⇒c

                               eq
                                 C
                                 λe:C.<λ:C.C> CASE e OF CSort ⇒c1 | CHead c  ⇒c (CHead c1 k u)
                                 λe:C.<λ:C.C> CASE e OF CSort ⇒c1 | CHead c  ⇒c (CHead e1 (Flat f) v)
                         end of H4
                         (h1) 
                            (H5) 
                               by (f_equal . . . . . H3)
                               we proved 
                                  eq
                                    K
                                    <λ:C.K> CASE CHead c1 k u OF CSort ⇒k | CHead  k0 ⇒k0
                                    <λ:C.K> CASE CHead e1 (Flat f) v OF CSort ⇒k | CHead  k0 ⇒k0

                                  eq
                                    K
                                    λe:C.<λ:C.K> CASE e OF CSort ⇒k | CHead  k0 ⇒k0 (CHead c1 k u)
                                    λe:C.<λ:C.K> CASE e OF CSort ⇒k | CHead  k0 ⇒k0 (CHead e1 (Flat f) v)
                            end of H5
                            (h1) 
                               (H6) 
                                  by (f_equal . . . . . H3)
                                  we proved 
                                     eq
                                       T
                                       <λ:C.T> CASE CHead c1 k u OF CSort ⇒u | CHead   t⇒t
                                       <λ:C.T> CASE CHead e1 (Flat f) v OF CSort ⇒u | CHead   t⇒t

                                     eq
                                       T
                                       λe:C.<λ:C.T> CASE e OF CSort ⇒u | CHead   t⇒t (CHead c1 k u)
                                       λe:C.<λ:C.T> CASE e OF CSort ⇒u | CHead   t⇒t (CHead e1 (Flat f) v)
                               end of H6
                                suppose H7: eq K k (Flat f)
                                suppose H8: eq C c1 e1
                                  (h1) 
                                     (H10) 
                                        we proceed by induction on H8 to prove csubt g e1 c3
                                           case refl_equal : ⇒
                                              the thesis becomes the hypothesis H1
csubt g e1 c3
                                     end of H10
                                     by (refl_equal . .)
                                     we proved eq C (CHead c3 (Flat f) v) (CHead c3 (Flat f) v)
                                     by (ex_intro2 . . . . previous H10)
                                     we proved 
                                        ex2 C λe2:C.eq C (CHead c3 (Flat f) v) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                                     by (eq_ind_r . . . previous . H7)
ex2 C λe2:C.eq C (CHead c3 k v) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                                  end of h1
                                  (h2) 
                                     consider H6
                                     we proved 
                                        eq
                                          T
                                          <λ:C.T> CASE CHead c1 k u OF CSort ⇒u | CHead   t⇒t
                                          <λ:C.T> CASE CHead e1 (Flat f) v OF CSort ⇒u | CHead   t⇒t
eq T u v
                                  end of h2
                                  by (eq_ind_r . . . h1 . h2)
                                  we proved ex2 C λe2:C.eq C (CHead c3 k u) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2

                                  eq K k (Flat f)
                                    →(eq C c1 e1
                                         →ex2 C λe2:C.eq C (CHead c3 k u) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2)
                            end of h1
                            (h2) 
                               consider H5
                               we proved 
                                  eq
                                    K
                                    <λ:C.K> CASE CHead c1 k u OF CSort ⇒k | CHead  k0 ⇒k0
                                    <λ:C.K> CASE CHead e1 (Flat f) v OF CSort ⇒k | CHead  k0 ⇒k0
eq K k (Flat f)
                            end of h2
                            by (h1 h2)

                               eq C c1 e1
                                 →ex2 C λe2:C.eq C (CHead c3 k u) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                         end of h1
                         (h2) 
                            consider H4
                            we proved 
                               eq
                                 C
                                 <λ:C.C> CASE CHead c1 k u OF CSort ⇒c1 | CHead c  ⇒c
                                 <λ:C.C> CASE CHead e1 (Flat f) v OF CSort ⇒c1 | CHead c  ⇒c
eq C c1 e1
                         end of h2
                         by (h1 h2)
                         we proved ex2 C λe2:C.eq C (CHead c3 k u) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2

                         ∀H3:eq C (CHead c1 k u) (CHead e1 (Flat f) v)
                           .ex2 C λe2:C.eq C (CHead c3 k u) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                case csubt_void : c1:C c3:C :csubt g c1 c3 b:B :not (eq B b Void) u1:T u2:T ⇒
                   the thesis becomes 
                   ∀H4:eq C (CHead c1 (Bind Void) u1) (CHead e1 (Flat f) v)
                     .ex2 C λe2:C.eq C (CHead c3 (Bind b) u2) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                   () by induction hypothesis we know 
                      eq C c1 (CHead e1 (Flat f) v)
                        →ex2 C λe2:C.eq C c3 (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                      suppose H4: eq C (CHead c1 (Bind Void) u1) (CHead e1 (Flat f) v)
                         (H5) 
                            we proceed by induction on H4 to prove 
                               <λ:C.Prop>
                                 CASE CHead e1 (Flat f) v OF
                                   CSort ⇒False
                                 | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False
                               case refl_equal : ⇒
                                  the thesis becomes 
                                  <λ:C.Prop>
                                    CASE CHead c1 (Bind Void) u1 OF
                                      CSort ⇒False
                                    | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False
                                     consider I
                                     we proved True

                                        <λ:C.Prop>
                                          CASE CHead c1 (Bind Void) u1 OF
                                            CSort ⇒False
                                          | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False

                               <λ:C.Prop>
                                 CASE CHead e1 (Flat f) v OF
                                   CSort ⇒False
                                 | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False
                         end of H5
                         consider H5
                         we proved 
                            <λ:C.Prop>
                              CASE CHead e1 (Flat f) v OF
                                CSort ⇒False
                              | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False
                         that is equivalent to False
                         we proceed by induction on the previous result to prove ex2 C λe2:C.eq C (CHead c3 (Bind b) u2) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                         we proved ex2 C λe2:C.eq C (CHead c3 (Bind b) u2) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2

                         ∀H4:eq C (CHead c1 (Bind Void) u1) (CHead e1 (Flat f) v)
                           .ex2 C λe2:C.eq C (CHead c3 (Bind b) u2) (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                case csubt_abst : c1:C c3:C :csubt g c1 c3 u:T t:T :ty3 g c1 u t :ty3 g c3 u t ⇒
                   the thesis becomes 
                   ∀H5:eq C (CHead c1 (Bind Abst) t) (CHead e1 (Flat f) v)
                     .ex2
                       C
                       λe2:C.eq C (CHead c3 (Bind Abbr) u) (CHead e2 (Flat f) v)
                       λe2:C.csubt g e1 e2
                   () by induction hypothesis we know 
                      eq C c1 (CHead e1 (Flat f) v)
                        →ex2 C λe2:C.eq C c3 (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
                      suppose H5: eq C (CHead c1 (Bind Abst) t) (CHead e1 (Flat f) v)
                         (H6) 
                            we proceed by induction on H5 to prove 
                               <λ:C.Prop>
                                 CASE CHead e1 (Flat f) v OF
                                   CSort ⇒False
                                 | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False
                               case refl_equal : ⇒
                                  the thesis becomes 
                                  <λ:C.Prop>
                                    CASE CHead c1 (Bind Abst) t OF
                                      CSort ⇒False
                                    | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False
                                     consider I
                                     we proved True

                                        <λ:C.Prop>
                                          CASE CHead c1 (Bind Abst) t OF
                                            CSort ⇒False
                                          | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False

                               <λ:C.Prop>
                                 CASE CHead e1 (Flat f) v OF
                                   CSort ⇒False
                                 | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False
                         end of H6
                         consider H6
                         we proved 
                            <λ:C.Prop>
                              CASE CHead e1 (Flat f) v OF
                                CSort ⇒False
                              | CHead  k ⇒<λ:K.Prop> CASE k OF Bind ⇒True | Flat ⇒False
                         that is equivalent to False
                         we proceed by induction on the previous result to prove 
                            ex2
                              C
                              λe2:C.eq C (CHead c3 (Bind Abbr) u) (CHead e2 (Flat f) v)
                              λe2:C.csubt g e1 e2
                         we proved 
                            ex2
                              C
                              λe2:C.eq C (CHead c3 (Bind Abbr) u) (CHead e2 (Flat f) v)
                              λe2:C.csubt g e1 e2

                         ∀H5:eq C (CHead c1 (Bind Abst) t) (CHead e1 (Flat f) v)
                           .ex2
                             C
                             λe2:C.eq C (CHead c3 (Bind Abbr) u) (CHead e2 (Flat f) v)
                             λe2:C.csubt g e1 e2
             we proved 
                eq C y (CHead e1 (Flat f) v)
                  →ex2 C λe2:C.eq C c2 (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
          we proved 
             ∀y:C
               .csubt g y c2
                 →(eq C y (CHead e1 (Flat f) v)
                      →ex2 C λe2:C.eq C c2 (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2)
          by (insert_eq . . . . previous H)
          we proved ex2 C λe2:C.eq C c2 (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2
       we proved 
          ∀g:G
            .∀e1:C
              .∀c2:C
                .∀v:T
                  .∀f:F
                    .csubt g (CHead e1 (Flat f) v) c2
                      →ex2 C λe2:C.eq C c2 (CHead e2 (Flat f) v) λe2:C.csubt g e1 e2