DEFINITION ty3_inv_lref_nf2_pc3()
TYPE =
       g:G
         .c:C
           .u1:T
             .i:nat
               .ty3 g c (TLRef i) u1
                 (nf2 c (TLRef i)
                      u2:T.(nf2 c u2)(pc3 c u1 u2)(ex T λu:T.eq T u2 (lift (S i) O u)))
BODY =
        assume gG
        assume cC
        assume u1T
        assume inat
        suppose Hty3 g c (TLRef i) u1
           assume yT
           suppose H0ty3 g c y u1
             we proceed by induction on H0 to prove 
                eq T y (TLRef i)
                  (nf2 c y
                       u2:T.(nf2 c u2)(pc3 c u1 u2)(ex T λu:T.eq T u2 (lift (S i) O u)))
                case ty3_conv : c0:C t2:T t:T :ty3 g c0 t2 t u:T t1:T H3:ty3 g c0 u t1 H5:pc3 c0 t1 t2 
                   the thesis becomes H6:(eq T u (TLRef i)).H7:(nf2 c0 u).u2:T.H8:(nf2 c0 u2).H9:(pc3 c0 t2 u2).(ex T λu0:T.eq T u2 (lift (S i) O u0))
                   () by induction hypothesis we know 
                      eq T t2 (TLRef i)
                        (nf2 c0 t2)u2:T.(nf2 c0 u2)(pc3 c0 t u2)(ex T λu:T.eq T u2 (lift (S i) O u))
                   (H4) by induction hypothesis we know 
                      eq T u (TLRef i)
                        (nf2 c0 u)u2:T.(nf2 c0 u2)(pc3 c0 t1 u2)(ex T λu0:T.eq T u2 (lift (S i) O u0))
                       suppose H6eq T u (TLRef i)
                       suppose H7nf2 c0 u
                       assume u2T
                       suppose H8nf2 c0 u2
                       suppose H9pc3 c0 t2 u2
                         (H10
                            we proceed by induction on H6 to prove nf2 c0 (TLRef i)
                               case refl_equal : 
                                  the thesis becomes the hypothesis H7
nf2 c0 (TLRef i)
                         end of H10
                         (H11
                            we proceed by induction on H6 to prove 
                               eq T (TLRef i) (TLRef i)
                                 (nf2 c0 (TLRef i)
                                      u3:T.(nf2 c0 u3)(pc3 c0 t1 u3)(ex T λu0:T.eq T u3 (lift (S i) O u0)))
                               case refl_equal : 
                                  the thesis becomes the hypothesis H4

                               eq T (TLRef i) (TLRef i)
                                 (nf2 c0 (TLRef i)
                                      u3:T.(nf2 c0 u3)(pc3 c0 t1 u3)(ex T λu0:T.eq T u3 (lift (S i) O u0)))
                         end of H11
                         (H_y
                            by (refl_equal . .)
                            we proved eq T (TLRef i) (TLRef i)
                            by (H11 previous H10 . H8)
(pc3 c0 t1 u2)(ex T λu0:T.eq T u2 (lift (S i) O u0))
                         end of H_y
                         by (pc3_t . . . H5 . H9)
                         we proved pc3 c0 t1 u2
                         by (H_y previous)
                         we proved ex T λu0:T.eq T u2 (lift (S i) O u0)
H6:(eq T u (TLRef i)).H7:(nf2 c0 u).u2:T.H8:(nf2 c0 u2).H9:(pc3 c0 t2 u2).(ex T λu0:T.eq T u2 (lift (S i) O u0))
                case ty3_sort : c0:C m:nat 
                   the thesis becomes 
                   H1:eq T (TSort m) (TLRef i)
                     .nf2 c0 (TSort m)
                       u2:T
                            .nf2 c0 u2
                              (pc3 c0 (TSort (next g m)) u2)(ex T λu:T.eq T u2 (lift (S i) O u))
                       suppose H1eq T (TSort m) (TLRef i)
                       suppose nf2 c0 (TSort m)
                       assume u2T
                       suppose nf2 c0 u2
                       suppose pc3 c0 (TSort (next g m)) u2
                         (H5
                            we proceed by induction on H1 to prove 
                               <λ:T.Prop>
                                 CASE TLRef i OF
                                   TSort True
                                 | TLRef False
                                 | THead   False
                               case refl_equal : 
                                  the thesis becomes 
                                  <λ:T.Prop>
                                    CASE TSort m OF
                                      TSort True
                                    | TLRef False
                                    | THead   False
                                     consider I
                                     we proved True

                                        <λ:T.Prop>
                                          CASE TSort m OF
                                            TSort True
                                          | TLRef False
                                          | THead   False

                               <λ:T.Prop>
                                 CASE TLRef i OF
                                   TSort True
                                 | TLRef False
                                 | THead   False
                         end of H5
                         consider H5
                         we proved 
                            <λ:T.Prop>
                              CASE TLRef i OF
                                TSort True
                              | TLRef False
                              | THead   False
                         that is equivalent to False
                         we proceed by induction on the previous result to prove ex T λu:T.eq T u2 (lift (S i) O u)
                         we proved ex T λu:T.eq T u2 (lift (S i) O u)

                         H1:eq T (TSort m) (TLRef i)
                           .nf2 c0 (TSort m)
                             u2:T
                                  .nf2 c0 u2
                                    (pc3 c0 (TSort (next g m)) u2)(ex T λu:T.eq T u2 (lift (S i) O u))
                case ty3_abbr : n:nat c0:C d:C u:T H1:getl n c0 (CHead d (Bind Abbr) u) t:T :ty3 g d u t 
                   the thesis becomes 
                   H4:eq T (TLRef n) (TLRef i)
                     .H5:nf2 c0 (TLRef n)
                       .u2:T.(nf2 c0 u2)H7:(pc3 c0 (lift (S n) O t) u2).(ex T λu0:T.eq T u2 (lift (S i) O u0))
                   () by induction hypothesis we know 
                      eq T u (TLRef i)
                        (nf2 d u
                             u2:T.(nf2 d u2)(pc3 d t u2)(ex T λu0:T.eq T u2 (lift (S i) O u0)))
                       suppose H4eq T (TLRef n) (TLRef i)
                       suppose H5nf2 c0 (TLRef n)
                       assume u2T
                       suppose nf2 c0 u2
                       suppose H7pc3 c0 (lift (S n) O t) u2
                         (H8
                            by (f_equal . . . . . H4)
                            we proved 
                               eq
                                 nat
                                 <λ:T.nat> CASE TLRef n OF TSort n | TLRef n0n0 | THead   n
                                 <λ:T.nat> CASE TLRef i OF TSort n | TLRef n0n0 | THead   n

                               eq
                                 nat
                                 λe:T.<λ:T.nat> CASE e OF TSort n | TLRef n0n0 | THead   n (TLRef n)
                                 λe:T.<λ:T.nat> CASE e OF TSort n | TLRef n0n0 | THead   n (TLRef i)
                         end of H8
                         (H10
                            consider H8
                            we proved 
                               eq
                                 nat
                                 <λ:T.nat> CASE TLRef n OF TSort n | TLRef n0n0 | THead   n
                                 <λ:T.nat> CASE TLRef i OF TSort n | TLRef n0n0 | THead   n
                            that is equivalent to eq nat n i
                            we proceed by induction on the previous result to prove nf2 c0 (TLRef i)
                               case refl_equal : 
                                  the thesis becomes the hypothesis H5
nf2 c0 (TLRef i)
                         end of H10
                         (H11
                            consider H8
                            we proved 
                               eq
                                 nat
                                 <λ:T.nat> CASE TLRef n OF TSort n | TLRef n0n0 | THead   n
                                 <λ:T.nat> CASE TLRef i OF TSort n | TLRef n0n0 | THead   n
                            that is equivalent to eq nat n i
                            we proceed by induction on the previous result to prove getl i c0 (CHead d (Bind Abbr) u)
                               case refl_equal : 
                                  the thesis becomes the hypothesis H1
getl i c0 (CHead d (Bind Abbr) u)
                         end of H11
                         by (nf2_gen_lref . . . . H11 H10 .)
                         we proved ex T λu0:T.eq T u2 (lift (S i) O u0)

                         H4:eq T (TLRef n) (TLRef i)
                           .H5:nf2 c0 (TLRef n)
                             .u2:T.(nf2 c0 u2)H7:(pc3 c0 (lift (S n) O t) u2).(ex T λu0:T.eq T u2 (lift (S i) O u0))
                case ty3_abst : n:nat c0:C d:C u:T H1:getl n c0 (CHead d (Bind Abst) u) t:T :ty3 g d u t 
                   the thesis becomes 
                   H4:eq T (TLRef n) (TLRef i)
                     .H5:nf2 c0 (TLRef n)
                       .u2:T.H6:(nf2 c0 u2).H7:(pc3 c0 (lift (S n) O u) u2).(ex T λu0:T.eq T u2 (lift (S i) O u0))
                   () by induction hypothesis we know 
                      eq T u (TLRef i)
                        (nf2 d u
                             u2:T.(nf2 d u2)(pc3 d t u2)(ex T λu0:T.eq T u2 (lift (S i) O u0)))
                       suppose H4eq T (TLRef n) (TLRef i)
                       suppose H5nf2 c0 (TLRef n)
                       assume u2T
                       suppose H6nf2 c0 u2
                       suppose H7pc3 c0 (lift (S n) O u) u2
                         (H8
                            by (f_equal . . . . . H4)
                            we proved 
                               eq
                                 nat
                                 <λ:T.nat> CASE TLRef n OF TSort n | TLRef n0n0 | THead   n
                                 <λ:T.nat> CASE TLRef i OF TSort n | TLRef n0n0 | THead   n

                               eq
                                 nat
                                 λe:T.<λ:T.nat> CASE e OF TSort n | TLRef n0n0 | THead   n (TLRef n)
                                 λe:T.<λ:T.nat> CASE e OF TSort n | TLRef n0n0 | THead   n (TLRef i)
                         end of H8
                         (H9
                            consider H8
                            we proved 
                               eq
                                 nat
                                 <λ:T.nat> CASE TLRef n OF TSort n | TLRef n0n0 | THead   n
                                 <λ:T.nat> CASE TLRef i OF TSort n | TLRef n0n0 | THead   n
                            that is equivalent to eq nat n i
                            we proceed by induction on the previous result to prove pc3 c0 (lift (S i) O u) u2
                               case refl_equal : 
                                  the thesis becomes the hypothesis H7
pc3 c0 (lift (S i) O u) u2
                         end of H9
                         (H11
                            consider H8
                            we proved 
                               eq
                                 nat
                                 <λ:T.nat> CASE TLRef n OF TSort n | TLRef n0n0 | THead   n
                                 <λ:T.nat> CASE TLRef i OF TSort n | TLRef n0n0 | THead   n
                            that is equivalent to eq nat n i
                            we proceed by induction on the previous result to prove getl i c0 (CHead d (Bind Abst) u)
                               case refl_equal : 
                                  the thesis becomes the hypothesis H1
getl i c0 (CHead d (Bind Abst) u)
                         end of H11
                         (H_y
                            by (pc3_nf2_unfold . . . H9 H6)
pr3 c0 (lift (S i) O u) u2
                         end of H_y
                         (H12
                            by (getl_drop . . . . . H11)
                            we proved drop (S i) O c0 d
                            by (pr3_gen_lift . . . . . H_y . previous)
ex2 T λt2:T.eq T u2 (lift (S i) O t2) λt2:T.pr3 d u t2
                         end of H12
                         we proceed by induction on H12 to prove ex T λu0:T.eq T u2 (lift (S i) O u0)
                            case ex_intro2 : x:T H13:eq T u2 (lift (S i) O x) :pr3 d u x 
                               the thesis becomes ex T λu0:T.eq T u2 (lift (S i) O u0)
                                  by (refl_equal . .)
                                  we proved eq T (lift (S i) O x) (lift (S i) O x)
                                  by (ex_intro . . . previous)
                                  we proved ex T λu0:T.eq T (lift (S i) O x) (lift (S i) O u0)
                                  by (eq_ind_r . . . previous . H13)
ex T λu0:T.eq T u2 (lift (S i) O u0)
                         we proved ex T λu0:T.eq T u2 (lift (S i) O u0)

                         H4:eq T (TLRef n) (TLRef i)
                           .H5:nf2 c0 (TLRef n)
                             .u2:T.H6:(nf2 c0 u2).H7:(pc3 c0 (lift (S n) O u) u2).(ex T λu0:T.eq T u2 (lift (S i) O u0))
                case ty3_bind : c0:C u:T t:T :ty3 g c0 u t b:B t1:T t2:T :ty3 g (CHead c0 (Bind b) u) t1 t2 
                   the thesis becomes 
                   H5:eq T (THead (Bind b) u t1) (TLRef i)
                     .nf2 c0 (THead (Bind b) u t1)
                       u2:T
                            .nf2 c0 u2
                              (pc3 c0 (THead (Bind b) u t2) u2)(ex T λu0:T.eq T u2 (lift (S i) O u0))
                   () by induction hypothesis we know 
                      eq T u (TLRef i)
                        (nf2 c0 u)u2:T.(nf2 c0 u2)(pc3 c0 t u2)(ex T λu0:T.eq T u2 (lift (S i) O u0))
                   () by induction hypothesis we know 
                      eq T t1 (TLRef i)
                        (nf2 (CHead c0 (Bind b) u) t1
                             u2:T
                                  .nf2 (CHead c0 (Bind b) u) u2
                                    (pc3 (CHead c0 (Bind b) u) t2 u2)(ex T λu0:T.eq T u2 (lift (S i) O u0)))
                       suppose H5eq T (THead (Bind b) u t1) (TLRef i)
                       suppose nf2 c0 (THead (Bind b) u t1)
                       assume u2T
                       suppose nf2 c0 u2
                       suppose pc3 c0 (THead (Bind b) u t2) u2
                         (H9
                            we proceed by induction on H5 to prove 
                               <λ:T.Prop>
                                 CASE TLRef i OF
                                   TSort False
                                 | TLRef False
                                 | THead   True
                               case refl_equal : 
                                  the thesis becomes 
                                  <λ:T.Prop>
                                    CASE THead (Bind b) u t1 OF
                                      TSort False
                                    | TLRef False
                                    | THead   True
                                     consider I
                                     we proved True

                                        <λ:T.Prop>
                                          CASE THead (Bind b) u t1 OF
                                            TSort False
                                          | TLRef False
                                          | THead   True

                               <λ:T.Prop>
                                 CASE TLRef i OF
                                   TSort False
                                 | TLRef False
                                 | THead   True
                         end of H9
                         consider H9
                         we proved 
                            <λ:T.Prop>
                              CASE TLRef i OF
                                TSort False
                              | TLRef False
                              | THead   True
                         that is equivalent to False
                         we proceed by induction on the previous result to prove ex T λu0:T.eq T u2 (lift (S i) O u0)
                         we proved ex T λu0:T.eq T u2 (lift (S i) O u0)

                         H5:eq T (THead (Bind b) u t1) (TLRef i)
                           .nf2 c0 (THead (Bind b) u t1)
                             u2:T
                                  .nf2 c0 u2
                                    (pc3 c0 (THead (Bind b) u t2) u2)(ex T λu0:T.eq T u2 (lift (S i) O u0))
                case ty3_appl : c0:C w:T u:T :ty3 g c0 w u v:T t:T :ty3 g c0 v (THead (Bind Abst) u t) 
                   the thesis becomes 
                   H5:eq T (THead (Flat Appl) w v) (TLRef i)
                     .nf2 c0 (THead (Flat Appl) w v)
                       u2:T
                            .nf2 c0 u2
                              (pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) u2
                                   ex T λu0:T.eq T u2 (lift (S i) O u0))
                   () by induction hypothesis we know 
                      eq T w (TLRef i)
                        (nf2 c0 w)u2:T.(nf2 c0 u2)(pc3 c0 u u2)(ex T λu0:T.eq T u2 (lift (S i) O u0))
                   () by induction hypothesis we know 
                      eq T v (TLRef i)
                        (nf2 c0 v
                             u2:T
                                  .nf2 c0 u2
                                    (pc3 c0 (THead (Bind Abst) u t) u2)(ex T λu0:T.eq T u2 (lift (S i) O u0)))
                       suppose H5eq T (THead (Flat Appl) w v) (TLRef i)
                       suppose nf2 c0 (THead (Flat Appl) w v)
                       assume u2T
                       suppose nf2 c0 u2
                       suppose pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) u2
                         (H9
                            we proceed by induction on H5 to prove 
                               <λ:T.Prop>
                                 CASE TLRef i OF
                                   TSort False
                                 | TLRef False
                                 | THead   True
                               case refl_equal : 
                                  the thesis becomes 
                                  <λ:T.Prop>
                                    CASE THead (Flat Appl) w v OF
                                      TSort False
                                    | TLRef False
                                    | THead   True
                                     consider I
                                     we proved True

                                        <λ:T.Prop>
                                          CASE THead (Flat Appl) w v OF
                                            TSort False
                                          | TLRef False
                                          | THead   True

                               <λ:T.Prop>
                                 CASE TLRef i OF
                                   TSort False
                                 | TLRef False
                                 | THead   True
                         end of H9
                         consider H9
                         we proved 
                            <λ:T.Prop>
                              CASE TLRef i OF
                                TSort False
                              | TLRef False
                              | THead   True
                         that is equivalent to False
                         we proceed by induction on the previous result to prove ex T λu0:T.eq T u2 (lift (S i) O u0)
                         we proved ex T λu0:T.eq T u2 (lift (S i) O u0)

                         H5:eq T (THead (Flat Appl) w v) (TLRef i)
                           .nf2 c0 (THead (Flat Appl) w v)
                             u2:T
                                  .nf2 c0 u2
                                    (pc3 c0 (THead (Flat Appl) w (THead (Bind Abst) u t)) u2
                                         ex T λu0:T.eq T u2 (lift (S i) O u0))
                case ty3_cast : c0:C t1:T t2:T :ty3 g c0 t1 t2 t0:T :ty3 g c0 t2 t0 
                   the thesis becomes 
                   H5:eq T (THead (Flat Cast) t2 t1) (TLRef i)
                     .nf2 c0 (THead (Flat Cast) t2 t1)
                       u2:T
                            .nf2 c0 u2
                              (pc3 c0 (THead (Flat Cast) t0 t2) u2)(ex T λu:T.eq T u2 (lift (S i) O u))
                   () by induction hypothesis we know 
                      eq T t1 (TLRef i)
                        (nf2 c0 t1)u2:T.(nf2 c0 u2)(pc3 c0 t2 u2)(ex T λu:T.eq T u2 (lift (S i) O u))
                   () by induction hypothesis we know 
                      eq T t2 (TLRef i)
                        (nf2 c0 t2)u2:T.(nf2 c0 u2)(pc3 c0 t0 u2)(ex T λu:T.eq T u2 (lift (S i) O u))
                       suppose H5eq T (THead (Flat Cast) t2 t1) (TLRef i)
                       suppose nf2 c0 (THead (Flat Cast) t2 t1)
                       assume u2T
                       suppose nf2 c0 u2
                       suppose pc3 c0 (THead (Flat Cast) t0 t2) u2
                         (H9
                            we proceed by induction on H5 to prove 
                               <λ:T.Prop>
                                 CASE TLRef i OF
                                   TSort False
                                 | TLRef False
                                 | THead   True
                               case refl_equal : 
                                  the thesis becomes 
                                  <λ:T.Prop>
                                    CASE THead (Flat Cast) t2 t1 OF
                                      TSort False
                                    | TLRef False
                                    | THead   True
                                     consider I
                                     we proved True

                                        <λ:T.Prop>
                                          CASE THead (Flat Cast) t2 t1 OF
                                            TSort False
                                          | TLRef False
                                          | THead   True

                               <λ:T.Prop>
                                 CASE TLRef i OF
                                   TSort False
                                 | TLRef False
                                 | THead   True
                         end of H9
                         consider H9
                         we proved 
                            <λ:T.Prop>
                              CASE TLRef i OF
                                TSort False
                              | TLRef False
                              | THead   True
                         that is equivalent to False
                         we proceed by induction on the previous result to prove ex T λu:T.eq T u2 (lift (S i) O u)
                         we proved ex T λu:T.eq T u2 (lift (S i) O u)

                         H5:eq T (THead (Flat Cast) t2 t1) (TLRef i)
                           .nf2 c0 (THead (Flat Cast) t2 t1)
                             u2:T
                                  .nf2 c0 u2
                                    (pc3 c0 (THead (Flat Cast) t0 t2) u2)(ex T λu:T.eq T u2 (lift (S i) O u))
             we proved 
                eq T y (TLRef i)
                  (nf2 c y
                       u2:T.(nf2 c u2)(pc3 c u1 u2)(ex T λu:T.eq T u2 (lift (S i) O u)))
          we proved 
             y:T
               .ty3 g c y u1
                 (eq T y (TLRef i)
                      (nf2 c y
                           u2:T.(nf2 c u2)(pc3 c u1 u2)(ex T λu:T.eq T u2 (lift (S i) O u))))
          by (insert_eq . . . . previous H)
          we proved 
             nf2 c (TLRef i)
               u2:T.(nf2 c u2)(pc3 c u1 u2)(ex T λu:T.eq T u2 (lift (S i) O u))
       we proved 
          g:G
            .c:C
              .u1:T
                .i:nat
                  .ty3 g c (TLRef i) u1
                    (nf2 c (TLRef i)
                         u2:T.(nf2 c u2)(pc3 c u1 u2)(ex T λu:T.eq T u2 (lift (S i) O u)))