/export/starexec/sandbox/solver/bin/starexec_run_FirstOrder /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- MAYBE We consider the system theBenchmark. We are asked to determine termination of the following first-order TRS. 0 : [] --> o active : [o] --> o cons : [o * o] --> o divides : [o * o] --> o false : [] --> o filter : [o * o] --> o from : [o] --> o head : [o] --> o if : [o * o * o] --> o mark : [o] --> o ok : [o] --> o primes : [] --> o proper : [o] --> o s : [o] --> o sieve : [o] --> o tail : [o] --> o top : [o] --> o true : [] --> o active(primes) => mark(sieve(from(s(s(0))))) active(from(X)) => mark(cons(X, from(s(X)))) active(head(cons(X, Y))) => mark(X) active(tail(cons(X, Y))) => mark(Y) active(if(true, X, Y)) => mark(X) active(if(false, X, Y)) => mark(Y) active(filter(s(s(X)), cons(Y, Z))) => mark(if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y))))) active(sieve(cons(X, Y))) => mark(cons(X, filter(X, sieve(Y)))) active(sieve(X)) => sieve(active(X)) active(from(X)) => from(active(X)) active(s(X)) => s(active(X)) active(cons(X, Y)) => cons(active(X), Y) active(head(X)) => head(active(X)) active(tail(X)) => tail(active(X)) active(if(X, Y, Z)) => if(active(X), Y, Z) active(filter(X, Y)) => filter(active(X), Y) active(filter(X, Y)) => filter(X, active(Y)) active(divides(X, Y)) => divides(active(X), Y) active(divides(X, Y)) => divides(X, active(Y)) sieve(mark(X)) => mark(sieve(X)) from(mark(X)) => mark(from(X)) s(mark(X)) => mark(s(X)) cons(mark(X), Y) => mark(cons(X, Y)) head(mark(X)) => mark(head(X)) tail(mark(X)) => mark(tail(X)) if(mark(X), Y, Z) => mark(if(X, Y, Z)) filter(mark(X), Y) => mark(filter(X, Y)) filter(X, mark(Y)) => mark(filter(X, Y)) divides(mark(X), Y) => mark(divides(X, Y)) divides(X, mark(Y)) => mark(divides(X, Y)) proper(primes) => ok(primes) proper(sieve(X)) => sieve(proper(X)) proper(from(X)) => from(proper(X)) proper(s(X)) => s(proper(X)) proper(0) => ok(0) proper(cons(X, Y)) => cons(proper(X), proper(Y)) proper(head(X)) => head(proper(X)) proper(tail(X)) => tail(proper(X)) proper(if(X, Y, Z)) => if(proper(X), proper(Y), proper(Z)) proper(true) => ok(true) proper(false) => ok(false) proper(filter(X, Y)) => filter(proper(X), proper(Y)) proper(divides(X, Y)) => divides(proper(X), proper(Y)) sieve(ok(X)) => ok(sieve(X)) from(ok(X)) => ok(from(X)) s(ok(X)) => ok(s(X)) cons(ok(X), ok(Y)) => ok(cons(X, Y)) head(ok(X)) => ok(head(X)) tail(ok(X)) => ok(tail(X)) if(ok(X), ok(Y), ok(Z)) => ok(if(X, Y, Z)) filter(ok(X), ok(Y)) => ok(filter(X, Y)) divides(ok(X), ok(Y)) => ok(divides(X, Y)) top(mark(X)) => top(proper(X)) top(ok(X)) => top(active(X))