0 QTRS
↳1 Overlay + Local Confluence (⇔, 0 ms)
↳2 QTRS
↳3 DependencyPairsProof (⇔, 0 ms)
↳4 QDP
↳5 DependencyGraphProof (⇔, 0 ms)
↳6 AND
↳7 QDP
↳8 UsableRulesProof (⇔, 0 ms)
↳9 QDP
↳10 QReductionProof (⇔, 0 ms)
↳11 QDP
↳12 ATransformationProof (⇔, 0 ms)
↳13 QDP
↳14 QReductionProof (⇔, 0 ms)
↳15 QDP
↳16 QDPSizeChangeProof (⇔, 0 ms)
↳17 YES
↳18 QDP
↳19 UsableRulesProof (⇔, 0 ms)
↳20 QDP
↳21 QReductionProof (⇔, 0 ms)
↳22 QDP
↳23 TransformationProof (⇔, 0 ms)
↳24 QDP
↳25 TransformationProof (⇔, 0 ms)
↳26 QDP
↳27 TransformationProof (⇔, 0 ms)
↳28 QDP
↳29 QDPOrderProof (⇔, 470 ms)
↳30 QDP
↳31 UsableRulesProof (⇔, 0 ms)
↳32 QDP
↳33 ATransformationProof (⇔, 0 ms)
↳34 QDP
↳35 QReductionProof (⇔, 0 ms)
↳36 QDP
↳37 QDPSizeChangeProof (⇔, 0 ms)
↳38 YES
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
inc → app(map, app(app(curry, plus), app(s, 0)))
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
inc → app(map, app(app(curry, plus), app(s, 0)))
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
inc
APP(app(plus, app(s, x)), y) → APP(s, app(app(plus, x), y))
APP(app(plus, app(s, x)), y) → APP(app(plus, x), y)
APP(app(plus, app(s, x)), y) → APP(plus, x)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(cons, app(f, x)), app(app(map, f), xs))
APP(app(map, f), app(app(cons, x), xs)) → APP(cons, app(f, x))
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(app(curry, g), x), y) → APP(app(g, x), y)
APP(app(app(curry, g), x), y) → APP(g, x)
INC → APP(map, app(app(curry, plus), app(s, 0)))
INC → APP(app(curry, plus), app(s, 0))
INC → APP(curry, plus)
INC → APP(s, 0)
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
inc → app(map, app(app(curry, plus), app(s, 0)))
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
inc
APP(app(plus, app(s, x)), y) → APP(app(plus, x), y)
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
inc → app(map, app(app(curry, plus), app(s, 0)))
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
inc
APP(app(plus, app(s, x)), y) → APP(app(plus, x), y)
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
inc
inc
APP(app(plus, app(s, x)), y) → APP(app(plus, x), y)
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
plus1(s(x), y) → plus1(x, y)
plus(0, x0)
plus(s(x0), x1)
map(x0, nil)
map(x0, cons(x1, x2))
curry(x0, x1, x2)
plus(0, x0)
plus(s(x0), x1)
map(x0, nil)
map(x0, cons(x1, x2))
curry(x0, x1, x2)
plus1(s(x), y) → plus1(x, y)
From the DPs we obtained the following set of size-change graphs:
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(curry, g), x), y) → APP(app(g, x), y)
APP(app(app(curry, g), x), y) → APP(g, x)
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
inc → app(map, app(app(curry, plus), app(s, 0)))
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
inc
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(curry, g), x), y) → APP(app(g, x), y)
APP(app(app(curry, g), x), y) → APP(g, x)
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
inc
inc
APP(app(map, f), app(app(cons, x), xs)) → APP(app(map, f), xs)
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(curry, g), x), y) → APP(app(g, x), y)
APP(app(app(curry, g), x), y) → APP(g, x)
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
APP(app(map, x0), app(app(cons, x1), app(app(cons, y_1), y_2))) → APP(app(map, x0), app(app(cons, y_1), y_2)) → APP(app(map, x0), app(app(cons, x1), app(app(cons, y_1), y_2))) → APP(app(map, x0), app(app(cons, y_1), y_2))
APP(app(map, f), app(app(cons, x), xs)) → APP(f, x)
APP(app(app(curry, g), x), y) → APP(app(g, x), y)
APP(app(app(curry, g), x), y) → APP(g, x)
APP(app(map, x0), app(app(cons, x1), app(app(cons, y_1), y_2))) → APP(app(map, x0), app(app(cons, y_1), y_2))
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
APP(app(map, app(app(curry, y_0), y_1)), app(app(cons, x1), x2)) → APP(app(app(curry, y_0), y_1), x1) → APP(app(map, app(app(curry, y_0), y_1)), app(app(cons, x1), x2)) → APP(app(app(curry, y_0), y_1), x1)
APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), y_2)), x2)) → APP(app(map, y_0), app(app(cons, y_1), y_2)) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), y_2)), x2)) → APP(app(map, y_0), app(app(cons, y_1), y_2))
APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), x2)) → APP(app(map, y_0), app(app(cons, y_1), app(app(cons, y_2), y_3))) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), x2)) → APP(app(map, y_0), app(app(cons, y_1), app(app(cons, y_2), y_3)))
APP(app(app(curry, g), x), y) → APP(app(g, x), y)
APP(app(app(curry, g), x), y) → APP(g, x)
APP(app(map, x0), app(app(cons, x1), app(app(cons, y_1), y_2))) → APP(app(map, x0), app(app(cons, y_1), y_2))
APP(app(map, app(app(curry, y_0), y_1)), app(app(cons, x1), x2)) → APP(app(app(curry, y_0), y_1), x1)
APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), y_2)), x2)) → APP(app(map, y_0), app(app(cons, y_1), y_2))
APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), x2)) → APP(app(map, y_0), app(app(cons, y_1), app(app(cons, y_2), y_3)))
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
APP(app(app(curry, app(app(curry, y_0), y_1)), x1), x2) → APP(app(app(curry, y_0), y_1), x1) → APP(app(app(curry, app(app(curry, y_0), y_1)), x1), x2) → APP(app(app(curry, y_0), y_1), x1)
APP(app(app(curry, app(map, y_0)), app(app(cons, y_1), app(app(cons, y_2), y_3))), x2) → APP(app(map, y_0), app(app(cons, y_1), app(app(cons, y_2), y_3))) → APP(app(app(curry, app(map, y_0)), app(app(cons, y_1), app(app(cons, y_2), y_3))), x2) → APP(app(map, y_0), app(app(cons, y_1), app(app(cons, y_2), y_3)))
APP(app(app(curry, app(map, app(app(curry, y_0), y_1))), app(app(cons, y_2), y_3)), x2) → APP(app(map, app(app(curry, y_0), y_1)), app(app(cons, y_2), y_3)) → APP(app(app(curry, app(map, app(app(curry, y_0), y_1))), app(app(cons, y_2), y_3)), x2) → APP(app(map, app(app(curry, y_0), y_1)), app(app(cons, y_2), y_3))
APP(app(app(curry, app(map, app(map, y_0))), app(app(cons, app(app(cons, y_1), y_2)), y_3)), x2) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), y_2)), y_3)) → APP(app(app(curry, app(map, app(map, y_0))), app(app(cons, app(app(cons, y_1), y_2)), y_3)), x2) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), y_2)), y_3))
APP(app(app(curry, app(map, app(map, y_0))), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), y_4)), x2) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), y_4)) → APP(app(app(curry, app(map, app(map, y_0))), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), y_4)), x2) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), y_4))
APP(app(app(curry, g), x), y) → APP(app(g, x), y)
APP(app(map, x0), app(app(cons, x1), app(app(cons, y_1), y_2))) → APP(app(map, x0), app(app(cons, y_1), y_2))
APP(app(map, app(app(curry, y_0), y_1)), app(app(cons, x1), x2)) → APP(app(app(curry, y_0), y_1), x1)
APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), y_2)), x2)) → APP(app(map, y_0), app(app(cons, y_1), y_2))
APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), x2)) → APP(app(map, y_0), app(app(cons, y_1), app(app(cons, y_2), y_3)))
APP(app(app(curry, app(app(curry, y_0), y_1)), x1), x2) → APP(app(app(curry, y_0), y_1), x1)
APP(app(app(curry, app(map, y_0)), app(app(cons, y_1), app(app(cons, y_2), y_3))), x2) → APP(app(map, y_0), app(app(cons, y_1), app(app(cons, y_2), y_3)))
APP(app(app(curry, app(map, app(app(curry, y_0), y_1))), app(app(cons, y_2), y_3)), x2) → APP(app(map, app(app(curry, y_0), y_1)), app(app(cons, y_2), y_3))
APP(app(app(curry, app(map, app(map, y_0))), app(app(cons, app(app(cons, y_1), y_2)), y_3)), x2) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), y_2)), y_3))
APP(app(app(curry, app(map, app(map, y_0))), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), y_4)), x2) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), y_4))
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APP(app(app(curry, g), x), y) → APP(app(g, x), y)
APP(app(map, app(app(curry, y_0), y_1)), app(app(cons, x1), x2)) → APP(app(app(curry, y_0), y_1), x1)
APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), y_2)), x2)) → APP(app(map, y_0), app(app(cons, y_1), y_2))
APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), x2)) → APP(app(map, y_0), app(app(cons, y_1), app(app(cons, y_2), y_3)))
APP(app(app(curry, app(app(curry, y_0), y_1)), x1), x2) → APP(app(app(curry, y_0), y_1), x1)
APP(app(app(curry, app(map, y_0)), app(app(cons, y_1), app(app(cons, y_2), y_3))), x2) → APP(app(map, y_0), app(app(cons, y_1), app(app(cons, y_2), y_3)))
APP(app(app(curry, app(map, app(app(curry, y_0), y_1))), app(app(cons, y_2), y_3)), x2) → APP(app(map, app(app(curry, y_0), y_1)), app(app(cons, y_2), y_3))
APP(app(app(curry, app(map, app(map, y_0))), app(app(cons, app(app(cons, y_1), y_2)), y_3)), x2) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), y_2)), y_3))
APP(app(app(curry, app(map, app(map, y_0))), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), y_4)), x2) → APP(app(map, app(map, y_0)), app(app(cons, app(app(cons, y_1), app(app(cons, y_2), y_3))), y_4))
POL(0) = 0
POL(APP(x1, x2)) = x1
POL(app(x1, x2)) = 1 + x1 + x1·x2
POL(cons) = 0
POL(curry) = 1
POL(map) = 1
POL(nil) = 0
POL(plus) = 0
POL(s) = 0
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
APP(app(map, x0), app(app(cons, x1), app(app(cons, y_1), y_2))) → APP(app(map, x0), app(app(cons, y_1), y_2))
app(app(plus, 0), y) → y
app(app(plus, app(s, x)), y) → app(s, app(app(plus, x), y))
app(app(map, f), nil) → nil
app(app(map, f), app(app(cons, x), xs)) → app(app(cons, app(f, x)), app(app(map, f), xs))
app(app(app(curry, g), x), y) → app(app(g, x), y)
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
APP(app(map, x0), app(app(cons, x1), app(app(cons, y_1), y_2))) → APP(app(map, x0), app(app(cons, y_1), y_2))
app(app(plus, 0), x0)
app(app(plus, app(s, x0)), x1)
app(app(map, x0), nil)
app(app(map, x0), app(app(cons, x1), x2))
app(app(app(curry, x0), x1), x2)
map1(x0, cons(x1, cons(y_1, y_2))) → map1(x0, cons(y_1, y_2))
plus(0, x0)
plus(s(x0), x1)
map(x0, nil)
map(x0, cons(x1, x2))
curry(x0, x1, x2)
plus(0, x0)
plus(s(x0), x1)
map(x0, nil)
map(x0, cons(x1, x2))
curry(x0, x1, x2)
map1(x0, cons(x1, cons(y_1, y_2))) → map1(x0, cons(y_1, y_2))
From the DPs we obtained the following set of size-change graphs: