R
↳Dependency Pair Analysis
REV(++(x, y)) -> ++'(rev(y), rev(x))
REV(++(x, y)) -> REV(y)
REV(++(x, y)) -> REV(x)
++'(.(x, y), z) -> ++'(y, z)
++'(x, ++(y, z)) -> ++'(++(x, y), z)
++'(x, ++(y, z)) -> ++'(x, y)
R
↳DPs
→DP Problem 1
↳Narrowing Transformation
→DP Problem 2
↳Remaining
++'(x, ++(y, z)) -> ++'(x, y)
++'(x, ++(y, z)) -> ++'(++(x, y), z)
++'(.(x, y), z) -> ++'(y, z)
rev(nil) -> nil
rev(rev(x)) -> x
rev(++(x, y)) -> ++(rev(y), rev(x))
++(nil, y) -> y
++(x, nil) -> x
++(.(x, y), z) -> .(x, ++(y, z))
++(x, ++(y, z)) -> ++(++(x, y), z)
make(x) -> .(x, nil)
innermost
three new Dependency Pairs are created:
++'(x, ++(y, z)) -> ++'(++(x, y), z)
++'(nil, ++(y'', z)) -> ++'(y'', z)
++'(.(x'', y''), ++(y0, z)) -> ++'(.(x'', ++(y'', y0)), z)
++'(x'', ++(++(y'', z''), z)) -> ++'(++(++(x'', y''), z''), z)
R
↳DPs
→DP Problem 1
↳Nar
→DP Problem 2
↳Remaining Obligation(s)
++'(x'', ++(++(y'', z''), z)) -> ++'(++(++(x'', y''), z''), z)
++'(.(x'', y''), ++(y0, z)) -> ++'(.(x'', ++(y'', y0)), z)
++'(.(x, y), z) -> ++'(y, z)
++'(x, ++(y, z)) -> ++'(x, y)
rev(nil) -> nil
rev(rev(x)) -> x
rev(++(x, y)) -> ++(rev(y), rev(x))
++(nil, y) -> y
++(x, nil) -> x
++(.(x, y), z) -> .(x, ++(y, z))
++(x, ++(y, z)) -> ++(++(x, y), z)
make(x) -> .(x, nil)
innermost
REV(++(x, y)) -> REV(x)
rev(nil) -> nil
rev(rev(x)) -> x
rev(++(x, y)) -> ++(rev(y), rev(x))
++(nil, y) -> y
++(x, nil) -> x
++(.(x, y), z) -> .(x, ++(y, z))
++(x, ++(y, z)) -> ++(++(x, y), z)
make(x) -> .(x, nil)
innermost
R
↳DPs
→DP Problem 1
↳Nar
→DP Problem 2
↳Remaining Obligation(s)
++'(x'', ++(++(y'', z''), z)) -> ++'(++(++(x'', y''), z''), z)
++'(.(x'', y''), ++(y0, z)) -> ++'(.(x'', ++(y'', y0)), z)
++'(.(x, y), z) -> ++'(y, z)
++'(x, ++(y, z)) -> ++'(x, y)
rev(nil) -> nil
rev(rev(x)) -> x
rev(++(x, y)) -> ++(rev(y), rev(x))
++(nil, y) -> y
++(x, nil) -> x
++(.(x, y), z) -> .(x, ++(y, z))
++(x, ++(y, z)) -> ++(++(x, y), z)
make(x) -> .(x, nil)
innermost
REV(++(x, y)) -> REV(x)
rev(nil) -> nil
rev(rev(x)) -> x
rev(++(x, y)) -> ++(rev(y), rev(x))
++(nil, y) -> y
++(x, nil) -> x
++(.(x, y), z) -> .(x, ++(y, z))
++(x, ++(y, z)) -> ++(++(x, y), z)
make(x) -> .(x, nil)
innermost