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