DEFINITION nf2_gen_abbr()
TYPE =
       c:C.u:T.t:T.(nf2 c (THead (Bind Abbr) u t))P:Prop.P
BODY =
        assume cC
        assume uT
        assume tT
          we must prove (nf2 c (THead (Bind Abbr) u t))P:Prop.P
          or equivalently 
                t2:T
                    .pr2 c (THead (Bind Abbr) u t) t2
                      eq T (THead (Bind Abbr) u t) t2
                  P:Prop.P
           suppose H
              t2:T
                .pr2 c (THead (Bind Abbr) u t) t2
                  eq T (THead (Bind Abbr) u t) t2
           assume PProp
             (H_x
                by (dnf_dec . . .)
ex T λv:T.or (subst0 O u t (lift (S OO v)) (eq T t (lift (S OO v))
             end of H_x
             (H0consider H_x
             we proceed by induction on H0 to prove P
                case ex_intro : x:T H1:or (subst0 O u t (lift (S OO x)) (eq T t (lift (S OO x)) 
                   the thesis becomes P
                      we proceed by induction on H1 to prove P
                         case or_introl : H2:subst0 O u t (lift (S OO x) 
                            the thesis becomes P
                               (H3
                                  (h1by (pr0_refl .) we proved pr0 u u
                                  (h2by (pr0_refl .) we proved pr0 t t
                                  by (pr0_delta . . h1 . . h2 . H2)
                                  we proved 
                                     pr0
                                       THead (Bind Abbr) u t
                                       THead (Bind Abbr) u (lift (S OO x)
                                  by (pr2_free . . . previous)
                                  we proved 
                                     pr2
                                       c
                                       THead (Bind Abbr) u t
                                       THead (Bind Abbr) u (lift (S OO x)
                                  by (H . previous)
                                  we proved 
                                     eq
                                       T
                                       THead (Bind Abbr) u t
                                       THead (Bind Abbr) u (lift (S OO x)
                                  by (f_equal . . . . . previous)
                                  we proved 
                                     eq
                                       T
                                       <λ:T.T>
                                         CASE THead (Bind Abbr) u t OF
                                           TSort t
                                         | TLRef t
                                         | THead   t0t0
                                       <λ:T.T>
                                         CASE THead (Bind Abbr) u (lift (S OO x) OF
                                           TSort t
                                         | TLRef t
                                         | THead   t0t0

                                     eq
                                       T
                                       λe:T.<λ:T.T> CASE e OF TSort t | TLRef t | THead   t0t0
                                         THead (Bind Abbr) u t
                                       λe:T.<λ:T.T> CASE e OF TSort t | TLRef t | THead   t0t0
                                         THead (Bind Abbr) u (lift (S OO x)
                               end of H3
                               (H4
                                  consider H3
                                  we proved 
                                     eq
                                       T
                                       <λ:T.T>
                                         CASE THead (Bind Abbr) u t OF
                                           TSort t
                                         | TLRef t
                                         | THead   t0t0
                                       <λ:T.T>
                                         CASE THead (Bind Abbr) u (lift (S OO x) OF
                                           TSort t
                                         | TLRef t
                                         | THead   t0t0
                                  that is equivalent to eq T t (lift (S OO x)
                                  we proceed by induction on the previous result to prove subst0 O u (lift (S OO x) (lift (S OO x)
                                     case refl_equal : 
                                        the thesis becomes the hypothesis H2
subst0 O u (lift (S OO x) (lift (S OO x)
                               end of H4
                               by (subst0_refl . . . H4 .)
P
                         case or_intror : H2:eq T t (lift (S OO x) 
                            the thesis becomes P
                               (H3
                                  we proceed by induction on H2 to prove 
                                     t2:T
                                       .pr2 c (THead (Bind Abbr) u (lift (S OO x)) t2
                                         eq T (THead (Bind Abbr) u (lift (S OO x)) t2
                                     case refl_equal : 
                                        the thesis becomes the hypothesis H

                                     t2:T
                                       .pr2 c (THead (Bind Abbr) u (lift (S OO x)) t2
                                         eq T (THead (Bind Abbr) u (lift (S OO x)) t2
                               end of H3
                               by (pr0_refl .)
                               we proved pr0 x x
                               by (pr0_zeta . not_abbr_abst . . previous .)
                               we proved pr0 (THead (Bind Abbr) u (lift (S OO x)) x
                               by (pr2_free . . . previous)
                               we proved pr2 c (THead (Bind Abbr) u (lift (S OO x)) x
                               by (H3 . previous)
                               we proved eq T (THead (Bind Abbr) u (lift (S OO x)) x
                               by (nf2_gen__nf2_gen_aux . . . . previous .)
P
P
             we proved P
          we proved 
             t2:T
                 .pr2 c (THead (Bind Abbr) u t) t2
                   eq T (THead (Bind Abbr) u t) t2
               P:Prop.P
          that is equivalent to (nf2 c (THead (Bind Abbr) u t))P:Prop.P
       we proved c:C.u:T.t:T.(nf2 c (THead (Bind Abbr) u t))P:Prop.P