/export/starexec/sandbox/solver/bin/starexec_run_FirstOrder /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES We consider the system theBenchmark. We are asked to determine termination of the following first-order TRS. if : [o * o * o] --> o if(if(X, Y, Z), U, V) => if(X, if(Y, U, V), if(Z, U, V)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): if(if(X, Y, Z), U, V) >? if(X, if(Y, U, V), if(Z, U, V)) about to try horpo We use a recursive path ordering as defined in [Kop12, Chapter 5]. Argument functions: [[if(x_1, x_2, x_3)]] = if(x_1, x_3, x_2) We choose Lex = {if} and Mul = {}, and the following precedence: if Taking the argument function into account, and fixing the greater / greater equal choices, the constraints can be denoted as follows: if(if(X, Y, Z), U, V) > if(X) (if(Y) U V) if(Z) With these choices, we have: 1] if(if(X, Y, Z), U, V) > if(X) (if(Y) U V) if(Z) because [2], by definition 2] if*(if(X, Y, Z), U, V) >= if(X) (if(Y) U V) if(Z) because [3], [6], [8] and [18], by (Stat) 3] if(X, Y, Z) > X because [4], by definition 4] if*(X, Y, Z) >= X because [5], by (Select) 5] X >= X by (Meta) 6] if*(if(X, Y, Z), U, V) >= X because [7], by (Select) 7] if(X, Y, Z) >= X because [4], by (Star) 8] if*(if(X, Y, Z), U, V) >= if(Y, U, V) because [9], [12], [14] and [16], by (Stat) 9] if(X, Y, Z) > Y because [10], by definition 10] if*(X, Y, Z) >= Y because [11], by (Select) 11] Y >= Y by (Meta) 12] if*(if(X, Y, Z), U, V) >= Y because [13], by (Select) 13] if(X, Y, Z) >= Y because [10], by (Star) 14] if*(if(X, Y, Z), U, V) >= U because [15], by (Select) 15] U >= U by (Meta) 16] if*(if(X, Y, Z), U, V) >= V because [17], by (Select) 17] V >= V by (Meta) 18] if*(if(X, Y, Z), U, V) >= if(Z, U, V) because [19], [22], [14] and [16], by (Stat) 19] if(X, Y, Z) > Z because [20], by definition 20] if*(X, Y, Z) >= Z because [21], by (Select) 21] Z >= Z by (Meta) 22] if*(if(X, Y, Z), U, V) >= Z because [23], by (Select) 23] if(X, Y, Z) >= Z because [20], by (Star) We can thus remove the following rules: if(if(X, Y, Z), U, V) => if(X, if(Y, U, V), if(Z, U, V)) All rules were succesfully removed. Thus, termination of the original system has been reduced to termination of the beta-rule, which is well-known to hold. +++ Citations +++ [Kop12] C. Kop. Higher Order Termination. PhD Thesis, 2012.