R
↳Dependency Pair Analysis
MERGE(.(x, y), .(u, v)) -> IF(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
MERGE(.(x, y), .(u, v)) -> MERGE(y, .(u, v))
MERGE(.(x, y), .(u, v)) -> MERGE(.(x, y), v)
++'(.(x, y), z) -> ++'(y, z)
R
↳DPs
→DP Problem 1
↳Polynomial Ordering
→DP Problem 2
↳Polo
MERGE(.(x, y), .(u, v)) -> MERGE(.(x, y), v)
MERGE(.(x, y), .(u, v)) -> MERGE(y, .(u, v))
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
MERGE(.(x, y), .(u, v)) -> MERGE(y, .(u, v))
POL(.(x1, x2)) = 1 + x2 POL(MERGE(x1, x2)) = x1
R
↳DPs
→DP Problem 1
↳Polo
→DP Problem 3
↳Polynomial Ordering
→DP Problem 2
↳Polo
MERGE(.(x, y), .(u, v)) -> MERGE(.(x, y), v)
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
MERGE(.(x, y), .(u, v)) -> MERGE(.(x, y), v)
POL(.(x1, x2)) = 1 + x2 POL(MERGE(x1, x2)) = x2
R
↳DPs
→DP Problem 1
↳Polo
→DP Problem 3
↳Polo
...
→DP Problem 4
↳Dependency Graph
→DP Problem 2
↳Polo
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
R
↳DPs
→DP Problem 1
↳Polo
→DP Problem 2
↳Polynomial Ordering
++'(.(x, y), z) -> ++'(y, z)
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost
++'(.(x, y), z) -> ++'(y, z)
POL(++'(x1, x2)) = x1 POL(.(x1, x2)) = 1 + x2
R
↳DPs
→DP Problem 1
↳Polo
→DP Problem 2
↳Polo
→DP Problem 5
↳Dependency Graph
merge(nil, y) -> y
merge(x, nil) -> x
merge(.(x, y), .(u, v)) -> if(< (x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v)))
++(nil, y) -> y
++(.(x, y), z) -> .(x, ++(y, z))
if(true, x, y) -> x
if(false, x, y) -> x
innermost