DEFINITION pr0_confluence__pr0_upsilon_upsilon()
TYPE =
       b:B
         .not (eq B b Abst)
           v1:T
                .v2:T
                  .x0:T
                    .pr0 v1 x0
                      (pr0 v2 x0
                           u1:T
                                .u2:T
                                  .x1:T
                                    .pr0 u1 x1
                                      (pr0 u2 x1
                                           t1:T
                                                .t2:T
                                                  .x2:T
                                                    .pr0 t1 x2
                                                      (pr0 t2 x2
                                                           (ex2
                                                                T
                                                                λt:T.pr0 (THead (Bind b) u1 (THead (Flat Appl) (lift (S OO v1) t1)) t
                                                                λt:T.pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S OO v2) t2)) t))))
BODY =
        assume bB
        suppose not (eq B b Abst)
        assume v1T
        assume v2T
        assume x0T
        suppose H0pr0 v1 x0
        suppose H1pr0 v2 x0
        assume u1T
        assume u2T
        assume x1T
        suppose H2pr0 u1 x1
        suppose H3pr0 u2 x1
        assume t1T
        assume t2T
        assume x2T
        suppose H4pr0 t1 x2
        suppose H5pr0 t2 x2
          (h1
             by (pr0_lift . . H0 . .)
             we proved pr0 (lift (S OO v1) (lift (S OO x0)
             by (pr0_comp . . previous . . H4 .)
             we proved 
                pr0
                  THead (Flat Appl) (lift (S OO v1) t1
                  THead (Flat Appl) (lift (S OO x0) x2
             by (pr0_comp . . H2 . . previous .)

                pr0
                  THead (Bind b) u1 (THead (Flat Appl) (lift (S OO v1) t1)
                  THead (Bind b) x1 (THead (Flat Appl) (lift (S OO x0) x2)
          end of h1
          (h2
             by (pr0_lift . . H1 . .)
             we proved pr0 (lift (S OO v2) (lift (S OO x0)
             by (pr0_comp . . previous . . H5 .)
             we proved 
                pr0
                  THead (Flat Appl) (lift (S OO v2) t2
                  THead (Flat Appl) (lift (S OO x0) x2
             by (pr0_comp . . H3 . . previous .)

                pr0
                  THead (Bind b) u2 (THead (Flat Appl) (lift (S OO v2) t2)
                  THead (Bind b) x1 (THead (Flat Appl) (lift (S OO x0) x2)
          end of h2
          by (ex_intro2 . . . . h1 h2)
          we proved 
             ex2
               T
               λt:T.pr0 (THead (Bind b) u1 (THead (Flat Appl) (lift (S OO v1) t1)) t
               λt:T.pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S OO v2) t2)) t
       we proved 
          b:B
            .not (eq B b Abst)
              v1:T
                   .v2:T
                     .x0:T
                       .pr0 v1 x0
                         (pr0 v2 x0
                              u1:T
                                   .u2:T
                                     .x1:T
                                       .pr0 u1 x1
                                         (pr0 u2 x1
                                              t1:T
                                                   .t2:T
                                                     .x2:T
                                                       .pr0 t1 x2
                                                         (pr0 t2 x2
                                                              (ex2
                                                                   T
                                                                   λt:T.pr0 (THead (Bind b) u1 (THead (Flat Appl) (lift (S OO v1) t1)) t
                                                                   λt:T.pr0 (THead (Bind b) u2 (THead (Flat Appl) (lift (S OO v2) t2)) t))))