/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 active : [o] --> o and : [o * o] --> o cons : [o * o] --> o isNat : [o] --> o isNatIList : [o] --> o isNatList : [o] --> o length : [o] --> o mark : [o] --> o nil : [] --> o s : [o] --> o take : [o * o] --> o tt : [] --> o uLength : [o * o] --> o uTake1 : [o] --> o uTake2 : [o * o * o * o] --> o zeros : [] --> o active(and(tt, X)) => mark(X) active(isNatIList(X)) => mark(isNatList(X)) active(isNat(0)) => mark(tt) active(isNat(s(X))) => mark(isNat(X)) active(isNat(length(X))) => mark(isNatList(X)) active(isNatIList(zeros)) => mark(tt) active(isNatIList(cons(X, Y))) => mark(and(isNat(X), isNatIList(Y))) active(isNatList(nil)) => mark(tt) active(isNatList(cons(X, Y))) => mark(and(isNat(X), isNatList(Y))) active(isNatList(take(X, Y))) => mark(and(isNat(X), isNatIList(Y))) active(zeros) => mark(cons(0, zeros)) active(take(0, X)) => mark(uTake1(isNatIList(X))) active(uTake1(tt)) => mark(nil) active(take(s(X), cons(Y, Z))) => mark(uTake2(and(isNat(X), and(isNat(Y), isNatIList(Z))), X, Y, Z)) active(uTake2(tt, X, Y, Z)) => mark(cons(Y, take(X, Z))) active(length(cons(X, Y))) => mark(uLength(and(isNat(X), isNatList(Y)), Y)) active(uLength(tt, X)) => mark(s(length(X))) mark(and(X, Y)) => active(and(mark(X), mark(Y))) mark(tt) => active(tt) mark(isNatIList(X)) => active(isNatIList(X)) mark(isNatList(X)) => active(isNatList(X)) mark(isNat(X)) => active(isNat(X)) mark(0) => active(0) mark(s(X)) => active(s(mark(X))) mark(length(X)) => active(length(mark(X))) mark(zeros) => active(zeros) mark(cons(X, Y)) => active(cons(mark(X), Y)) mark(nil) => active(nil) mark(take(X, Y)) => active(take(mark(X), mark(Y))) mark(uTake1(X)) => active(uTake1(mark(X))) mark(uTake2(X, Y, Z, U)) => active(uTake2(mark(X), Y, Z, U)) mark(uLength(X, Y)) => active(uLength(mark(X), Y)) and(mark(X), Y) => and(X, Y) and(X, mark(Y)) => and(X, Y) and(active(X), Y) => and(X, Y) and(X, active(Y)) => and(X, Y) isNatIList(mark(X)) => isNatIList(X) isNatIList(active(X)) => isNatIList(X) isNatList(mark(X)) => isNatList(X) isNatList(active(X)) => isNatList(X) isNat(mark(X)) => isNat(X) isNat(active(X)) => isNat(X) s(mark(X)) => s(X) s(active(X)) => s(X) length(mark(X)) => length(X) length(active(X)) => length(X) cons(mark(X), Y) => cons(X, Y) cons(X, mark(Y)) => cons(X, Y) cons(active(X), Y) => cons(X, Y) cons(X, active(Y)) => cons(X, Y) take(mark(X), Y) => take(X, Y) take(X, mark(Y)) => take(X, Y) take(active(X), Y) => take(X, Y) take(X, active(Y)) => take(X, Y) uTake1(mark(X)) => uTake1(X) uTake1(active(X)) => uTake1(X) uTake2(mark(X), Y, Z, U) => uTake2(X, Y, Z, U) uTake2(X, mark(Y), Z, U) => uTake2(X, Y, Z, U) uTake2(X, Y, mark(Z), U) => uTake2(X, Y, Z, U) uTake2(X, Y, Z, mark(U)) => uTake2(X, Y, Z, U) uTake2(active(X), Y, Z, U) => uTake2(X, Y, Z, U) uTake2(X, active(Y), Z, U) => uTake2(X, Y, Z, U) uTake2(X, Y, active(Z), U) => uTake2(X, Y, Z, U) uTake2(X, Y, Z, active(U)) => uTake2(X, Y, Z, U) uLength(mark(X), Y) => uLength(X, Y) uLength(X, mark(Y)) => uLength(X, Y) uLength(active(X), Y) => uLength(X, Y) uLength(X, active(Y)) => uLength(X, Y)