DEFINITION tlist_ind_rev()
TYPE =
       P:TListProp
         .P TNil
           (ts:TList.t:T.(P ts)(P (TApp ts t)))ts:TList.(P ts)
BODY =
        assume PTListProp
        suppose HTNil
        suppose H0ts:TList.t:T.(P ts)(P (TApp ts t))
        assume tsTList
          assume ts2TList
             we proceed by induction on ts2 to prove (ts1:TList.(tslt ts1 ts2)(P ts1))(P ts2)
                case TNil : 
                   the thesis becomes (ts1:TList.(tslt ts1 TNil)(P ts1))(P TNil)
                      suppose ts1:TList.(tslt ts1 TNil)(P ts1)
                         consider H
(ts1:TList.(tslt ts1 TNil)(P ts1))(P TNil)
                case TCons : t:T t0:TList 
                   the thesis becomes H2:ts1:TList.(tslt ts1 (TCons t t0))(P ts1).(P (TCons t t0))
                   () by induction hypothesis we know (ts1:TList.(tslt ts1 t0)(P ts1))(P t0)
                      suppose H2ts1:TList.(tslt ts1 (TCons t t0))(P ts1)
                         (H_x
                            by (tcons_tapp_ex . .)

                               ex2_2
                                 TList
                                 T
                                 λts2:TList.λt2:T.eq TList (TCons t t0) (TApp ts2 t2)
                                 λts2:TList.λ:T.eq nat (tslen t0) (tslen ts2)
                         end of H_x
                         (H3consider H_x
                         we proceed by induction on H3 to prove P (TCons t t0)
                            case ex2_2_intro : x0:TList x1:T H4:eq TList (TCons t t0) (TApp x0 x1) H5:eq nat (tslen t0) (tslen x0) 
                               the thesis becomes P (TCons t t0)
                                  we proceed by induction on H5 to prove lt (tslen x0) (tslen (TCons t t0))
                                     case refl_equal : 
                                        the thesis becomes lt (tslen t0) (tslen (TCons t t0))
                                           by (le_n .)
                                           we proved le (tslen (TCons t t0)) (tslen (TCons t t0))
lt (tslen t0) (tslen (TCons t t0))
                                  we proved lt (tslen x0) (tslen (TCons t t0))
                                  that is equivalent to tslt x0 (TCons t t0)
                                  by (H2 . previous)
                                  we proved P x0
                                  by (H0 . . previous)
                                  we proved P (TApp x0 x1)
                                  by (eq_ind_r . . . previous . H4)
P (TCons t t0)
                         we proved P (TCons t t0)
H2:ts1:TList.(tslt ts1 (TCons t t0))(P ts1).(P (TCons t t0))
             we proved (ts1:TList.(tslt ts1 ts2)(P ts1))(P ts2)
          we proved ts2:TList.(ts1:TList.(tslt ts1 ts2)(P ts1))(P ts2)
          by (tslt_wf_ind . previous .)
          we proved P ts
       we proved 
          P:TListProp
            .P TNil
              (ts:TList.t:T.(P ts)(P (TApp ts t)))ts:TList.(P ts)