We consider the system iterative. Alphabet: a : [] --> o b : [] --> o f : [o * o -> o] --> o g : [o * o * o -> o] --> o Rules: g(x, y, h) => f(f(x, h), h) f(x, h) => b b => a f(b, /\x.g(x, x, h)) => g(f(a, /\y.g(y, y, h)), f(b, /\z.b), h) This AFS is converted to an AFSM simply by replacing all free variables by meta-variables (with arity 0). We observe that the rules contain a first-order subset: b => a Moreover, the system is finitely branching. Thus, by [Kop12, Thm. 7.55], we may omit all first-order dependency pairs from the dependency pair problem (DP(R), R) if this first-order part is Ce-terminating when seen as a many-sorted first-order TRS. According to the external first-order termination prover, this system is indeed Ce-terminating: || proof of resources/system.trs || # AProVE Commit ID: d84c10301d352dfd14de2104819581f4682260f5 fuhs 20130616 || || || Termination w.r.t. Q of the given QTRS could be proven: || || (0) QTRS || (1) QTRSRRRProof [EQUIVALENT] || (2) QTRS || (3) RisEmptyProof [EQUIVALENT] || (4) YES || || || ---------------------------------------- || || (0) || Obligation: || Q restricted rewrite system: || The TRS R consists of the following rules: || || b -> a || ~PAIR(%X, %Y) -> %X || ~PAIR(%X, %Y) -> %Y || || Q is empty. || || ---------------------------------------- || || (1) QTRSRRRProof (EQUIVALENT) || Used ordering: || Polynomial interpretation [POLO]: || || POL(a) = 1 || POL(b) = 2 || POL(~PAIR(x_1, x_2)) = 2 + x_1 + x_2 || With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: || || b -> a || ~PAIR(%X, %Y) -> %X || ~PAIR(%X, %Y) -> %Y || || || || || ---------------------------------------- || || (2) || Obligation: || Q restricted rewrite system: || R is empty. || Q is empty. || || ---------------------------------------- || || (3) RisEmptyProof (EQUIVALENT) || The TRS R is empty. Hence, termination is trivially proven. || ---------------------------------------- || || (4) || YES || We use the dependency pair framework as described in [Kop12, Ch. 6/7], with dynamic dependency pairs. We thus obtain the following dependency pair problem (P_0, R_0, minimal, all): Dependency Pairs P_0: 0] g#(X, Y, F) =#> f#(f(X, F), F) 1] g#(X, Y, F) =#> f#(X, F) 2] f#(X, F) =#> b# 3] f#(b, /\x.g(x, x, F)) =#> g#(f(a, /\y.g(y, y, F)), f(b, /\z.b), F) 4] f#(b, /\x.g(x, x, F)) =#> f#(a, /\y.g(y, y, F)) 5] f#(b, /\x.g(x, x, F)) =#> g#(y, y, F) 6] f#(b, /\x.g(x, x, F)) =#> f#(b, /\y.b) 7] f#(b, /\x.g(x, x, F)) =#> b# 8] f#(b, /\x.g(x, x, F)) =#> b# Rules R_0: g(X, Y, F) => f(f(X, F), F) f(X, F) => b b => a f(b, /\x.g(x, x, F)) => g(f(a, /\y.g(y, y, F)), f(b, /\z.b), F) Thus, the original system is terminating if (P_0, R_0, minimal, all) is finite. We consider the dependency pair problem (P_0, R_0, minimal, all). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : 2, 3, 4, 5, 6, 7, 8 * 1 : 2, 3, 4, 5, 6, 7, 8 * 2 : * 3 : 0, 1 * 4 : 2 * 5 : * 6 : 2 * 7 : * 8 : This graph has the following strongly connected components: P_1: g#(X, Y, F) =#> f#(f(X, F), F) g#(X, Y, F) =#> f#(X, F) f#(b, /\x.g(x, x, F)) =#> g#(f(a, /\y.g(y, y, F)), f(b, /\z.b), F) By [Kop12, Thm. 7.31], we may replace any dependency pair problem (P_0, R_0, m, f) by (P_1, R_0, m, f). Thus, the original system is terminating if (P_1, R_0, minimal, all) is finite. We consider the dependency pair problem (P_1, R_0, minimal, all). We apply the subterm criterion with the following projection function: nu(f#) = 2 nu(g#) = 3 Thus, we can orient the dependency pairs as follows: nu(g#(X, Y, F)) = F = F = nu(f#(f(X, F), F)) nu(g#(X, Y, F)) = F = F = nu(f#(X, F)) nu(f#(b, /\x.g(x, x, F))) = /\y.g(y, y, F) |> F = nu(g#(f(a, /\x.g(x, x, F)), f(b, /\z.b), F)) By [FuhKop19, Thm. 61], we may replace a dependency pair problem (P_1, R_0, minimal, f) by (P_2, R_0, minimal, f), where P_2 contains: g#(X, Y, F) =#> f#(f(X, F), F) g#(X, Y, F) =#> f#(X, F) Thus, the original system is terminating if (P_2, R_0, minimal, all) is finite. We consider the dependency pair problem (P_2, R_0, minimal, all). We place the elements of P in a dependency graph approximation G (see e.g. [Kop12, Thm. 7.27, 7.29], as follows: * 0 : * 1 : This graph has no strongly connected components. By [Kop12, Thm. 7.31], this implies finiteness of the dependency pair problem. As all dependency pair problems were succesfully simplified with sound (and complete) processors until nothing remained, we conclude termination. +++ Citations +++ [FuhKop19] C. Fuhs, and C. Kop. A static higher-order dependency pair framework. In Proceedings of ESOP 2019, 2019. [Kop12] C. Kop. Higher Order Termination. PhD Thesis, 2012.