YES
0 QTRS
↳1 DependencyPairsProof (⇔, 0 ms)
↳2 QDP
↳3 DependencyGraphProof (⇔, 0 ms)
↳4 AND
↳5 QDP
↳6 MNOCProof (⇔, 0 ms)
↳7 QDP
↳8 UsableRulesProof (⇔, 0 ms)
↳9 QDP
↳10 QReductionProof (⇔, 0 ms)
↳11 QDP
↳12 QDPSizeChangeProof (⇔, 0 ms)
↳13 YES
↳14 QDP
↳15 MNOCProof (⇔, 0 ms)
↳16 QDP
↳17 UsableRulesProof (⇔, 0 ms)
↳18 QDP
↳19 QReductionProof (⇔, 0 ms)
↳20 QDP
↳21 QDPSizeChangeProof (⇔, 0 ms)
↳22 YES
↳23 QDP
↳24 MNOCProof (⇔, 0 ms)
↳25 QDP
↳26 UsableRulesProof (⇔, 0 ms)
↳27 QDP
↳28 QReductionProof (⇔, 0 ms)
↳29 QDP
↳30 QDPSizeChangeProof (⇔, 0 ms)
↳31 YES
↳32 QDP
↳33 MNOCProof (⇔, 0 ms)
↳34 QDP
↳35 UsableRulesProof (⇔, 0 ms)
↳36 QDP
↳37 QReductionProof (⇔, 0 ms)
↳38 QDP
↳39 TransformationProof (⇔, 0 ms)
↳40 QDP
↳41 DependencyGraphProof (⇔, 0 ms)
↳42 QDP
↳43 UsableRulesProof (⇔, 0 ms)
↳44 QDP
↳45 QReductionProof (⇔, 0 ms)
↳46 QDP
↳47 TransformationProof (⇔, 0 ms)
↳48 QDP
↳49 UsableRulesProof (⇔, 0 ms)
↳50 QDP
↳51 TransformationProof (⇔, 0 ms)
↳52 QDP
↳53 UsableRulesProof (⇔, 0 ms)
↳54 QDP
↳55 QReductionProof (⇔, 0 ms)
↳56 QDP
↳57 TransformationProof (⇔, 0 ms)
↳58 QDP
↳59 UsableRulesProof (⇔, 0 ms)
↳60 QDP
↳61 QReductionProof (⇔, 0 ms)
↳62 QDP
↳63 TransformationProof (⇔, 0 ms)
↳64 QDP
↳65 QDPSizeChangeProof (⇔, 0 ms)
↳66 YES
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
PLUS(s(x), y) → PLUS(x, y)
TIMES(s(x), y) → PLUS(y, times(x, y))
TIMES(s(x), y) → TIMES(x, y)
MINUS(x, s(y)) → P(minus(x, y))
MINUS(x, s(y)) → MINUS(x, y)
FACITER(x, y) → IF(isZero(x), minus(x, s(0)), y, times(y, x))
FACITER(x, y) → ISZERO(x)
FACITER(x, y) → MINUS(x, s(0))
FACITER(x, y) → TIMES(y, x)
IF(false, x, y, z) → FACITER(x, z)
FACTORIAL(x) → FACITER(x, s(0))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
MINUS(x, s(y)) → MINUS(x, y)
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
MINUS(x, s(y)) → MINUS(x, y)
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
MINUS(x, s(y)) → MINUS(x, y)
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
MINUS(x, s(y)) → MINUS(x, y)
From the DPs we obtained the following set of size-change graphs:
PLUS(s(x), y) → PLUS(x, y)
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
PLUS(s(x), y) → PLUS(x, y)
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
PLUS(s(x), y) → PLUS(x, y)
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
PLUS(s(x), y) → PLUS(x, y)
From the DPs we obtained the following set of size-change graphs:
TIMES(s(x), y) → TIMES(x, y)
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
TIMES(s(x), y) → TIMES(x, y)
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
TIMES(s(x), y) → TIMES(x, y)
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
TIMES(s(x), y) → TIMES(x, y)
From the DPs we obtained the following set of size-change graphs:
FACITER(x, y) → IF(isZero(x), minus(x, s(0)), y, times(y, x))
IF(false, x, y, z) → FACITER(x, z)
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
FACITER(x, y) → IF(isZero(x), minus(x, s(0)), y, times(y, x))
IF(false, x, y, z) → FACITER(x, z)
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
p(s(x)) → x
p(0) → 0
minus(x, 0) → x
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
isZero(0) → true
isZero(s(x)) → false
facIter(x, y) → if(isZero(x), minus(x, s(0)), y, times(y, x))
if(true, x, y, z) → y
if(false, x, y, z) → facIter(x, z)
factorial(x) → facIter(x, s(0))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
FACITER(x, y) → IF(isZero(x), minus(x, s(0)), y, times(y, x))
IF(false, x, y, z) → FACITER(x, z)
isZero(0) → true
isZero(s(x)) → false
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
minus(x, 0) → x
p(s(x)) → x
p(0) → 0
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
facIter(x0, x1)
if(true, x0, x1, x2)
if(false, x0, x1, x2)
factorial(x0)
FACITER(x, y) → IF(isZero(x), minus(x, s(0)), y, times(y, x))
IF(false, x, y, z) → FACITER(x, z)
isZero(0) → true
isZero(s(x)) → false
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
minus(x, 0) → x
p(s(x)) → x
p(0) → 0
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
FACITER(0, y1) → IF(true, minus(0, s(0)), y1, times(y1, 0)) → FACITER(0, y1) → IF(true, minus(0, s(0)), y1, times(y1, 0))
FACITER(s(x0), y1) → IF(false, minus(s(x0), s(0)), y1, times(y1, s(x0))) → FACITER(s(x0), y1) → IF(false, minus(s(x0), s(0)), y1, times(y1, s(x0)))
IF(false, x, y, z) → FACITER(x, z)
FACITER(0, y1) → IF(true, minus(0, s(0)), y1, times(y1, 0))
FACITER(s(x0), y1) → IF(false, minus(s(x0), s(0)), y1, times(y1, s(x0)))
isZero(0) → true
isZero(s(x)) → false
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
minus(x, 0) → x
p(s(x)) → x
p(0) → 0
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
FACITER(s(x0), y1) → IF(false, minus(s(x0), s(0)), y1, times(y1, s(x0)))
IF(false, x, y, z) → FACITER(x, z)
isZero(0) → true
isZero(s(x)) → false
minus(0, x) → 0
minus(x, s(y)) → p(minus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
minus(x, 0) → x
p(s(x)) → x
p(0) → 0
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
FACITER(s(x0), y1) → IF(false, minus(s(x0), s(0)), y1, times(y1, s(x0)))
IF(false, x, y, z) → FACITER(x, z)
minus(x, s(y)) → p(minus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
minus(0, x) → 0
minus(x, 0) → x
p(s(x)) → x
p(0) → 0
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
isZero(0)
isZero(s(x0))
isZero(0)
isZero(s(x0))
FACITER(s(x0), y1) → IF(false, minus(s(x0), s(0)), y1, times(y1, s(x0)))
IF(false, x, y, z) → FACITER(x, z)
minus(x, s(y)) → p(minus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
minus(0, x) → 0
minus(x, 0) → x
p(s(x)) → x
p(0) → 0
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
FACITER(s(y0), y1) → IF(false, p(minus(s(y0), 0)), y1, times(y1, s(y0))) → FACITER(s(y0), y1) → IF(false, p(minus(s(y0), 0)), y1, times(y1, s(y0)))
IF(false, x, y, z) → FACITER(x, z)
FACITER(s(y0), y1) → IF(false, p(minus(s(y0), 0)), y1, times(y1, s(y0)))
minus(x, s(y)) → p(minus(x, y))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
minus(0, x) → 0
minus(x, 0) → x
p(s(x)) → x
p(0) → 0
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
IF(false, x, y, z) → FACITER(x, z)
FACITER(s(y0), y1) → IF(false, p(minus(s(y0), 0)), y1, times(y1, s(y0)))
minus(x, 0) → x
p(s(x)) → x
p(0) → 0
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
FACITER(s(y0), y1) → IF(false, p(s(y0)), y1, times(y1, s(y0))) → FACITER(s(y0), y1) → IF(false, p(s(y0)), y1, times(y1, s(y0)))
IF(false, x, y, z) → FACITER(x, z)
FACITER(s(y0), y1) → IF(false, p(s(y0)), y1, times(y1, s(y0)))
minus(x, 0) → x
p(s(x)) → x
p(0) → 0
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
IF(false, x, y, z) → FACITER(x, z)
FACITER(s(y0), y1) → IF(false, p(s(y0)), y1, times(y1, s(y0)))
p(s(x)) → x
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
minus(x0, 0)
minus(0, x0)
minus(x0, s(x1))
IF(false, x, y, z) → FACITER(x, z)
FACITER(s(y0), y1) → IF(false, p(s(y0)), y1, times(y1, s(y0)))
p(s(x)) → x
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
FACITER(s(y0), y1) → IF(false, y0, y1, times(y1, s(y0))) → FACITER(s(y0), y1) → IF(false, y0, y1, times(y1, s(y0)))
IF(false, x, y, z) → FACITER(x, z)
FACITER(s(y0), y1) → IF(false, y0, y1, times(y1, s(y0)))
p(s(x)) → x
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
IF(false, x, y, z) → FACITER(x, z)
FACITER(s(y0), y1) → IF(false, y0, y1, times(y1, s(y0)))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
p(s(x0))
p(0)
p(s(x0))
p(0)
IF(false, x, y, z) → FACITER(x, z)
FACITER(s(y0), y1) → IF(false, y0, y1, times(y1, s(y0)))
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
IF(false, s(y_0), x1, x2) → FACITER(s(y_0), x2) → IF(false, s(y_0), x1, x2) → FACITER(s(y_0), x2)
FACITER(s(y0), y1) → IF(false, y0, y1, times(y1, s(y0)))
IF(false, s(y_0), x1, x2) → FACITER(s(y_0), x2)
times(0, y) → 0
times(s(x), y) → plus(y, times(x, y))
plus(0, x) → x
plus(s(x), y) → s(plus(x, y))
plus(0, x0)
plus(s(x0), x1)
times(0, x0)
times(s(x0), x1)
From the DPs we obtained the following set of size-change graphs: