MAYBE
Time: 0.022856
TRS:
 {                         ap(ap(ap(if(), null()), f), xs) -> ap(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)),
                           ap(ap(ap(if(), true()), f), xs) -> null(),
                                      ap(ap(map(), f), xs) -> ap(ap(ap(if(), ap(isEmpty(), xs)), f), xs),
                                      ap(ap(if2(), f), xs) -> ap(ap(map(), f), ap(dropLast(), xs)),
                      ap(isEmpty(), ap(ap(cons(), x), xs)) -> null(),
                                     ap(isEmpty(), null()) -> true(),
      ap(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(last(), ap(ap(cons(), y), ys)),
                     ap(last(), ap(ap(cons(), x), null())) -> x,
  ap(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))),
                 ap(dropLast(), ap(ap(cons(), x), null())) -> null()}
 DP:
  DP:
   {                         ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)),
                             ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)),
                             ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs),
                             ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))),
                             ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs),
                             ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f),
                                        ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs),
                                        ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f),
                                        ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)),
                                        ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs),
                                        ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)),
                                        ap#(ap(if2(), f), xs) -> ap#(map(), f),
                                        ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs),
        ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)),
    ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))),
    ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))}
  TRS:
  {                         ap(ap(ap(if(), null()), f), xs) -> ap(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)),
                            ap(ap(ap(if(), true()), f), xs) -> null(),
                                       ap(ap(map(), f), xs) -> ap(ap(ap(if(), ap(isEmpty(), xs)), f), xs),
                                       ap(ap(if2(), f), xs) -> ap(ap(map(), f), ap(dropLast(), xs)),
                       ap(isEmpty(), ap(ap(cons(), x), xs)) -> null(),
                                      ap(isEmpty(), null()) -> true(),
       ap(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(last(), ap(ap(cons(), y), ys)),
                      ap(last(), ap(ap(cons(), x), null())) -> x,
   ap(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))),
                  ap(dropLast(), ap(ap(cons(), x), null())) -> null()}
  UR:
   {                         ap(ap(ap(if(), null()), f), xs) -> ap(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)),
                             ap(ap(ap(if(), true()), f), xs) -> null(),
                                        ap(ap(map(), f), xs) -> ap(ap(ap(if(), ap(isEmpty(), xs)), f), xs),
                                        ap(ap(if2(), f), xs) -> ap(ap(map(), f), ap(dropLast(), xs)),
                        ap(isEmpty(), ap(ap(cons(), x), xs)) -> null(),
                                       ap(isEmpty(), null()) -> true(),
        ap(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(last(), ap(ap(cons(), y), ys)),
                       ap(last(), ap(ap(cons(), x), null())) -> x,
    ap(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))),
                   ap(dropLast(), ap(ap(cons(), x), null())) -> null(),
                                                     a(z, w) -> z,
                                                     a(z, w) -> w}
   EDG:
    {
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(map(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(if2(), f), xs) -> ap#(map(), f))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
     (ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
    }
    EDG:
     {(ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
      (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
      (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
      (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
      (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
      (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
      (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
      (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
      (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
      (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
      (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
      (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
      (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
      (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
      (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
      (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))}
     EDG:
      {(ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
       (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
       (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
       (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
       (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
       (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
       (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
       (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
       (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
       (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
       (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
       (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
       (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
       (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
       (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
       (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))}
      EDG:
       {(ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
        (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
        (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
        (ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
        (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
        (ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
        (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
        (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
        (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
        (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
        (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
        (ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(map(), f))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
        (ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(cons(), ap(f, ap(last(), xs))))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(ap(if(), null()), f), xs) -> ap#(if2(), f))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(ap(if(), ap(isEmpty(), xs)), f))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(if(), ap(isEmpty(), xs)))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(map(), f), xs) -> ap#(isEmpty(), xs))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs)))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(map(), f))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
        (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))))
        (ap#(ap(if2(), f), xs) -> ap#(dropLast(), xs), ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys)))
        (ap#(ap(ap(if(), null()), f), xs) -> ap#(last(), xs), ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys)))}
       STATUS:
        arrows: 0.863281
        SCCS (3):
         Scc:
          {ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)),
           ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs),
                      ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs),
                      ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))}
         Scc:
          {ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))}
         Scc:
          {ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))}
         
         SCC (4):
          Strict:
           {ap#(ap(ap(if(), null()), f), xs) -> ap#(f, ap(last(), xs)),
            ap#(ap(ap(if(), null()), f), xs) -> ap#(ap(if2(), f), xs),
                       ap#(ap(map(), f), xs) -> ap#(ap(ap(if(), ap(isEmpty(), xs)), f), xs),
                       ap#(ap(if2(), f), xs) -> ap#(ap(map(), f), ap(dropLast(), xs))}
          Weak:
          {                         ap(ap(ap(if(), null()), f), xs) -> ap(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)),
                                    ap(ap(ap(if(), true()), f), xs) -> null(),
                                               ap(ap(map(), f), xs) -> ap(ap(ap(if(), ap(isEmpty(), xs)), f), xs),
                                               ap(ap(if2(), f), xs) -> ap(ap(map(), f), ap(dropLast(), xs)),
                               ap(isEmpty(), ap(ap(cons(), x), xs)) -> null(),
                                              ap(isEmpty(), null()) -> true(),
               ap(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(last(), ap(ap(cons(), y), ys)),
                              ap(last(), ap(ap(cons(), x), null())) -> x,
           ap(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))),
                          ap(dropLast(), ap(ap(cons(), x), null())) -> null()}
          Open
         
         
         
         
         SCC (1):
          Strict:
           {ap#(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(dropLast(), ap(ap(cons(), y), ys))}
          Weak:
          {                         ap(ap(ap(if(), null()), f), xs) -> ap(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)),
                                    ap(ap(ap(if(), true()), f), xs) -> null(),
                                               ap(ap(map(), f), xs) -> ap(ap(ap(if(), ap(isEmpty(), xs)), f), xs),
                                               ap(ap(if2(), f), xs) -> ap(ap(map(), f), ap(dropLast(), xs)),
                               ap(isEmpty(), ap(ap(cons(), x), xs)) -> null(),
                                              ap(isEmpty(), null()) -> true(),
               ap(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(last(), ap(ap(cons(), y), ys)),
                              ap(last(), ap(ap(cons(), x), null())) -> x,
           ap(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))),
                          ap(dropLast(), ap(ap(cons(), x), null())) -> null()}
          Open
         
         
         SCC (1):
          Strict:
           {ap#(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap#(last(), ap(ap(cons(), y), ys))}
          Weak:
          {                         ap(ap(ap(if(), null()), f), xs) -> ap(ap(cons(), ap(f, ap(last(), xs))), ap(ap(if2(), f), xs)),
                                    ap(ap(ap(if(), true()), f), xs) -> null(),
                                               ap(ap(map(), f), xs) -> ap(ap(ap(if(), ap(isEmpty(), xs)), f), xs),
                                               ap(ap(if2(), f), xs) -> ap(ap(map(), f), ap(dropLast(), xs)),
                               ap(isEmpty(), ap(ap(cons(), x), xs)) -> null(),
                                              ap(isEmpty(), null()) -> true(),
               ap(last(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(last(), ap(ap(cons(), y), ys)),
                              ap(last(), ap(ap(cons(), x), null())) -> x,
           ap(dropLast(), ap(ap(cons(), x), ap(ap(cons(), y), ys))) -> ap(ap(cons(), x), ap(dropLast(), ap(ap(cons(), y), ys))),
                          ap(dropLast(), ap(ap(cons(), x), null())) -> null()}
          Open