0 QTRS
↳1 AAECC Innermost (⇔)
↳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
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
F(true, x, y) → F(gt(x, y), trunc(x), s(y))
F(true, x, y) → GT(x, y)
F(true, x, y) → TRUNC(x)
TRUNC(s(s(x))) → TRUNC(x)
GT(s(u), s(v)) → GT(u, v)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
GT(s(u), s(v)) → GT(u, v)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
GT(s(u), s(v)) → GT(u, v)
f > [trunc1, 0] > s1
gt1 > true > [trunc1, 0] > s1
gt1 > false > s1
s1: [1]
f: []
true: multiset
gt1: [1]
trunc1: multiset
0: multiset
false: multiset
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
TRUNC(s(s(x))) → TRUNC(x)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
TRUNC(s(s(x))) → TRUNC(x)
s1 > [true, 0] > f1 > gt2
s1 > [true, 0] > false > gt2
s1: [1]
f1: [1]
true: multiset
gt2: [2,1]
0: multiset
false: multiset
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
F(true, x, y) → F(gt(x, y), trunc(x), s(y))
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))