(0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

ap(ap(map, f), xs) → ap(ap(ap(if, ap(isEmpty, xs)), f), xs)
ap(ap(ap(if, true), f), xs) → nil
ap(ap(ap(if, false), f), xs) → ap(ap(cons, ap(f, ap(last, xs))), ap(ap(map, f), ap(dropLast, xs)))
ap(isEmpty, nil) → true
ap(isEmpty, ap(ap(cons, x), xs)) → false
ap(last, ap(ap(cons, x), nil)) → x
ap(last, ap(ap(cons, x), ap(ap(cons, y), ys))) → ap(last, ap(ap(cons, y), ys))
ap(dropLast, nil) → nil
ap(dropLast, ap(ap(cons, x), nil)) → nil
ap(dropLast, ap(ap(cons, x), ap(ap(cons, y), ys))) → ap(ap(cons, x), ap(dropLast, ap(ap(cons, y), ys)))

Rewrite Strategy: INNERMOST

(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted CpxTRS to CDT

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

ap(ap(map, z0), z1) → ap(ap(ap(if, ap(isEmpty, z1)), z0), z1)
ap(ap(ap(if, true), z0), z1) → nil
ap(ap(ap(if, false), z0), z1) → ap(ap(cons, ap(z0, ap(last, z1))), ap(ap(map, z0), ap(dropLast, z1)))
ap(isEmpty, nil) → true
ap(isEmpty, ap(ap(cons, z0), z1)) → false
ap(last, ap(ap(cons, z0), nil)) → z0
ap(last, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → ap(last, ap(ap(cons, z1), z2))
ap(dropLast, nil) → nil
ap(dropLast, ap(ap(cons, z0), nil)) → nil
ap(dropLast, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → ap(ap(cons, z0), ap(dropLast, ap(ap(cons, z1), z2)))
Tuples:

AP(ap(map, z0), z1) → c(AP(ap(ap(if, ap(isEmpty, z1)), z0), z1), AP(ap(if, ap(isEmpty, z1)), z0), AP(if, ap(isEmpty, z1)), AP(isEmpty, z1))
AP(ap(ap(if, false), z0), z1) → c2(AP(ap(cons, ap(z0, ap(last, z1))), ap(ap(map, z0), ap(dropLast, z1))), AP(cons, ap(z0, ap(last, z1))), AP(z0, ap(last, z1)), AP(last, z1), AP(ap(map, z0), ap(dropLast, z1)), AP(map, z0), AP(dropLast, z1))
AP(last, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → c6(AP(last, ap(ap(cons, z1), z2)), AP(ap(cons, z1), z2), AP(cons, z1))
AP(dropLast, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → c9(AP(ap(cons, z0), ap(dropLast, ap(ap(cons, z1), z2))), AP(cons, z0), AP(dropLast, ap(ap(cons, z1), z2)), AP(ap(cons, z1), z2), AP(cons, z1))
S tuples:

AP(ap(map, z0), z1) → c(AP(ap(ap(if, ap(isEmpty, z1)), z0), z1), AP(ap(if, ap(isEmpty, z1)), z0), AP(if, ap(isEmpty, z1)), AP(isEmpty, z1))
AP(ap(ap(if, false), z0), z1) → c2(AP(ap(cons, ap(z0, ap(last, z1))), ap(ap(map, z0), ap(dropLast, z1))), AP(cons, ap(z0, ap(last, z1))), AP(z0, ap(last, z1)), AP(last, z1), AP(ap(map, z0), ap(dropLast, z1)), AP(map, z0), AP(dropLast, z1))
AP(last, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → c6(AP(last, ap(ap(cons, z1), z2)), AP(ap(cons, z1), z2), AP(cons, z1))
AP(dropLast, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → c9(AP(ap(cons, z0), ap(dropLast, ap(ap(cons, z1), z2))), AP(cons, z0), AP(dropLast, ap(ap(cons, z1), z2)), AP(ap(cons, z1), z2), AP(cons, z1))
K tuples:none
Defined Rule Symbols:

ap

Defined Pair Symbols:

AP

Compound Symbols:

c, c2, c6, c9

(3) CdtUnreachableProof (EQUIVALENT transformation)

The following tuples could be removed as they are not reachable from basic start terms:

AP(ap(map, z0), z1) → c(AP(ap(ap(if, ap(isEmpty, z1)), z0), z1), AP(ap(if, ap(isEmpty, z1)), z0), AP(if, ap(isEmpty, z1)), AP(isEmpty, z1))
AP(ap(ap(if, false), z0), z1) → c2(AP(ap(cons, ap(z0, ap(last, z1))), ap(ap(map, z0), ap(dropLast, z1))), AP(cons, ap(z0, ap(last, z1))), AP(z0, ap(last, z1)), AP(last, z1), AP(ap(map, z0), ap(dropLast, z1)), AP(map, z0), AP(dropLast, z1))
AP(last, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → c6(AP(last, ap(ap(cons, z1), z2)), AP(ap(cons, z1), z2), AP(cons, z1))
AP(dropLast, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → c9(AP(ap(cons, z0), ap(dropLast, ap(ap(cons, z1), z2))), AP(cons, z0), AP(dropLast, ap(ap(cons, z1), z2)), AP(ap(cons, z1), z2), AP(cons, z1))

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

ap(ap(map, z0), z1) → ap(ap(ap(if, ap(isEmpty, z1)), z0), z1)
ap(ap(ap(if, true), z0), z1) → nil
ap(ap(ap(if, false), z0), z1) → ap(ap(cons, ap(z0, ap(last, z1))), ap(ap(map, z0), ap(dropLast, z1)))
ap(isEmpty, nil) → true
ap(isEmpty, ap(ap(cons, z0), z1)) → false
ap(last, ap(ap(cons, z0), nil)) → z0
ap(last, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → ap(last, ap(ap(cons, z1), z2))
ap(dropLast, nil) → nil
ap(dropLast, ap(ap(cons, z0), nil)) → nil
ap(dropLast, ap(ap(cons, z0), ap(ap(cons, z1), z2))) → ap(ap(cons, z0), ap(dropLast, ap(ap(cons, z1), z2)))
Tuples:none
S tuples:none
K tuples:none
Defined Rule Symbols:

ap

Defined Pair Symbols:none

Compound Symbols:none

(5) SIsEmptyProof (EQUIVALENT transformation)

The set S is empty

(6) BOUNDS(O(1), O(1))