/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 app : [o * o] --> o cons : [o * o] --> o empty : [o] --> o f : [o * o] --> o false : [] --> o fstsplit : [o * o] --> o if1 : [o * o * o] --> o if2 : [o * o * o] --> o if3 : [o * o * o] --> o length : [o] --> o leq : [o * o] --> o map!6220f : [o * o] --> o nil : [] --> o process : [o * o] --> o s : [o] --> o self : [] --> o sndsplit : [o * o] --> o true : [] --> o fstsplit(0, X) => nil fstsplit(s(X), nil) => nil fstsplit(s(X), cons(Y, Z)) => cons(Y, fstsplit(X, Z)) sndsplit(0, X) => X sndsplit(s(X), nil) => nil sndsplit(s(X), cons(Y, Z)) => sndsplit(X, Z) empty(nil) => true empty(cons(X, Y)) => false leq(0, X) => true leq(s(X), 0) => false leq(s(X), s(Y)) => leq(X, Y) length(nil) => 0 length(cons(X, Y)) => s(length(Y)) app(nil, X) => X app(cons(X, Y), Z) => cons(X, app(Y, Z)) map!6220f(X, nil) => nil map!6220f(X, cons(Y, Z)) => app(f(X, Y), map!6220f(X, Z)) process(X, Y) => if1(X, Y, leq(Y, length(X))) if1(X, Y, true) => if2(X, Y, empty(fstsplit(Y, X))) if1(X, Y, false) => if3(X, Y, empty(fstsplit(Y, app(map!6220f(self, nil), X)))) if2(X, Y, false) => process(app(map!6220f(self, nil), sndsplit(Y, X)), Y) if3(X, Y, false) => process(sndsplit(Y, app(map!6220f(self, nil), X)), Y) As the system is orthogonal, it is terminating if it is innermost terminating by [Gra95]. Then, by [FuhGieParSchSwi11], it suffices to prove (innermost) termination of the typed system, with sort annotations chosen to respect the rules, as follows: 0 : [] --> qf app : [xh * xh] --> xh cons : [ra * xh] --> xh empty : [xh] --> wg f : [qg * ra] --> xh false : [] --> wg fstsplit : [qf * xh] --> xh if1 : [xh * qf * wg] --> zh if2 : [xh * qf * wg] --> zh if3 : [xh * qf * wg] --> zh length : [xh] --> qf leq : [qf * qf] --> wg map!6220f : [qg * xh] --> xh nil : [] --> xh process : [xh * qf] --> zh s : [qf] --> qf self : [] --> qg sndsplit : [qf * xh] --> xh true : [] --> wg +++ Citations +++ [FuhGieParSchSwi11] C. Fuhs, J. Giesl, M. Parting, P. Schneider-Kamp, and S. Swiderski. Proving Termination by Dependency Pairs and Inductive Theorem Proving. In volume 47(2) of Journal of Automated Reasoning. 133--160, 2011. [Gra95] B. Gramlich. Abstract Relations Between Restricted Termination and Confluence Properties of Rewrite Systems. In volume 24(1-2) of Fundamentae Informaticae. 3--23, 1995.