3.44/1.66 YES 3.44/1.67 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 3.44/1.67 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.44/1.67 3.44/1.67 3.44/1.67 Termination of the given CSR could be proven: 3.44/1.67 3.44/1.67 (0) CSR 3.44/1.67 (1) CSRRRRProof [EQUIVALENT, 66 ms] 3.44/1.67 (2) CSR 3.44/1.67 (3) CSRRRRProof [EQUIVALENT, 0 ms] 3.44/1.67 (4) CSR 3.44/1.67 (5) CSRRRRProof [EQUIVALENT, 0 ms] 3.44/1.67 (6) CSR 3.44/1.67 (7) CSRRRRProof [EQUIVALENT, 2 ms] 3.44/1.67 (8) CSR 3.44/1.67 (9) CSRRRRProof [EQUIVALENT, 0 ms] 3.44/1.67 (10) CSR 3.44/1.67 (11) RisEmptyProof [EQUIVALENT, 0 ms] 3.44/1.67 (12) YES 3.44/1.67 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (0) 3.44/1.67 Obligation: 3.44/1.67 Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 minus(0, Y) -> 0 3.44/1.67 minus(s(X), s(Y)) -> minus(X, Y) 3.44/1.67 geq(X, 0) -> true 3.44/1.67 geq(0, s(Y)) -> false 3.44/1.67 geq(s(X), s(Y)) -> geq(X, Y) 3.44/1.67 div(0, s(Y)) -> 0 3.44/1.67 div(s(X), s(Y)) -> if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0) 3.44/1.67 if(true, X, Y) -> X 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 minus: empty set 3.44/1.67 0: empty set 3.44/1.67 s: {1} 3.44/1.67 geq: empty set 3.44/1.67 true: empty set 3.44/1.67 false: empty set 3.44/1.67 div: {1} 3.44/1.67 if: {1} 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (1) CSRRRRProof (EQUIVALENT) 3.44/1.67 The following CSR is given: Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 minus(0, Y) -> 0 3.44/1.67 minus(s(X), s(Y)) -> minus(X, Y) 3.44/1.67 geq(X, 0) -> true 3.44/1.67 geq(0, s(Y)) -> false 3.44/1.67 geq(s(X), s(Y)) -> geq(X, Y) 3.44/1.67 div(0, s(Y)) -> 0 3.44/1.67 div(s(X), s(Y)) -> if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0) 3.44/1.67 if(true, X, Y) -> X 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 minus: empty set 3.44/1.67 0: empty set 3.44/1.67 s: {1} 3.44/1.67 geq: empty set 3.44/1.67 true: empty set 3.44/1.67 false: empty set 3.44/1.67 div: {1} 3.44/1.67 if: {1} 3.44/1.67 Used ordering: 3.44/1.67 Polynomial interpretation [POLO]: 3.44/1.67 3.44/1.67 POL(0) = 0 3.44/1.67 POL(div(x_1, x_2)) = 2*x_1 3.44/1.67 POL(false) = 0 3.44/1.67 POL(geq(x_1, x_2)) = x_1 3.44/1.67 POL(if(x_1, x_2, x_3)) = x_1 + 2*x_2 + 2*x_3 3.44/1.67 POL(minus(x_1, x_2)) = 0 3.44/1.67 POL(s(x_1)) = 1 + 2*x_1 3.44/1.67 POL(true) = 0 3.44/1.67 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 3.44/1.67 3.44/1.67 geq(s(X), s(Y)) -> geq(X, Y) 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (2) 3.44/1.67 Obligation: 3.44/1.67 Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 minus(0, Y) -> 0 3.44/1.67 minus(s(X), s(Y)) -> minus(X, Y) 3.44/1.67 geq(X, 0) -> true 3.44/1.67 geq(0, s(Y)) -> false 3.44/1.67 div(0, s(Y)) -> 0 3.44/1.67 div(s(X), s(Y)) -> if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0) 3.44/1.67 if(true, X, Y) -> X 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 minus: empty set 3.44/1.67 0: empty set 3.44/1.67 s: {1} 3.44/1.67 geq: empty set 3.44/1.67 true: empty set 3.44/1.67 false: empty set 3.44/1.67 div: {1} 3.44/1.67 if: {1} 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (3) CSRRRRProof (EQUIVALENT) 3.44/1.67 The following CSR is given: Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 minus(0, Y) -> 0 3.44/1.67 minus(s(X), s(Y)) -> minus(X, Y) 3.44/1.67 geq(X, 0) -> true 3.44/1.67 geq(0, s(Y)) -> false 3.44/1.67 div(0, s(Y)) -> 0 3.44/1.67 div(s(X), s(Y)) -> if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0) 3.44/1.67 if(true, X, Y) -> X 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 minus: empty set 3.44/1.67 0: empty set 3.44/1.67 s: {1} 3.44/1.67 geq: empty set 3.44/1.67 true: empty set 3.44/1.67 false: empty set 3.44/1.67 div: {1} 3.44/1.67 if: {1} 3.44/1.67 Used ordering: 3.44/1.67 Polynomial interpretation [POLO]: 3.44/1.67 3.44/1.67 POL(0) = 0 3.44/1.67 POL(div(x_1, x_2)) = 2 + 2*x_1 + x_2 3.44/1.67 POL(false) = 0 3.44/1.67 POL(geq(x_1, x_2)) = 0 3.44/1.67 POL(if(x_1, x_2, x_3)) = x_1 + x_2 + 2*x_3 3.44/1.67 POL(minus(x_1, x_2)) = 0 3.44/1.67 POL(s(x_1)) = 1 + x_1 3.44/1.67 POL(true) = 0 3.44/1.67 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 3.44/1.67 3.44/1.67 div(0, s(Y)) -> 0 3.44/1.67 div(s(X), s(Y)) -> if(geq(X, Y), s(div(minus(X, Y), s(Y))), 0) 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (4) 3.44/1.67 Obligation: 3.44/1.67 Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 minus(0, Y) -> 0 3.44/1.67 minus(s(X), s(Y)) -> minus(X, Y) 3.44/1.67 geq(X, 0) -> true 3.44/1.67 geq(0, s(Y)) -> false 3.44/1.67 if(true, X, Y) -> X 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 minus: empty set 3.44/1.67 0: empty set 3.44/1.67 s: {1} 3.44/1.67 geq: empty set 3.44/1.67 true: empty set 3.44/1.67 false: empty set 3.44/1.67 if: {1} 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (5) CSRRRRProof (EQUIVALENT) 3.44/1.67 The following CSR is given: Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 minus(0, Y) -> 0 3.44/1.67 minus(s(X), s(Y)) -> minus(X, Y) 3.44/1.67 geq(X, 0) -> true 3.44/1.67 geq(0, s(Y)) -> false 3.44/1.67 if(true, X, Y) -> X 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 minus: empty set 3.44/1.67 0: empty set 3.44/1.67 s: {1} 3.44/1.67 geq: empty set 3.44/1.67 true: empty set 3.44/1.67 false: empty set 3.44/1.67 if: {1} 3.44/1.67 Used ordering: 3.44/1.67 Polynomial interpretation [POLO]: 3.44/1.67 3.44/1.67 POL(0) = 1 3.44/1.67 POL(false) = 0 3.44/1.67 POL(geq(x_1, x_2)) = 1 + 2*x_1 + x_2 3.44/1.67 POL(if(x_1, x_2, x_3)) = 2*x_1 + x_2 + x_3 3.44/1.67 POL(minus(x_1, x_2)) = 2 + 2*x_1 + 2*x_2 3.44/1.67 POL(s(x_1)) = 2 + x_1 3.44/1.67 POL(true) = 2 3.44/1.67 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 3.44/1.67 3.44/1.67 minus(0, Y) -> 0 3.44/1.67 minus(s(X), s(Y)) -> minus(X, Y) 3.44/1.67 geq(0, s(Y)) -> false 3.44/1.67 if(true, X, Y) -> X 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (6) 3.44/1.67 Obligation: 3.44/1.67 Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 geq(X, 0) -> true 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 0: empty set 3.44/1.67 geq: empty set 3.44/1.67 true: empty set 3.44/1.67 false: empty set 3.44/1.67 if: {1} 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (7) CSRRRRProof (EQUIVALENT) 3.44/1.67 The following CSR is given: Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 geq(X, 0) -> true 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 0: empty set 3.44/1.67 geq: empty set 3.44/1.67 true: empty set 3.44/1.67 false: empty set 3.44/1.67 if: {1} 3.44/1.67 Used ordering: 3.44/1.67 Polynomial interpretation [POLO]: 3.44/1.67 3.44/1.67 POL(0) = 1 3.44/1.67 POL(false) = 0 3.44/1.67 POL(geq(x_1, x_2)) = 1 + x_2 3.44/1.67 POL(if(x_1, x_2, x_3)) = x_1 + x_3 3.44/1.67 POL(true) = 0 3.44/1.67 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 3.44/1.67 3.44/1.67 geq(X, 0) -> true 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (8) 3.44/1.67 Obligation: 3.44/1.67 Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 false: empty set 3.44/1.67 if: {1} 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (9) CSRRRRProof (EQUIVALENT) 3.44/1.67 The following CSR is given: Context-sensitive rewrite system: 3.44/1.67 The TRS R consists of the following rules: 3.44/1.67 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 The replacement map contains the following entries: 3.44/1.67 3.44/1.67 false: empty set 3.44/1.67 if: {1} 3.44/1.67 Used ordering: 3.44/1.67 Polynomial interpretation [POLO]: 3.44/1.67 3.44/1.67 POL(false) = 1 3.44/1.67 POL(if(x_1, x_2, x_3)) = 2 + x_1 + x_3 3.44/1.67 With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly: 3.44/1.67 3.44/1.67 if(false, X, Y) -> Y 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (10) 3.44/1.67 Obligation: 3.44/1.67 Context-sensitive rewrite system: 3.44/1.67 R is empty. 3.44/1.67 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (11) RisEmptyProof (EQUIVALENT) 3.44/1.67 The CSR R is empty. Hence, termination is trivially proven. 3.44/1.67 ---------------------------------------- 3.44/1.67 3.44/1.67 (12) 3.44/1.67 YES 3.44/1.69 EOF