6.64/3.04 YES 6.64/3.06 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 6.64/3.06 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.64/3.06 6.64/3.06 6.64/3.06 Termination w.r.t. Q of the given QTRS could be proven: 6.64/3.06 6.64/3.06 (0) QTRS 6.64/3.06 (1) DependencyPairsProof [EQUIVALENT, 0 ms] 6.64/3.06 (2) QDP 6.64/3.06 (3) DependencyGraphProof [EQUIVALENT, 3 ms] 6.64/3.06 (4) AND 6.64/3.06 (5) QDP 6.64/3.06 (6) UsableRulesProof [EQUIVALENT, 0 ms] 6.64/3.06 (7) QDP 6.64/3.06 (8) QReductionProof [EQUIVALENT, 0 ms] 6.64/3.06 (9) QDP 6.64/3.06 (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] 6.64/3.06 (11) YES 6.64/3.06 (12) QDP 6.64/3.06 (13) UsableRulesProof [EQUIVALENT, 0 ms] 6.64/3.06 (14) QDP 6.64/3.06 (15) QReductionProof [EQUIVALENT, 0 ms] 6.64/3.06 (16) QDP 6.64/3.06 (17) QDPSizeChangeProof [EQUIVALENT, 0 ms] 6.64/3.06 (18) YES 6.64/3.06 (19) QDP 6.64/3.06 (20) UsableRulesProof [EQUIVALENT, 0 ms] 6.64/3.06 (21) QDP 6.64/3.06 (22) QReductionProof [EQUIVALENT, 0 ms] 6.64/3.06 (23) QDP 6.64/3.06 (24) TransformationProof [EQUIVALENT, 0 ms] 6.64/3.06 (25) QDP 6.64/3.06 (26) Induction-Processor [SOUND, 30 ms] 6.64/3.06 (27) AND 6.64/3.06 (28) QDP 6.64/3.06 (29) DependencyGraphProof [EQUIVALENT, 0 ms] 6.64/3.06 (30) TRUE 6.64/3.06 (31) QTRS 6.64/3.06 (32) QTRSRRRProof [EQUIVALENT, 0 ms] 6.64/3.06 (33) QTRS 6.64/3.06 (34) QTRSRRRProof [EQUIVALENT, 0 ms] 6.64/3.06 (35) QTRS 6.64/3.06 (36) RisEmptyProof [EQUIVALENT, 0 ms] 6.64/3.06 (37) YES 6.64/3.06 6.64/3.06 6.64/3.06 ---------------------------------------- 6.64/3.06 6.64/3.06 (0) 6.64/3.06 Obligation: 6.64/3.06 Q restricted rewrite system: 6.64/3.06 The TRS R consists of the following rules: 6.64/3.06 6.64/3.06 le(0, y) -> true 6.64/3.06 le(s(x), 0) -> false 6.64/3.06 le(s(x), s(y)) -> le(x, y) 6.64/3.06 minus(x, 0) -> x 6.64/3.06 minus(s(x), s(y)) -> minus(x, y) 6.64/3.06 mod(0, y) -> 0 6.64/3.06 mod(s(x), 0) -> 0 6.64/3.06 mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 6.64/3.06 if_mod(true, x, y) -> mod(minus(x, y), y) 6.64/3.06 if_mod(false, s(x), s(y)) -> s(x) 6.64/3.06 6.64/3.06 The set Q consists of the following terms: 6.64/3.06 6.64/3.06 le(0, x0) 6.64/3.06 le(s(x0), 0) 6.64/3.06 le(s(x0), s(x1)) 6.64/3.06 minus(x0, 0) 6.64/3.06 minus(s(x0), s(x1)) 6.64/3.06 mod(0, x0) 6.64/3.06 mod(s(x0), 0) 6.64/3.06 mod(s(x0), s(x1)) 6.64/3.06 if_mod(true, x0, x1) 6.64/3.06 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (1) DependencyPairsProof (EQUIVALENT) 6.64/3.07 Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (2) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 LE(s(x), s(y)) -> LE(x, y) 6.64/3.07 MINUS(s(x), s(y)) -> MINUS(x, y) 6.64/3.07 MOD(s(x), s(y)) -> IF_MOD(le(y, x), s(x), s(y)) 6.64/3.07 MOD(s(x), s(y)) -> LE(y, x) 6.64/3.07 IF_MOD(true, x, y) -> MOD(minus(x, y), y) 6.64/3.07 IF_MOD(true, x, y) -> MINUS(x, y) 6.64/3.07 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 le(0, y) -> true 6.64/3.07 le(s(x), 0) -> false 6.64/3.07 le(s(x), s(y)) -> le(x, y) 6.64/3.07 minus(x, 0) -> x 6.64/3.07 minus(s(x), s(y)) -> minus(x, y) 6.64/3.07 mod(0, y) -> 0 6.64/3.07 mod(s(x), 0) -> 0 6.64/3.07 mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 6.64/3.07 if_mod(true, x, y) -> mod(minus(x, y), y) 6.64/3.07 if_mod(false, s(x), s(y)) -> s(x) 6.64/3.07 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (3) DependencyGraphProof (EQUIVALENT) 6.64/3.07 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 3 SCCs with 2 less nodes. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (4) 6.64/3.07 Complex Obligation (AND) 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (5) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 MINUS(s(x), s(y)) -> MINUS(x, y) 6.64/3.07 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 le(0, y) -> true 6.64/3.07 le(s(x), 0) -> false 6.64/3.07 le(s(x), s(y)) -> le(x, y) 6.64/3.07 minus(x, 0) -> x 6.64/3.07 minus(s(x), s(y)) -> minus(x, y) 6.64/3.07 mod(0, y) -> 0 6.64/3.07 mod(s(x), 0) -> 0 6.64/3.07 mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 6.64/3.07 if_mod(true, x, y) -> mod(minus(x, y), y) 6.64/3.07 if_mod(false, s(x), s(y)) -> s(x) 6.64/3.07 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (6) UsableRulesProof (EQUIVALENT) 6.64/3.07 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. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (7) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 MINUS(s(x), s(y)) -> MINUS(x, y) 6.64/3.07 6.64/3.07 R is empty. 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (8) QReductionProof (EQUIVALENT) 6.64/3.07 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (9) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 MINUS(s(x), s(y)) -> MINUS(x, y) 6.64/3.07 6.64/3.07 R is empty. 6.64/3.07 Q is empty. 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (10) QDPSizeChangeProof (EQUIVALENT) 6.64/3.07 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. 6.64/3.07 6.64/3.07 From the DPs we obtained the following set of size-change graphs: 6.64/3.07 *MINUS(s(x), s(y)) -> MINUS(x, y) 6.64/3.07 The graph contains the following edges 1 > 1, 2 > 2 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (11) 6.64/3.07 YES 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (12) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 LE(s(x), s(y)) -> LE(x, y) 6.64/3.07 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 le(0, y) -> true 6.64/3.07 le(s(x), 0) -> false 6.64/3.07 le(s(x), s(y)) -> le(x, y) 6.64/3.07 minus(x, 0) -> x 6.64/3.07 minus(s(x), s(y)) -> minus(x, y) 6.64/3.07 mod(0, y) -> 0 6.64/3.07 mod(s(x), 0) -> 0 6.64/3.07 mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 6.64/3.07 if_mod(true, x, y) -> mod(minus(x, y), y) 6.64/3.07 if_mod(false, s(x), s(y)) -> s(x) 6.64/3.07 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (13) UsableRulesProof (EQUIVALENT) 6.64/3.07 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. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (14) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 LE(s(x), s(y)) -> LE(x, y) 6.64/3.07 6.64/3.07 R is empty. 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (15) QReductionProof (EQUIVALENT) 6.64/3.07 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (16) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 LE(s(x), s(y)) -> LE(x, y) 6.64/3.07 6.64/3.07 R is empty. 6.64/3.07 Q is empty. 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (17) QDPSizeChangeProof (EQUIVALENT) 6.64/3.07 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. 6.64/3.07 6.64/3.07 From the DPs we obtained the following set of size-change graphs: 6.64/3.07 *LE(s(x), s(y)) -> LE(x, y) 6.64/3.07 The graph contains the following edges 1 > 1, 2 > 2 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (18) 6.64/3.07 YES 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (19) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 MOD(s(x), s(y)) -> IF_MOD(le(y, x), s(x), s(y)) 6.64/3.07 IF_MOD(true, x, y) -> MOD(minus(x, y), y) 6.64/3.07 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 le(0, y) -> true 6.64/3.07 le(s(x), 0) -> false 6.64/3.07 le(s(x), s(y)) -> le(x, y) 6.64/3.07 minus(x, 0) -> x 6.64/3.07 minus(s(x), s(y)) -> minus(x, y) 6.64/3.07 mod(0, y) -> 0 6.64/3.07 mod(s(x), 0) -> 0 6.64/3.07 mod(s(x), s(y)) -> if_mod(le(y, x), s(x), s(y)) 6.64/3.07 if_mod(true, x, y) -> mod(minus(x, y), y) 6.64/3.07 if_mod(false, s(x), s(y)) -> s(x) 6.64/3.07 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (20) UsableRulesProof (EQUIVALENT) 6.64/3.07 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. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (21) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 MOD(s(x), s(y)) -> IF_MOD(le(y, x), s(x), s(y)) 6.64/3.07 IF_MOD(true, x, y) -> MOD(minus(x, y), y) 6.64/3.07 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 minus(x, 0) -> x 6.64/3.07 minus(s(x), s(y)) -> minus(x, y) 6.64/3.07 le(0, y) -> true 6.64/3.07 le(s(x), 0) -> false 6.64/3.07 le(s(x), s(y)) -> le(x, y) 6.64/3.07 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (22) QReductionProof (EQUIVALENT) 6.64/3.07 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 6.64/3.07 6.64/3.07 mod(0, x0) 6.64/3.07 mod(s(x0), 0) 6.64/3.07 mod(s(x0), s(x1)) 6.64/3.07 if_mod(true, x0, x1) 6.64/3.07 if_mod(false, s(x0), s(x1)) 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (23) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 MOD(s(x), s(y)) -> IF_MOD(le(y, x), s(x), s(y)) 6.64/3.07 IF_MOD(true, x, y) -> MOD(minus(x, y), y) 6.64/3.07 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 minus(x, 0) -> x 6.64/3.07 minus(s(x), s(y)) -> minus(x, y) 6.64/3.07 le(0, y) -> true 6.64/3.07 le(s(x), 0) -> false 6.64/3.07 le(s(x), s(y)) -> le(x, y) 6.64/3.07 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (24) TransformationProof (EQUIVALENT) 6.64/3.07 By instantiating [LPAR04] the rule IF_MOD(true, x, y) -> MOD(minus(x, y), y) we obtained the following new rules [LPAR04]: 6.64/3.07 6.64/3.07 (IF_MOD(true, s(z0), s(z1)) -> MOD(minus(s(z0), s(z1)), s(z1)),IF_MOD(true, s(z0), s(z1)) -> MOD(minus(s(z0), s(z1)), s(z1))) 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (25) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 MOD(s(x), s(y)) -> IF_MOD(le(y, x), s(x), s(y)) 6.64/3.07 IF_MOD(true, s(z0), s(z1)) -> MOD(minus(s(z0), s(z1)), s(z1)) 6.64/3.07 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 minus(x, 0) -> x 6.64/3.07 minus(s(x), s(y)) -> minus(x, y) 6.64/3.07 le(0, y) -> true 6.64/3.07 le(s(x), 0) -> false 6.64/3.07 le(s(x), s(y)) -> le(x, y) 6.64/3.07 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (26) Induction-Processor (SOUND) 6.64/3.07 6.64/3.07 This DP could be deleted by the Induction-Processor: 6.64/3.07 IF_MOD(true_renamed, s(z0), s(z1)) -> MOD(minus(s(z0), s(z1)), s(z1)) 6.64/3.07 6.64/3.07 6.64/3.07 This order was computed: 6.64/3.07 Polynomial interpretation [POLO]: 6.64/3.07 6.64/3.07 POL(0) = 1 6.64/3.07 POL(IF_MOD(x_1, x_2, x_3)) = x_2 6.64/3.07 POL(MOD(x_1, x_2)) = x_1 6.64/3.07 POL(false_renamed) = 1 6.64/3.07 POL(le(x_1, x_2)) = x_2 6.64/3.07 POL(minus(x_1, x_2)) = x_1 6.64/3.07 POL(s(x_1)) = 1 + x_1 6.64/3.07 POL(true_renamed) = 0 6.64/3.07 6.64/3.07 At least one of these decreasing rules is always used after the deleted DP: 6.64/3.07 minus(s(x''), s(y')) -> minus(x'', y') 6.64/3.07 6.64/3.07 6.64/3.07 The following formula is valid: 6.64/3.07 z2:sort[a0],z3:sort[a0].((~(z2=0)/\~(z3=0))->minus'(z2, z3)=true) 6.64/3.07 6.64/3.07 6.64/3.07 The transformed set: 6.64/3.07 minus'(x', 0) -> false 6.64/3.07 minus'(s(x''), s(y')) -> true 6.64/3.07 minus'(0, s(v11)) -> false 6.64/3.07 minus(x', 0) -> x' 6.64/3.07 minus(s(x''), s(y')) -> minus(x'', y') 6.64/3.07 le(0, y'') -> true_renamed 6.64/3.07 le(s(x1), 0) -> false_renamed 6.64/3.07 le(s(x2), s(y1)) -> le(x2, y1) 6.64/3.07 minus(0, s(v11)) -> 0 6.64/3.07 equal_bool(true, false) -> false 6.64/3.07 equal_bool(false, true) -> false 6.64/3.07 equal_bool(true, true) -> true 6.64/3.07 equal_bool(false, false) -> true 6.64/3.07 and(true, x) -> x 6.64/3.07 and(false, x) -> false 6.64/3.07 or(true, x) -> true 6.64/3.07 or(false, x) -> x 6.64/3.07 not(false) -> true 6.64/3.07 not(true) -> false 6.64/3.07 isa_true(true) -> true 6.64/3.07 isa_true(false) -> false 6.64/3.07 isa_false(true) -> false 6.64/3.07 isa_false(false) -> true 6.64/3.07 equal_sort[a0](0, 0) -> true 6.64/3.07 equal_sort[a0](0, s(v18)) -> false 6.64/3.07 equal_sort[a0](s(v19), 0) -> false 6.64/3.07 equal_sort[a0](s(v19), s(v20)) -> equal_sort[a0](v19, v20) 6.64/3.07 equal_sort[a19](true_renamed, true_renamed) -> true 6.64/3.07 equal_sort[a19](true_renamed, false_renamed) -> false 6.64/3.07 equal_sort[a19](false_renamed, true_renamed) -> false 6.64/3.07 equal_sort[a19](false_renamed, false_renamed) -> true 6.64/3.07 equal_sort[a24](witness_sort[a24], witness_sort[a24]) -> true 6.64/3.07 6.64/3.07 6.64/3.07 The proof given by the theorem prover: 6.64/3.07 The following output was given by the internal theorem prover:proof of internal 6.64/3.07 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.64/3.07 6.64/3.07 6.64/3.07 Partial correctness of the following Program 6.64/3.07 6.64/3.07 [x, v18, v19, v20, x', x'', y', v11, y'', x1, x2, y1] 6.64/3.07 equal_bool(true, false) -> false 6.64/3.07 equal_bool(false, true) -> false 6.64/3.07 equal_bool(true, true) -> true 6.64/3.07 equal_bool(false, false) -> true 6.64/3.07 true and x -> x 6.64/3.07 false and x -> false 6.64/3.07 true or x -> true 6.64/3.07 false or x -> x 6.64/3.07 not(false) -> true 6.64/3.07 not(true) -> false 6.64/3.07 isa_true(true) -> true 6.64/3.07 isa_true(false) -> false 6.64/3.07 isa_false(true) -> false 6.64/3.07 isa_false(false) -> true 6.64/3.07 equal_sort[a0](0, 0) -> true 6.64/3.07 equal_sort[a0](0, s(v18)) -> false 6.64/3.07 equal_sort[a0](s(v19), 0) -> false 6.64/3.07 equal_sort[a0](s(v19), s(v20)) -> equal_sort[a0](v19, v20) 6.64/3.07 equal_sort[a19](true_renamed, true_renamed) -> true 6.64/3.07 equal_sort[a19](true_renamed, false_renamed) -> false 6.64/3.07 equal_sort[a19](false_renamed, true_renamed) -> false 6.64/3.07 equal_sort[a19](false_renamed, false_renamed) -> true 6.64/3.07 equal_sort[a24](witness_sort[a24], witness_sort[a24]) -> true 6.64/3.07 minus'(x', 0) -> false 6.64/3.07 minus'(s(x''), s(y')) -> true 6.64/3.07 minus'(0, s(v11)) -> false 6.64/3.07 minus(x', 0) -> x' 6.64/3.07 minus(s(x''), s(y')) -> minus(x'', y') 6.64/3.07 minus(0, s(v11)) -> 0 6.64/3.07 le(0, y'') -> true_renamed 6.64/3.07 le(s(x1), 0) -> false_renamed 6.64/3.07 le(s(x2), s(y1)) -> le(x2, y1) 6.64/3.07 6.64/3.07 using the following formula: 6.64/3.07 z2:sort[a0],z3:sort[a0].((~(z2=0)/\~(z3=0))->minus'(z2, z3)=true) 6.64/3.07 6.64/3.07 could be successfully shown: 6.64/3.07 (0) Formula 6.64/3.07 (1) Induction by data structure [EQUIVALENT, 0 ms] 6.64/3.07 (2) AND 6.64/3.07 (3) Formula 6.64/3.07 (4) Symbolic evaluation [EQUIVALENT, 0 ms] 6.64/3.07 (5) YES 6.64/3.07 (6) Formula 6.64/3.07 (7) Symbolic evaluation [EQUIVALENT, 0 ms] 6.64/3.07 (8) Formula 6.64/3.07 (9) Case Analysis [EQUIVALENT, 0 ms] 6.64/3.07 (10) AND 6.64/3.07 (11) Formula 6.64/3.07 (12) Symbolic evaluation [EQUIVALENT, 0 ms] 6.64/3.07 (13) YES 6.64/3.07 (14) Formula 6.64/3.07 (15) Symbolic evaluation [EQUIVALENT, 0 ms] 6.64/3.07 (16) YES 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (0) 6.64/3.07 Obligation: 6.64/3.07 Formula: 6.64/3.07 z2:sort[a0],z3:sort[a0].((~(z2=0)/\~(z3=0))->minus'(z2, z3)=true) 6.64/3.07 6.64/3.07 There are no hypotheses. 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (1) Induction by data structure (EQUIVALENT) 6.64/3.07 Induction by data structure sort[a0] generates the following cases: 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 1. Base Case: 6.64/3.07 Formula: 6.64/3.07 z3:sort[a0].((~(0=0)/\~(z3=0))->minus'(0, z3)=true) 6.64/3.07 6.64/3.07 There are no hypotheses. 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 1. Step Case: 6.64/3.07 Formula: 6.64/3.07 n:sort[a0],z3:sort[a0].((~(s(n)=0)/\~(z3=0))->minus'(s(n), z3)=true) 6.64/3.07 6.64/3.07 Hypotheses: 6.64/3.07 n:sort[a0],!z3:sort[a0].((~(n=0)/\~(z3=0))->minus'(n, z3)=true) 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (2) 6.64/3.07 Complex Obligation (AND) 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (3) 6.64/3.07 Obligation: 6.64/3.07 Formula: 6.64/3.07 z3:sort[a0].((~(0=0)/\~(z3=0))->minus'(0, z3)=true) 6.64/3.07 6.64/3.07 There are no hypotheses. 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (4) Symbolic evaluation (EQUIVALENT) 6.64/3.07 Could be reduced to the following new obligation by simple symbolic evaluation: 6.64/3.07 True 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (5) 6.64/3.07 YES 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (6) 6.64/3.07 Obligation: 6.64/3.07 Formula: 6.64/3.07 n:sort[a0],z3:sort[a0].((~(s(n)=0)/\~(z3=0))->minus'(s(n), z3)=true) 6.64/3.07 6.64/3.07 Hypotheses: 6.64/3.07 n:sort[a0],!z3:sort[a0].((~(n=0)/\~(z3=0))->minus'(n, z3)=true) 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (7) Symbolic evaluation (EQUIVALENT) 6.64/3.07 Could be shown by simple symbolic evaluation. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (8) 6.64/3.07 Obligation: 6.64/3.07 Formula: 6.64/3.07 z3:sort[a0],n:sort[a0].(~(z3=0)->minus'(s(n), z3)=true) 6.64/3.07 6.64/3.07 Hypotheses: 6.64/3.07 n:sort[a0],!z3:sort[a0].((~(n=0)/\~(z3=0))->minus'(n, z3)=true) 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (9) Case Analysis (EQUIVALENT) 6.64/3.07 Case analysis leads to the following new obligations: 6.64/3.07 6.64/3.07 Formula: 6.64/3.07 n:sort[a0].(~(0=0)->minus'(s(n), 0)=true) 6.64/3.07 6.64/3.07 Hypotheses: 6.64/3.07 n:sort[a0],!z3:sort[a0].((~(n=0)/\~(z3=0))->minus'(n, z3)=true) 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 Formula: 6.64/3.07 x_1:sort[a0],n:sort[a0].(~(s(x_1)=0)->minus'(s(n), s(x_1))=true) 6.64/3.07 6.64/3.07 Hypotheses: 6.64/3.07 n:sort[a0],!z3:sort[a0].((~(n=0)/\~(z3=0))->minus'(n, z3)=true) 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (10) 6.64/3.07 Complex Obligation (AND) 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (11) 6.64/3.07 Obligation: 6.64/3.07 Formula: 6.64/3.07 n:sort[a0].(~(0=0)->minus'(s(n), 0)=true) 6.64/3.07 6.64/3.07 Hypotheses: 6.64/3.07 n:sort[a0],!z3:sort[a0].((~(n=0)/\~(z3=0))->minus'(n, z3)=true) 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (12) Symbolic evaluation (EQUIVALENT) 6.64/3.07 Could be reduced to the following new obligation by simple symbolic evaluation: 6.64/3.07 True 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (13) 6.64/3.07 YES 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (14) 6.64/3.07 Obligation: 6.64/3.07 Formula: 6.64/3.07 x_1:sort[a0],n:sort[a0].(~(s(x_1)=0)->minus'(s(n), s(x_1))=true) 6.64/3.07 6.64/3.07 Hypotheses: 6.64/3.07 n:sort[a0],!z3:sort[a0].((~(n=0)/\~(z3=0))->minus'(n, z3)=true) 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (15) Symbolic evaluation (EQUIVALENT) 6.64/3.07 Could be reduced to the following new obligation by simple symbolic evaluation: 6.64/3.07 True 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (16) 6.64/3.07 YES 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (27) 6.64/3.07 Complex Obligation (AND) 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (28) 6.64/3.07 Obligation: 6.64/3.07 Q DP problem: 6.64/3.07 The TRS P consists of the following rules: 6.64/3.07 6.64/3.07 MOD(s(x), s(y)) -> IF_MOD(le(y, x), s(x), s(y)) 6.64/3.07 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 minus(x, 0) -> x 6.64/3.07 minus(s(x), s(y)) -> minus(x, y) 6.64/3.07 le(0, y) -> true 6.64/3.07 le(s(x), 0) -> false 6.64/3.07 le(s(x), s(y)) -> le(x, y) 6.64/3.07 6.64/3.07 The set Q consists of the following terms: 6.64/3.07 6.64/3.07 le(0, x0) 6.64/3.07 le(s(x0), 0) 6.64/3.07 le(s(x0), s(x1)) 6.64/3.07 minus(x0, 0) 6.64/3.07 minus(s(x0), s(x1)) 6.64/3.07 6.64/3.07 We have to consider all minimal (P,Q,R)-chains. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (29) DependencyGraphProof (EQUIVALENT) 6.64/3.07 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (30) 6.64/3.07 TRUE 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (31) 6.64/3.07 Obligation: 6.64/3.07 Q restricted rewrite system: 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 minus'(x', 0) -> false 6.64/3.07 minus'(s(x''), s(y')) -> true 6.64/3.07 minus'(0, s(v11)) -> false 6.64/3.07 minus(x', 0) -> x' 6.64/3.07 minus(s(x''), s(y')) -> minus(x'', y') 6.64/3.07 le(0, y'') -> true_renamed 6.64/3.07 le(s(x1), 0) -> false_renamed 6.64/3.07 le(s(x2), s(y1)) -> le(x2, y1) 6.64/3.07 minus(0, s(v11)) -> 0 6.64/3.07 equal_bool(true, false) -> false 6.64/3.07 equal_bool(false, true) -> false 6.64/3.07 equal_bool(true, true) -> true 6.64/3.07 equal_bool(false, false) -> true 6.64/3.07 and(true, x) -> x 6.64/3.07 and(false, x) -> false 6.64/3.07 or(true, x) -> true 6.64/3.07 or(false, x) -> x 6.64/3.07 not(false) -> true 6.64/3.07 not(true) -> false 6.64/3.07 isa_true(true) -> true 6.64/3.07 isa_true(false) -> false 6.64/3.07 isa_false(true) -> false 6.64/3.07 isa_false(false) -> true 6.64/3.07 equal_sort[a0](0, 0) -> true 6.64/3.07 equal_sort[a0](0, s(v18)) -> false 6.64/3.07 equal_sort[a0](s(v19), 0) -> false 6.64/3.07 equal_sort[a0](s(v19), s(v20)) -> equal_sort[a0](v19, v20) 6.64/3.07 equal_sort[a19](true_renamed, true_renamed) -> true 6.64/3.07 equal_sort[a19](true_renamed, false_renamed) -> false 6.64/3.07 equal_sort[a19](false_renamed, true_renamed) -> false 6.64/3.07 equal_sort[a19](false_renamed, false_renamed) -> true 6.64/3.07 equal_sort[a24](witness_sort[a24], witness_sort[a24]) -> true 6.64/3.07 6.64/3.07 Q is empty. 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (32) QTRSRRRProof (EQUIVALENT) 6.64/3.07 Used ordering: 6.64/3.07 Polynomial interpretation [POLO]: 6.64/3.07 6.64/3.07 POL(0) = 0 6.64/3.07 POL(and(x_1, x_2)) = 2*x_1 + x_2 6.64/3.07 POL(equal_bool(x_1, x_2)) = 2*x_1 + 2*x_2 6.64/3.07 POL(equal_sort[a0](x_1, x_2)) = 2 + x_1 + x_2 6.64/3.07 POL(equal_sort[a19](x_1, x_2)) = 2 + x_1 + x_2 6.64/3.07 POL(equal_sort[a24](x_1, x_2)) = 2 + 2*x_1 + 2*x_2 6.64/3.07 POL(false) = 2 6.64/3.07 POL(false_renamed) = 0 6.64/3.07 POL(isa_false(x_1)) = 2 + x_1 6.64/3.07 POL(isa_true(x_1)) = 2*x_1 6.64/3.07 POL(le(x_1, x_2)) = 2 + x_1 + x_2 6.64/3.07 POL(minus(x_1, x_2)) = 2*x_1 + 2*x_2 6.64/3.07 POL(minus'(x_1, x_2)) = 2 + x_1 + x_2 6.64/3.07 POL(not(x_1)) = 2*x_1 6.64/3.07 POL(or(x_1, x_2)) = 2*x_1 + x_2 6.64/3.07 POL(s(x_1)) = 1 + 2*x_1 6.64/3.07 POL(true) = 1 6.64/3.07 POL(true_renamed) = 1 6.64/3.07 POL(witness_sort[a24]) = 1 6.64/3.07 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 6.64/3.07 6.64/3.07 minus'(s(x''), s(y')) -> true 6.64/3.07 minus'(0, s(v11)) -> false 6.64/3.07 minus(s(x''), s(y')) -> minus(x'', y') 6.64/3.07 le(0, y'') -> true_renamed 6.64/3.07 le(s(x1), 0) -> false_renamed 6.64/3.07 le(s(x2), s(y1)) -> le(x2, y1) 6.64/3.07 minus(0, s(v11)) -> 0 6.64/3.07 equal_bool(true, false) -> false 6.64/3.07 equal_bool(false, true) -> false 6.64/3.07 equal_bool(true, true) -> true 6.64/3.07 equal_bool(false, false) -> true 6.64/3.07 and(true, x) -> x 6.64/3.07 and(false, x) -> false 6.64/3.07 or(true, x) -> true 6.64/3.07 or(false, x) -> x 6.64/3.07 not(false) -> true 6.64/3.07 isa_true(true) -> true 6.64/3.07 isa_true(false) -> false 6.64/3.07 isa_false(true) -> false 6.64/3.07 isa_false(false) -> true 6.64/3.07 equal_sort[a0](0, 0) -> true 6.64/3.07 equal_sort[a0](0, s(v18)) -> false 6.64/3.07 equal_sort[a0](s(v19), 0) -> false 6.64/3.07 equal_sort[a0](s(v19), s(v20)) -> equal_sort[a0](v19, v20) 6.64/3.07 equal_sort[a19](true_renamed, true_renamed) -> true 6.64/3.07 equal_sort[a19](true_renamed, false_renamed) -> false 6.64/3.07 equal_sort[a19](false_renamed, true_renamed) -> false 6.64/3.07 equal_sort[a19](false_renamed, false_renamed) -> true 6.64/3.07 equal_sort[a24](witness_sort[a24], witness_sort[a24]) -> true 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (33) 6.64/3.07 Obligation: 6.64/3.07 Q restricted rewrite system: 6.64/3.07 The TRS R consists of the following rules: 6.64/3.07 6.64/3.07 minus'(x', 0) -> false 6.64/3.07 minus(x', 0) -> x' 6.64/3.07 not(true) -> false 6.64/3.07 6.64/3.07 Q is empty. 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (34) QTRSRRRProof (EQUIVALENT) 6.64/3.07 Used ordering: 6.64/3.07 Knuth-Bendix order [KBO] with precedence:not_1 > true > minus'_2 > false > minus_2 > 0 6.64/3.07 6.64/3.07 and weight map: 6.64/3.07 6.64/3.07 0=1 6.64/3.07 false=2 6.64/3.07 true=1 6.64/3.07 not_1=1 6.64/3.07 minus'_2=0 6.64/3.07 minus_2=0 6.64/3.07 6.64/3.07 The variable weight is 1With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 6.64/3.07 6.64/3.07 minus'(x', 0) -> false 6.64/3.07 minus(x', 0) -> x' 6.64/3.07 not(true) -> false 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (35) 6.64/3.07 Obligation: 6.64/3.07 Q restricted rewrite system: 6.64/3.07 R is empty. 6.64/3.07 Q is empty. 6.64/3.07 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (36) RisEmptyProof (EQUIVALENT) 6.64/3.07 The TRS R is empty. Hence, termination is trivially proven. 6.64/3.07 ---------------------------------------- 6.64/3.07 6.64/3.07 (37) 6.64/3.07 YES 6.64/3.10 EOF