/export/starexec/sandbox2/solver/bin/starexec_run_FirstOrder /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- MAYBE We consider the system theBenchmark. We are asked to determine termination of the following first-order TRS. 0 : [] --> o a : [] --> o b : [] --> o c : [] --> o cons : [o * o] --> o error : [] --> o false : [] --> o ge : [o * o] --> o head : [o] --> o ifProd : [o * o * o] --> o ifTimes : [o * o * o * o * o] --> o isempty : [o] --> o nil : [] --> o plus : [o * o] --> o prod : [o] --> o prodIter : [o * o] --> o s : [o] --> o tail : [o] --> o times : [o * o] --> o timesIter : [o * o * o * o] --> o true : [] --> o prod(X) => prodIter(X, s(0)) prodIter(X, Y) => ifProd(isempty(X), X, Y) ifProd(true, X, Y) => Y ifProd(false, X, Y) => prodIter(tail(X), times(Y, head(X))) plus(0, X) => X plus(s(X), Y) => s(plus(X, Y)) times(X, Y) => timesIter(X, Y, 0, 0) timesIter(X, Y, Z, U) => ifTimes(ge(U, X), X, Y, Z, U) ifTimes(true, X, Y, Z, U) => Z ifTimes(false, X, Y, Z, U) => timesIter(X, Y, plus(Y, Z), s(U)) isempty(nil) => true isempty(cons(X, Y)) => false head(nil) => error head(cons(X, Y)) => X tail(nil) => nil tail(cons(X, Y)) => Y ge(X, 0) => true ge(0, s(X)) => false ge(s(X), s(Y)) => ge(X, Y) a => b a => c