0 QTRS
↳1 Overlay + Local Confluence (⇔)
↳2 QTRS
↳3 DependencyPairsProof (⇔)
↳4 QDP
↳5 DependencyGraphProof (⇔)
↳6 AND
↳7 QDP
↳8 QDPOrderProof (⇔)
↳9 QDP
↳10 PisEmptyProof (⇔)
↳11 TRUE
↳12 QDP
↳13 QDPOrderProof (⇔)
↳14 QDP
↳15 PisEmptyProof (⇔)
↳16 TRUE
↳17 QDP
↳18 QDPOrderProof (⇔)
↳19 QDP
↳20 PisEmptyProof (⇔)
↳21 TRUE
↳22 QDP
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
GE(s(x), s(y)) → GE(x, y)
REV(x) → IF(x, eq(0, length(x)), nil, 0, length(x))
REV(x) → LENGTH(x)
IF(x, false, z, c, l) → HELP(s(c), l, x, z)
HELP(c, l, cons(x, y), z) → IF(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
HELP(c, l, cons(x, y), z) → APPEND(y, cons(x, nil))
HELP(c, l, cons(x, y), z) → GE(c, l)
APPEND(cons(x, y), z) → APPEND(y, z)
LENGTH(cons(x, y)) → LENGTH(y)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
LENGTH(cons(x, y)) → LENGTH(y)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
LENGTH(cons(x, y)) → LENGTH(y)
trivial
cons2: multiset
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
APPEND(cons(x, y), z) → APPEND(y, z)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
APPEND(cons(x, y), z) → APPEND(y, z)
[APPEND2, cons2]
APPEND2: [1,2]
cons2: multiset
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
GE(s(x), s(y)) → GE(x, y)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
GE(s(x), s(y)) → GE(x, y)
trivial
GE1: [1]
s1: multiset
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))
HELP(c, l, cons(x, y), z) → IF(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
IF(x, false, z, c, l) → HELP(s(c), l, x, z)
ge(x, 0) → true
ge(0, s(y)) → false
ge(s(x), s(y)) → ge(x, y)
rev(x) → if(x, eq(0, length(x)), nil, 0, length(x))
if(x, true, z, c, l) → z
if(x, false, z, c, l) → help(s(c), l, x, z)
help(c, l, cons(x, y), z) → if(append(y, cons(x, nil)), ge(c, l), cons(x, z), c, l)
append(nil, y) → y
append(cons(x, y), z) → cons(x, append(y, z))
length(nil) → 0
length(cons(x, y)) → s(length(y))
ge(x0, 0)
ge(0, s(x0))
ge(s(x0), s(x1))
rev(x0)
if(x0, true, x1, x2, x3)
if(x0, false, x1, x2, x3)
help(x0, x1, cons(x2, x3), x4)
append(nil, x0)
append(cons(x0, x1), x2)
length(nil)
length(cons(x0, x1))