/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. append : [o * o] --> o cons : [o * o] --> o dropLast : [o] --> o false : [] --> o if : [o * o * o * o] --> o isEmpty : [o] --> o last : [o] --> o nil : [] --> o rev : [o * o] --> o reverse : [o] --> o true : [] --> o isEmpty(nil) => true isEmpty(cons(X, Y)) => false last(cons(X, nil)) => X last(cons(X, cons(Y, Z))) => last(cons(Y, Z)) dropLast(nil) => nil dropLast(cons(X, nil)) => nil dropLast(cons(X, cons(Y, Z))) => cons(X, dropLast(cons(Y, Z))) append(nil, X) => X append(cons(X, Y), Z) => cons(X, append(Y, Z)) reverse(X) => rev(X, nil) rev(X, Y) => if(isEmpty(X), dropLast(X), append(Y, last(X)), Y) if(true, X, Y, Z) => Z if(false, X, Y, Z) => rev(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: append : [zd * zd] --> zd cons : [zd * zd] --> zd dropLast : [zd] --> zd false : [] --> ad if : [ad * zd * zd * zd] --> zd isEmpty : [zd] --> ad last : [zd] --> zd nil : [] --> zd rev : [zd * zd] --> zd reverse : [zd] --> zd true : [] --> ad +++ 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.