Term Rewriting System R: [x, y, z] minus(x, 0) -> x minus(s(x), s(y)) -> minus(x, y) double(0) -> 0 double(s(x)) -> s(s(double(x))) plus(0, y) -> y plus(s(x), y) -> s(plus(x, y)) plus(s(x), y) -> plus(x, s(y)) plus(s(x), y) -> s(plus(minus(x, y), double(y))) plus(s(plus(x, y)), z) -> s(plus(plus(x, y), z)) Termination of R to be shown. R contains the following Dependency Pairs: PLUS(s(x), y) -> PLUS(x, s(y)) PLUS(s(x), y) -> PLUS(x, y) PLUS(s(plus(x, y)), z) -> PLUS(plus(x, y), z) PLUS(s(x), y) -> PLUS(minus(x, y), double(y)) PLUS(s(x), y) -> MINUS(x, y) PLUS(s(x), y) -> DOUBLE(y) MINUS(s(x), s(y)) -> MINUS(x, y) DOUBLE(s(x)) -> DOUBLE(x) Furthermore, R contains three SCCs. SCC1: MINUS(s(x), s(y)) -> MINUS(x, y) Removing rules from R by ordering and analyzing Dependency Pairs, Usable Rules, and Usable Equations. This is possible by using the following (C_E-compatible) Polynomial ordering. Polynomial interpretation: POL(s(x_1)) = 1 + x_1 POL(MINUS(x_1, x_2)) = 1 + x_1 + x_2 The following Dependency Pairs can be deleted: MINUS(s(x), s(y)) -> MINUS(x, y) This transformation is resulting in no new subcycles. SCC2: DOUBLE(s(x)) -> DOUBLE(x) Removing rules from R by ordering and analyzing Dependency Pairs, Usable Rules, and Usable Equations. This is possible by using the following (C_E-compatible) Polynomial ordering. Polynomial interpretation: POL(s(x_1)) = 1 + x_1 POL(DOUBLE(x_1)) = 1 + x_1 The following Dependency Pairs can be deleted: DOUBLE(s(x)) -> DOUBLE(x) This transformation is resulting in no new subcycles. SCC3: PLUS(s(x), y) -> PLUS(minus(x, y), double(y)) PLUS(s(plus(x, y)), z) -> PLUS(plus(x, y), z) PLUS(s(x), y) -> PLUS(x, y) PLUS(s(x), y) -> PLUS(x, s(y)) On this Scc, a Narrowing SCC transformation can be performed. As a result of transforming the rule PLUS(s(plus(x, y)), z) -> PLUS(plus(x, y), z) five new Dependency Pairs are created: PLUS(s(plus(s(x''), y'')), z) -> PLUS(plus(x'', s(y'')), z) PLUS(s(plus(s(x''), y'')), z) -> PLUS(s(plus(x'', y'')), z) PLUS(s(plus(s(plus(x'', y'')), y0)), z) -> PLUS(s(plus(plus(x'', y''), y0)), z) PLUS(s(plus(0, y'')), z) -> PLUS(y'', z) PLUS(s(plus(s(x''), y'')), z) -> PLUS(s(plus(minus(x'', y''), double(y''))), z) The transformation is resulting in one subcycle: SCC3.Nar1: PLUS(s(plus(s(x''), y'')), z) -> PLUS(s(plus(minus(x'', y''), double(y''))), z) PLUS(s(plus(0, y'')), z) -> PLUS(y'', z) PLUS(s(plus(s(plus(x'', y'')), y0)), z) -> PLUS(s(plus(plus(x'', y''), y0)), z) PLUS(s(plus(s(x''), y'')), z) -> PLUS(s(plus(x'', y'')), z) PLUS(s(plus(s(x''), y'')), z) -> PLUS(plus(x'', s(y'')), z) PLUS(s(x), y) -> PLUS(x, y) PLUS(s(x), y) -> PLUS(x, s(y)) PLUS(s(x), y) -> PLUS(minus(x, y), double(y)) By using a polynomial ordering, at least one Dependency Pair of this SCC can be strictly oriented. Additionally, the following rules can be oriented: plus(s(x), y) -> plus(x, s(y)) plus(s(x), y) -> s(plus(x, y)) plus(s(plus(x, y)), z) -> s(plus(plus(x, y), z)) plus(0, y) -> y plus(s(x), y) -> s(plus(minus(x, y), double(y))) minus(s(x), s(y)) -> minus(x, y) minus(x, 0) -> x double(0) -> 0 double(s(x)) -> s(s(double(x))) Used ordering: Polynomial ordering with Polynomial interpretation: POL(plus(x_1, x_2)) = 1 + x_2 POL(s(x_1)) = x_1 POL(PLUS(x_1, x_2)) = 1 + x_1 POL(minus(x_1, x_2)) = x_1 POL(double(x_1)) = 0 POL(0) = 0 resulting in one subcycle. SCC3.Nar1.Polo1: PLUS(s(plus(s(plus(x'', y'')), y0)), z) -> PLUS(s(plus(plus(x'', y''), y0)), z) PLUS(s(plus(s(x''), y'')), z) -> PLUS(s(plus(x'', y'')), z) PLUS(s(plus(s(x''), y'')), z) -> PLUS(plus(x'', s(y'')), z) PLUS(s(x), y) -> PLUS(minus(x, y), double(y)) PLUS(s(x), y) -> PLUS(x, y) PLUS(s(x), y) -> PLUS(x, s(y)) PLUS(s(plus(s(x''), y'')), z) -> PLUS(s(plus(minus(x'', y''), double(y''))), z) At least one Dependency Pair of this SCC can be strictly oriented. The following rules can be oriented: plus(s(x), y) -> plus(x, s(y)) plus(s(x), y) -> s(plus(x, y)) plus(s(plus(x, y)), z) -> s(plus(plus(x, y), z)) plus(0, y) -> y plus(s(x), y) -> s(plus(minus(x, y), double(y))) minus(s(x), s(y)) -> minus(x, y) minus(x, 0) -> x double(0) -> 0 double(s(x)) -> s(s(double(x))) Used ordering: Lexicographic Path Order with Non-Strict Precedence with Quasi Precedence: PLUS > double > s plus > double > s resulting in no new SCCs. Used Argument Filtering System: ([PLUS(x_1, x_2) -> PLUS(x_1, x_2), s(x_1) -> s(x_1), plus(x_1, x_2) -> plus(x_1, x_2), minus(x_1, x_2) -> x_1, double(x_1) -> double(x_1)]) Termination of R successfully shown. Duration: 23.226 seconds.