We consider the system 02Ackermann. Alphabet: ack : [N * N] --> N s : [N] --> N z : [] --> N Rules: ack(z, x) => s(x) ack(s(x), z) => ack(x, s(z)) ack(s(x), s(y)) => ack(x, ack(s(x), y)) This AFS is converted to an AFSM simply by replacing all free variables by meta-variables (with arity 0). We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): ack(z, X) >? s(X) ack(s(X), z) >? ack(X, s(z)) ack(s(X), s(Y)) >? ack(X, ack(s(X), Y)) We use a recursive path ordering as defined in [Kop12, Chapter 5]. We choose Lex = {ack} and Mul = {s, z}, and the following precedence: ack > s > z With these choices, we have: 1] ack(z, X) >= s(X) because [2], by (Star) 2] ack*(z, X) >= s(X) because ack > s and [3], by (Copy) 3] ack*(z, X) >= X because [4], by (Select) 4] X >= X by (Meta) 5] ack(s(X), z) > ack(X, s(z)) because [6], by definition 6] ack*(s(X), z) >= ack(X, s(z)) because [7], [10] and [12], by (Stat) 7] s(X) > X because [8], by definition 8] s*(X) >= X because [9], by (Select) 9] X >= X by (Meta) 10] ack*(s(X), z) >= X because [11], by (Select) 11] s(X) >= X because [8], by (Star) 12] ack*(s(X), z) >= s(z) because ack > s and [13], by (Copy) 13] ack*(s(X), z) >= z because [14], by (Select) 14] s(X) >= z because [15], by (Star) 15] s*(X) >= z because s > z, by (Copy) 16] ack(s(X), s(Y)) >= ack(X, ack(s(X), Y)) because [17], by (Star) 17] ack*(s(X), s(Y)) >= ack(X, ack(s(X), Y)) because [18], [21] and [23], by (Stat) 18] s(X) > X because [19], by definition 19] s*(X) >= X because [20], by (Select) 20] X >= X by (Meta) 21] ack*(s(X), s(Y)) >= X because [22], by (Select) 22] s(X) >= X because [19], by (Star) 23] ack*(s(X), s(Y)) >= ack(s(X), Y) because [24], [26], [29] and [30], by (Stat) 24] s(X) >= s(X) because s in Mul and [25], by (Fun) 25] X >= X by (Meta) 26] s(Y) > Y because [27], by definition 27] s*(Y) >= Y because [28], by (Select) 28] Y >= Y by (Meta) 29] ack*(s(X), s(Y)) >= s(X) because [24], by (Select) 30] ack*(s(X), s(Y)) >= Y because [31], by (Select) 31] s(Y) >= Y because [27], by (Star) We can thus remove the following rules: ack(s(X), z) => ack(X, s(z)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): ack(z, X) >? s(X) ack(s(X), s(Y)) >? ack(X, ack(s(X), Y)) We use a recursive path ordering as defined in [Kop12, Chapter 5]. We choose Lex = {ack} and Mul = {s, z}, and the following precedence: z > ack > s With these choices, we have: 1] ack(z, X) >= s(X) because [2], by (Star) 2] ack*(z, X) >= s(X) because ack > s and [3], by (Copy) 3] ack*(z, X) >= X because [4], by (Select) 4] X >= X by (Meta) 5] ack(s(X), s(Y)) > ack(X, ack(s(X), Y)) because [6], by definition 6] ack*(s(X), s(Y)) >= ack(X, ack(s(X), Y)) because [7], [10] and [12], by (Stat) 7] s(X) > X because [8], by definition 8] s*(X) >= X because [9], by (Select) 9] X >= X by (Meta) 10] ack*(s(X), s(Y)) >= X because [11], by (Select) 11] s(X) >= X because [8], by (Star) 12] ack*(s(X), s(Y)) >= ack(s(X), Y) because [13], [15], [18] and [19], by (Stat) 13] s(X) >= s(X) because s in Mul and [14], by (Fun) 14] X >= X by (Meta) 15] s(Y) > Y because [16], by definition 16] s*(Y) >= Y because [17], by (Select) 17] Y >= Y by (Meta) 18] ack*(s(X), s(Y)) >= s(X) because [13], by (Select) 19] ack*(s(X), s(Y)) >= Y because [20], by (Select) 20] s(Y) >= Y because [16], by (Star) We can thus remove the following rules: ack(s(X), s(Y)) => ack(X, ack(s(X), Y)) We use rule removal, following [Kop12, Theorem 2.23]. This gives the following requirements (possibly using Theorems 2.25 and 2.26 in [Kop12]): ack(z, X) >? s(X) We use a recursive path ordering as defined in [Kop12, Chapter 5]. We choose Lex = {} and Mul = {ack, s, z}, and the following precedence: ack = s > z With these choices, we have: 1] ack(z, X) > s(X) because [2], by definition 2] ack*(z, X) >= s(X) because ack = s, ack in Mul and [3], by (Stat) 3] X >= X by (Meta) We can thus remove the following rules: ack(z, X) => s(X) 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.