YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination w.r.t. Q of the given QTRS could be proven: (0) QTRS (1) DependencyPairsProof [EQUIVALENT, 0 ms] (2) QDP (3) DependencyGraphProof [EQUIVALENT, 0 ms] (4) AND (5) QDP (6) MNOCProof [EQUIVALENT, 0 ms] (7) QDP (8) UsableRulesProof [EQUIVALENT, 0 ms] (9) QDP (10) QReductionProof [EQUIVALENT, 0 ms] (11) QDP (12) MRRProof [EQUIVALENT, 1 ms] (13) QDP (14) PisEmptyProof [EQUIVALENT, 0 ms] (15) YES (16) QDP (17) MNOCProof [EQUIVALENT, 0 ms] (18) QDP (19) UsableRulesProof [EQUIVALENT, 0 ms] (20) QDP (21) QReductionProof [EQUIVALENT, 0 ms] (22) QDP (23) QDPSizeChangeProof [EQUIVALENT, 0 ms] (24) YES (25) QDP (26) MNOCProof [EQUIVALENT, 0 ms] (27) QDP (28) UsableRulesProof [EQUIVALENT, 0 ms] (29) QDP (30) QReductionProof [EQUIVALENT, 0 ms] (31) QDP (32) TransformationProof [EQUIVALENT, 0 ms] (33) QDP (34) DependencyGraphProof [EQUIVALENT, 0 ms] (35) QDP (36) UsableRulesProof [EQUIVALENT, 0 ms] (37) QDP (38) QReductionProof [EQUIVALENT, 0 ms] (39) QDP (40) TransformationProof [EQUIVALENT, 0 ms] (41) QDP (42) UsableRulesProof [EQUIVALENT, 0 ms] (43) QDP (44) TransformationProof [EQUIVALENT, 0 ms] (45) QDP (46) UsableRulesProof [EQUIVALENT, 0 ms] (47) QDP (48) QReductionProof [EQUIVALENT, 0 ms] (49) QDP (50) TransformationProof [EQUIVALENT, 0 ms] (51) QDP (52) TransformationProof [EQUIVALENT, 0 ms] (53) QDP (54) QDPSizeChangeProof [EQUIVALENT, 0 ms] (55) YES ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: double(x) -> permute(x, x, a) permute(x, y, a) -> permute(isZero(x), x, b) permute(false, x, b) -> permute(ack(x, x), p(x), c) permute(true, x, b) -> 0 permute(y, x, c) -> s(s(permute(x, y, a))) p(0) -> 0 p(s(x)) -> x ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, s(0)) -> s(x) plus(x, 0) -> x isZero(0) -> true isZero(s(x)) -> false Q is empty. ---------------------------------------- (1) DependencyPairsProof (EQUIVALENT) Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. ---------------------------------------- (2) Obligation: Q DP problem: The TRS P consists of the following rules: DOUBLE(x) -> PERMUTE(x, x, a) PERMUTE(x, y, a) -> PERMUTE(isZero(x), x, b) PERMUTE(x, y, a) -> ISZERO(x) PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) PERMUTE(false, x, b) -> ACK(x, x) PERMUTE(false, x, b) -> P(x) PERMUTE(y, x, c) -> PERMUTE(x, y, a) ACK(0, x) -> PLUS(x, s(0)) ACK(s(x), 0) -> ACK(x, s(0)) ACK(s(x), s(y)) -> ACK(x, ack(s(x), y)) ACK(s(x), s(y)) -> ACK(s(x), y) PLUS(s(x), y) -> PLUS(x, s(y)) PLUS(x, s(s(y))) -> PLUS(s(x), y) The TRS R consists of the following rules: double(x) -> permute(x, x, a) permute(x, y, a) -> permute(isZero(x), x, b) permute(false, x, b) -> permute(ack(x, x), p(x), c) permute(true, x, b) -> 0 permute(y, x, c) -> s(s(permute(x, y, a))) p(0) -> 0 p(s(x)) -> x ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, s(0)) -> s(x) plus(x, 0) -> x isZero(0) -> true isZero(s(x)) -> false Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (3) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 3 SCCs with 5 less nodes. ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Q DP problem: The TRS P consists of the following rules: PLUS(x, s(s(y))) -> PLUS(s(x), y) PLUS(s(x), y) -> PLUS(x, s(y)) The TRS R consists of the following rules: double(x) -> permute(x, x, a) permute(x, y, a) -> permute(isZero(x), x, b) permute(false, x, b) -> permute(ack(x, x), p(x), c) permute(true, x, b) -> 0 permute(y, x, c) -> s(s(permute(x, y, a))) p(0) -> 0 p(s(x)) -> x ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, s(0)) -> s(x) plus(x, 0) -> x isZero(0) -> true isZero(s(x)) -> false Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (6) MNOCProof (EQUIVALENT) We use the modular non-overlap check [LPAR04] to enlarge Q to all left-hand sides of R. ---------------------------------------- (7) Obligation: Q DP problem: The TRS P consists of the following rules: PLUS(x, s(s(y))) -> PLUS(s(x), y) PLUS(s(x), y) -> PLUS(x, s(y)) The TRS R consists of the following rules: double(x) -> permute(x, x, a) permute(x, y, a) -> permute(isZero(x), x, b) permute(false, x, b) -> permute(ack(x, x), p(x), c) permute(true, x, b) -> 0 permute(y, x, c) -> s(s(permute(x, y, a))) p(0) -> 0 p(s(x)) -> x ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, s(0)) -> s(x) plus(x, 0) -> x isZero(0) -> true isZero(s(x)) -> false The set Q consists of the following terms: double(x0) permute(x0, x1, a) permute(false, x0, b) permute(true, x0, b) permute(x0, x1, c) p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (8) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: PLUS(x, s(s(y))) -> PLUS(s(x), y) PLUS(s(x), y) -> PLUS(x, s(y)) R is empty. The set Q consists of the following terms: double(x0) permute(x0, x1, a) permute(false, x0, b) permute(true, x0, b) permute(x0, x1, c) p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (10) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. double(x0) permute(x0, x1, a) permute(false, x0, b) permute(true, x0, b) permute(x0, x1, c) p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) ---------------------------------------- (11) Obligation: Q DP problem: The TRS P consists of the following rules: PLUS(x, s(s(y))) -> PLUS(s(x), y) PLUS(s(x), y) -> PLUS(x, s(y)) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (12) MRRProof (EQUIVALENT) By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented. Strictly oriented dependency pairs: PLUS(x, s(s(y))) -> PLUS(s(x), y) PLUS(s(x), y) -> PLUS(x, s(y)) Used ordering: Knuth-Bendix order [KBO] with precedence:s_1 > PLUS_2 and weight map: s_1=1 PLUS_2=0 The variable weight is 1 ---------------------------------------- (13) Obligation: Q DP problem: P is empty. R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (14) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (15) YES ---------------------------------------- (16) Obligation: Q DP problem: The TRS P consists of the following rules: ACK(s(x), s(y)) -> ACK(x, ack(s(x), y)) ACK(s(x), 0) -> ACK(x, s(0)) ACK(s(x), s(y)) -> ACK(s(x), y) The TRS R consists of the following rules: double(x) -> permute(x, x, a) permute(x, y, a) -> permute(isZero(x), x, b) permute(false, x, b) -> permute(ack(x, x), p(x), c) permute(true, x, b) -> 0 permute(y, x, c) -> s(s(permute(x, y, a))) p(0) -> 0 p(s(x)) -> x ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, s(0)) -> s(x) plus(x, 0) -> x isZero(0) -> true isZero(s(x)) -> false Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (17) MNOCProof (EQUIVALENT) We use the modular non-overlap check [LPAR04] to enlarge Q to all left-hand sides of R. ---------------------------------------- (18) Obligation: Q DP problem: The TRS P consists of the following rules: ACK(s(x), s(y)) -> ACK(x, ack(s(x), y)) ACK(s(x), 0) -> ACK(x, s(0)) ACK(s(x), s(y)) -> ACK(s(x), y) The TRS R consists of the following rules: double(x) -> permute(x, x, a) permute(x, y, a) -> permute(isZero(x), x, b) permute(false, x, b) -> permute(ack(x, x), p(x), c) permute(true, x, b) -> 0 permute(y, x, c) -> s(s(permute(x, y, a))) p(0) -> 0 p(s(x)) -> x ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, s(0)) -> s(x) plus(x, 0) -> x isZero(0) -> true isZero(s(x)) -> false The set Q consists of the following terms: double(x0) permute(x0, x1, a) permute(false, x0, b) permute(true, x0, b) permute(x0, x1, c) p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (19) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (20) Obligation: Q DP problem: The TRS P consists of the following rules: ACK(s(x), s(y)) -> ACK(x, ack(s(x), y)) ACK(s(x), 0) -> ACK(x, s(0)) ACK(s(x), s(y)) -> ACK(s(x), y) The TRS R consists of the following rules: ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) ack(0, x) -> plus(x, s(0)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: double(x0) permute(x0, x1, a) permute(false, x0, b) permute(true, x0, b) permute(x0, x1, c) p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (21) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. double(x0) permute(x0, x1, a) permute(false, x0, b) permute(true, x0, b) permute(x0, x1, c) p(0) p(s(x0)) isZero(0) isZero(s(x0)) ---------------------------------------- (22) Obligation: Q DP problem: The TRS P consists of the following rules: ACK(s(x), s(y)) -> ACK(x, ack(s(x), y)) ACK(s(x), 0) -> ACK(x, s(0)) ACK(s(x), s(y)) -> ACK(s(x), y) The TRS R consists of the following rules: ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) ack(0, x) -> plus(x, s(0)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (23) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *ACK(s(x), 0) -> ACK(x, s(0)) The graph contains the following edges 1 > 1 *ACK(s(x), s(y)) -> ACK(x, ack(s(x), y)) The graph contains the following edges 1 > 1 *ACK(s(x), s(y)) -> ACK(s(x), y) The graph contains the following edges 1 >= 1, 2 > 2 ---------------------------------------- (24) YES ---------------------------------------- (25) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(x, y, a) -> PERMUTE(isZero(x), x, b) The TRS R consists of the following rules: double(x) -> permute(x, x, a) permute(x, y, a) -> permute(isZero(x), x, b) permute(false, x, b) -> permute(ack(x, x), p(x), c) permute(true, x, b) -> 0 permute(y, x, c) -> s(s(permute(x, y, a))) p(0) -> 0 p(s(x)) -> x ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, s(0)) -> s(x) plus(x, 0) -> x isZero(0) -> true isZero(s(x)) -> false Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (26) MNOCProof (EQUIVALENT) We use the modular non-overlap check [LPAR04] to enlarge Q to all left-hand sides of R. ---------------------------------------- (27) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(x, y, a) -> PERMUTE(isZero(x), x, b) The TRS R consists of the following rules: double(x) -> permute(x, x, a) permute(x, y, a) -> permute(isZero(x), x, b) permute(false, x, b) -> permute(ack(x, x), p(x), c) permute(true, x, b) -> 0 permute(y, x, c) -> s(s(permute(x, y, a))) p(0) -> 0 p(s(x)) -> x ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, s(0)) -> s(x) plus(x, 0) -> x isZero(0) -> true isZero(s(x)) -> false The set Q consists of the following terms: double(x0) permute(x0, x1, a) permute(false, x0, b) permute(true, x0, b) permute(x0, x1, c) p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (28) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (29) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(x, y, a) -> PERMUTE(isZero(x), x, b) The TRS R consists of the following rules: isZero(0) -> true isZero(s(x)) -> false ack(0, x) -> plus(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) p(0) -> 0 p(s(x)) -> x plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: double(x0) permute(x0, x1, a) permute(false, x0, b) permute(true, x0, b) permute(x0, x1, c) p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (30) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. double(x0) permute(x0, x1, a) permute(false, x0, b) permute(true, x0, b) permute(x0, x1, c) ---------------------------------------- (31) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(x, y, a) -> PERMUTE(isZero(x), x, b) The TRS R consists of the following rules: isZero(0) -> true isZero(s(x)) -> false ack(0, x) -> plus(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) p(0) -> 0 p(s(x)) -> x plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (32) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule PERMUTE(x, y, a) -> PERMUTE(isZero(x), x, b) at position [0] we obtained the following new rules [LPAR04]: (PERMUTE(0, y1, a) -> PERMUTE(true, 0, b),PERMUTE(0, y1, a) -> PERMUTE(true, 0, b)) (PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b),PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b)) ---------------------------------------- (33) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(0, y1, a) -> PERMUTE(true, 0, b) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) The TRS R consists of the following rules: isZero(0) -> true isZero(s(x)) -> false ack(0, x) -> plus(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) p(0) -> 0 p(s(x)) -> x plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (34) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (35) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) The TRS R consists of the following rules: isZero(0) -> true isZero(s(x)) -> false ack(0, x) -> plus(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) p(0) -> 0 p(s(x)) -> x plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (36) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (37) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) The TRS R consists of the following rules: ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) p(0) -> 0 p(s(x)) -> x plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) isZero(0) isZero(s(x0)) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (38) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. isZero(0) isZero(s(x0)) ---------------------------------------- (39) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) The TRS R consists of the following rules: ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) p(0) -> 0 p(s(x)) -> x plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (40) TransformationProof (EQUIVALENT) By instantiating [LPAR04] the rule PERMUTE(false, x, b) -> PERMUTE(ack(x, x), p(x), c) we obtained the following new rules [LPAR04]: (PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), p(s(z0)), c),PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), p(s(z0)), c)) ---------------------------------------- (41) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), p(s(z0)), c) The TRS R consists of the following rules: ack(0, x) -> plus(x, s(0)) ack(s(x), 0) -> ack(x, s(0)) ack(s(x), s(y)) -> ack(x, ack(s(x), y)) p(0) -> 0 p(s(x)) -> x plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (42) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (43) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), p(s(z0)), c) The TRS R consists of the following rules: ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) p(s(x)) -> x ack(0, x) -> plus(x, s(0)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (44) TransformationProof (EQUIVALENT) By rewriting [LPAR04] the rule PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), p(s(z0)), c) at position [1] we obtained the following new rules [LPAR04]: (PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), z0, c),PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), z0, c)) ---------------------------------------- (45) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), z0, c) The TRS R consists of the following rules: ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) p(s(x)) -> x ack(0, x) -> plus(x, s(0)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (46) UsableRulesProof (EQUIVALENT) As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (47) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), z0, c) The TRS R consists of the following rules: ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) ack(0, x) -> plus(x, s(0)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: p(0) p(s(x0)) ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (48) QReductionProof (EQUIVALENT) We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. p(0) p(s(x0)) ---------------------------------------- (49) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), z0, c) The TRS R consists of the following rules: ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) ack(0, x) -> plus(x, s(0)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (50) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule PERMUTE(false, s(z0), b) -> PERMUTE(ack(s(z0), s(z0)), z0, c) at position [0] we obtained the following new rules [LPAR04]: (PERMUTE(false, s(x0), b) -> PERMUTE(ack(x0, ack(s(x0), x0)), x0, c),PERMUTE(false, s(x0), b) -> PERMUTE(ack(x0, ack(s(x0), x0)), x0, c)) ---------------------------------------- (51) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(y, x, c) -> PERMUTE(x, y, a) PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, s(x0), b) -> PERMUTE(ack(x0, ack(s(x0), x0)), x0, c) The TRS R consists of the following rules: ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) ack(0, x) -> plus(x, s(0)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (52) TransformationProof (EQUIVALENT) By forward instantiating [JAR06] the rule PERMUTE(y, x, c) -> PERMUTE(x, y, a) we obtained the following new rules [LPAR04]: (PERMUTE(x0, s(y_0), c) -> PERMUTE(s(y_0), x0, a),PERMUTE(x0, s(y_0), c) -> PERMUTE(s(y_0), x0, a)) ---------------------------------------- (53) Obligation: Q DP problem: The TRS P consists of the following rules: PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) PERMUTE(false, s(x0), b) -> PERMUTE(ack(x0, ack(s(x0), x0)), x0, c) PERMUTE(x0, s(y_0), c) -> PERMUTE(s(y_0), x0, a) The TRS R consists of the following rules: ack(s(x), s(y)) -> ack(x, ack(s(x), y)) ack(s(x), 0) -> ack(x, s(0)) ack(0, x) -> plus(x, s(0)) plus(0, y) -> y plus(s(x), y) -> plus(x, s(y)) plus(x, s(0)) -> s(x) plus(x, s(s(y))) -> s(plus(s(x), y)) plus(x, 0) -> x The set Q consists of the following terms: ack(0, x0) ack(s(x0), 0) ack(s(x0), s(x1)) plus(0, x0) plus(s(x0), x1) plus(x0, s(s(x1))) plus(x0, s(0)) plus(x0, 0) We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (54) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *PERMUTE(false, s(x0), b) -> PERMUTE(ack(x0, ack(s(x0), x0)), x0, c) The graph contains the following edges 2 > 2 *PERMUTE(x0, s(y_0), c) -> PERMUTE(s(y_0), x0, a) The graph contains the following edges 2 >= 1, 1 >= 2 *PERMUTE(s(x0), y1, a) -> PERMUTE(false, s(x0), b) The graph contains the following edges 1 >= 2 ---------------------------------------- (55) YES