3.68/1.51 YES 3.68/1.52 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 3.68/1.52 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.68/1.52 3.68/1.52 3.68/1.52 Termination of the given CSR could be proven: 3.68/1.52 3.68/1.52 (0) CSR 3.68/1.52 (1) CSRInnermostProof [EQUIVALENT, 0 ms] 3.68/1.52 (2) CSR 3.68/1.52 (3) CSDependencyPairsProof [EQUIVALENT, 0 ms] 3.68/1.52 (4) QCSDP 3.68/1.52 (5) QCSDependencyGraphProof [EQUIVALENT, 0 ms] 3.68/1.52 (6) QCSDP 3.68/1.52 (7) QCSDPSubtermProof [EQUIVALENT, 0 ms] 3.68/1.52 (8) QCSDP 3.68/1.52 (9) PIsEmptyProof [EQUIVALENT, 0 ms] 3.68/1.52 (10) YES 3.68/1.52 3.68/1.52 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (0) 3.68/1.52 Obligation: 3.68/1.52 Context-sensitive rewrite system: 3.68/1.52 The TRS R consists of the following rules: 3.68/1.52 3.68/1.52 primes -> sieve(from(s(s(0)))) 3.68/1.52 from(X) -> cons(X, from(s(X))) 3.68/1.52 head(cons(X, Y)) -> X 3.68/1.52 tail(cons(X, Y)) -> Y 3.68/1.52 if(true, X, Y) -> X 3.68/1.52 if(false, X, Y) -> Y 3.68/1.52 filter(s(s(X)), cons(Y, Z)) -> if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) 3.68/1.52 sieve(cons(X, Y)) -> cons(X, filter(X, sieve(Y))) 3.68/1.52 3.68/1.52 The replacement map contains the following entries: 3.68/1.52 3.68/1.52 primes: empty set 3.68/1.52 sieve: {1} 3.68/1.52 from: {1} 3.68/1.52 s: {1} 3.68/1.52 0: empty set 3.68/1.52 cons: {1} 3.68/1.52 head: {1} 3.68/1.52 tail: {1} 3.68/1.52 if: {1} 3.68/1.52 true: empty set 3.68/1.52 false: empty set 3.68/1.52 filter: {1, 2} 3.68/1.52 divides: {1, 2} 3.68/1.52 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (1) CSRInnermostProof (EQUIVALENT) 3.68/1.52 The CSR is orthogonal. By [CS_Inn] we can switch to innermost. 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (2) 3.68/1.52 Obligation: 3.68/1.52 Context-sensitive rewrite system: 3.68/1.52 The TRS R consists of the following rules: 3.68/1.52 3.68/1.52 primes -> sieve(from(s(s(0)))) 3.68/1.52 from(X) -> cons(X, from(s(X))) 3.68/1.52 head(cons(X, Y)) -> X 3.68/1.52 tail(cons(X, Y)) -> Y 3.68/1.52 if(true, X, Y) -> X 3.68/1.52 if(false, X, Y) -> Y 3.68/1.52 filter(s(s(X)), cons(Y, Z)) -> if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) 3.68/1.52 sieve(cons(X, Y)) -> cons(X, filter(X, sieve(Y))) 3.68/1.52 3.68/1.52 The replacement map contains the following entries: 3.68/1.52 3.68/1.52 primes: empty set 3.68/1.52 sieve: {1} 3.68/1.52 from: {1} 3.68/1.52 s: {1} 3.68/1.52 0: empty set 3.68/1.52 cons: {1} 3.68/1.52 head: {1} 3.68/1.52 tail: {1} 3.68/1.52 if: {1} 3.68/1.52 true: empty set 3.68/1.52 false: empty set 3.68/1.52 filter: {1, 2} 3.68/1.52 divides: {1, 2} 3.68/1.52 3.68/1.52 3.68/1.52 Innermost Strategy. 3.68/1.52 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (3) CSDependencyPairsProof (EQUIVALENT) 3.68/1.52 Using Improved CS-DPs [LPAR08] we result in the following initial Q-CSDP problem. 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (4) 3.68/1.52 Obligation: 3.68/1.52 Q-restricted context-sensitive dependency pair problem: 3.68/1.52 The symbols in {sieve_1, from_1, s_1, head_1, tail_1, filter_2, divides_2, SIEVE_1, FROM_1, FILTER_2, TAIL_1} are replacing on all positions. 3.68/1.52 For all symbols f in {cons_2, if_3, IF_3} we have mu(f) = {1}. 3.68/1.52 The symbols in {U_1} are not replacing on any position. 3.68/1.52 3.68/1.52 The ordinary context-sensitive dependency pairs DP_o are: 3.68/1.52 PRIMES -> SIEVE(from(s(s(0)))) 3.68/1.52 PRIMES -> FROM(s(s(0))) 3.68/1.52 FILTER(s(s(X)), cons(Y, Z)) -> IF(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) 3.68/1.52 3.68/1.52 The collapsing dependency pairs are DP_c: 3.68/1.52 TAIL(cons(X, Y)) -> Y 3.68/1.52 IF(true, X, Y) -> X 3.68/1.52 IF(false, X, Y) -> Y 3.68/1.52 3.68/1.52 3.68/1.52 The hidden terms of R are: 3.68/1.52 3.68/1.52 from(s(x0)) 3.68/1.52 filter(s(s(x0)), x1) 3.68/1.52 filter(x0, sieve(x1)) 3.68/1.52 sieve(x0) 3.68/1.52 3.68/1.52 Every hiding context is built from: 3.68/1.52 aprove.DPFramework.CSDPProblem.QCSDPProblem$1@57a9d99c 3.68/1.52 aprove.DPFramework.CSDPProblem.QCSDPProblem$1@35a48193 3.68/1.52 aprove.DPFramework.CSDPProblem.QCSDPProblem$1@10c61f26 3.68/1.52 aprove.DPFramework.CSDPProblem.QCSDPProblem$1@760b142a 3.68/1.52 aprove.DPFramework.CSDPProblem.QCSDPProblem$1@6ff7564e 3.68/1.52 3.68/1.52 Hence, the new unhiding pairs DP_u are : 3.68/1.52 TAIL(cons(X, Y)) -> U(Y) 3.68/1.52 IF(true, X, Y) -> U(X) 3.68/1.52 IF(false, X, Y) -> U(Y) 3.68/1.52 U(s(x_0)) -> U(x_0) 3.68/1.52 U(from(x_0)) -> U(x_0) 3.68/1.52 U(filter(x_0, x_1)) -> U(x_0) 3.68/1.52 U(filter(x_0, x_1)) -> U(x_1) 3.68/1.52 U(sieve(x_0)) -> U(x_0) 3.68/1.52 U(cons(x_0, x_1)) -> U(x_0) 3.68/1.52 U(from(s(x0))) -> FROM(s(x0)) 3.68/1.52 U(filter(s(s(x0)), x1)) -> FILTER(s(s(x0)), x1) 3.68/1.52 U(filter(x0, sieve(x1))) -> FILTER(x0, sieve(x1)) 3.68/1.52 U(sieve(x0)) -> SIEVE(x0) 3.68/1.52 3.68/1.52 The TRS R consists of the following rules: 3.68/1.52 3.68/1.52 primes -> sieve(from(s(s(0)))) 3.68/1.52 from(X) -> cons(X, from(s(X))) 3.68/1.52 head(cons(X, Y)) -> X 3.68/1.52 tail(cons(X, Y)) -> Y 3.68/1.52 if(true, X, Y) -> X 3.68/1.52 if(false, X, Y) -> Y 3.68/1.52 filter(s(s(X)), cons(Y, Z)) -> if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) 3.68/1.52 sieve(cons(X, Y)) -> cons(X, filter(X, sieve(Y))) 3.68/1.52 3.68/1.52 The set Q consists of the following terms: 3.68/1.52 3.68/1.52 primes 3.68/1.52 from(x0) 3.68/1.52 head(cons(x0, x1)) 3.68/1.52 tail(cons(x0, x1)) 3.68/1.52 if(true, x0, x1) 3.68/1.52 if(false, x0, x1) 3.68/1.52 filter(s(s(x0)), cons(x1, x2)) 3.68/1.52 sieve(cons(x0, x1)) 3.68/1.52 3.68/1.52 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (5) QCSDependencyGraphProof (EQUIVALENT) 3.68/1.52 The approximation of the Context-Sensitive Dependency Graph [LPAR08] contains 1 SCC with 8 less nodes. 3.68/1.52 The rules FILTER(s(s(z0)), cons(z1, z2)) -> IF(divides(s(s(z0)), z1), filter(s(s(z0)), z2), cons(z1, filter(z0, sieve(z1)))) and IF(true, x0, x1) -> U(x0) form no chain, because ECap^mu(IF(divides(s(s(z0)), z1), filter(s(s(z0)), z2), cons(z1, filter(z0, sieve(z1))))) = IF(divides(s(s(z0)), z1), filter(s(s(z0)), z2), cons(z1, filter(z0, sieve(z1)))) does not unify with IF(true, x0, x1). The rules FILTER(s(s(z0)), cons(z1, z2)) -> IF(divides(s(s(z0)), z1), filter(s(s(z0)), z2), cons(z1, filter(z0, sieve(z1)))) and IF(false, x0, x1) -> U(x1) form no chain, because ECap^mu(IF(divides(s(s(z0)), z1), filter(s(s(z0)), z2), cons(z1, filter(z0, sieve(z1))))) = IF(divides(s(s(z0)), z1), filter(s(s(z0)), z2), cons(z1, filter(z0, sieve(z1)))) does not unify with IF(false, x0, x1). 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (6) 3.68/1.52 Obligation: 3.68/1.52 Q-restricted context-sensitive dependency pair problem: 3.68/1.52 The symbols in {sieve_1, from_1, s_1, head_1, tail_1, filter_2, divides_2} are replacing on all positions. 3.68/1.52 For all symbols f in {cons_2, if_3} we have mu(f) = {1}. 3.68/1.52 The symbols in {U_1} are not replacing on any position. 3.68/1.52 3.68/1.52 The TRS P consists of the following rules: 3.68/1.52 3.68/1.52 U(s(x_0)) -> U(x_0) 3.68/1.52 U(from(x_0)) -> U(x_0) 3.68/1.52 U(filter(x_0, x_1)) -> U(x_0) 3.68/1.52 U(filter(x_0, x_1)) -> U(x_1) 3.68/1.52 U(sieve(x_0)) -> U(x_0) 3.68/1.52 U(cons(x_0, x_1)) -> U(x_0) 3.68/1.52 3.68/1.52 The TRS R consists of the following rules: 3.68/1.52 3.68/1.52 primes -> sieve(from(s(s(0)))) 3.68/1.52 from(X) -> cons(X, from(s(X))) 3.68/1.52 head(cons(X, Y)) -> X 3.68/1.52 tail(cons(X, Y)) -> Y 3.68/1.52 if(true, X, Y) -> X 3.68/1.52 if(false, X, Y) -> Y 3.68/1.52 filter(s(s(X)), cons(Y, Z)) -> if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) 3.68/1.52 sieve(cons(X, Y)) -> cons(X, filter(X, sieve(Y))) 3.68/1.52 3.68/1.52 The set Q consists of the following terms: 3.68/1.52 3.68/1.52 primes 3.68/1.52 from(x0) 3.68/1.52 head(cons(x0, x1)) 3.68/1.52 tail(cons(x0, x1)) 3.68/1.52 if(true, x0, x1) 3.68/1.52 if(false, x0, x1) 3.68/1.52 filter(s(s(x0)), cons(x1, x2)) 3.68/1.52 sieve(cons(x0, x1)) 3.68/1.52 3.68/1.52 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (7) QCSDPSubtermProof (EQUIVALENT) 3.68/1.52 We use the subterm processor [DA_EMMES]. 3.68/1.52 3.68/1.52 3.68/1.52 The following pairs can be oriented strictly and are deleted. 3.68/1.52 3.68/1.52 U(s(x_0)) -> U(x_0) 3.68/1.52 U(from(x_0)) -> U(x_0) 3.68/1.52 U(filter(x_0, x_1)) -> U(x_0) 3.68/1.52 U(filter(x_0, x_1)) -> U(x_1) 3.68/1.52 U(sieve(x_0)) -> U(x_0) 3.68/1.52 U(cons(x_0, x_1)) -> U(x_0) 3.68/1.52 The remaining pairs can at least be oriented weakly. 3.68/1.52 none 3.68/1.52 Used ordering: Combined order from the following AFS and order. 3.68/1.52 U(x1) = x1 3.68/1.52 3.68/1.52 3.68/1.52 Subterm Order 3.68/1.52 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (8) 3.68/1.52 Obligation: 3.68/1.52 Q-restricted context-sensitive dependency pair problem: 3.68/1.52 The symbols in {sieve_1, from_1, s_1, head_1, tail_1, filter_2, divides_2} are replacing on all positions. 3.68/1.52 For all symbols f in {cons_2, if_3} we have mu(f) = {1}. 3.68/1.52 3.68/1.52 The TRS P consists of the following rules: 3.68/1.52 none 3.68/1.52 3.68/1.52 The TRS R consists of the following rules: 3.68/1.52 3.68/1.52 primes -> sieve(from(s(s(0)))) 3.68/1.52 from(X) -> cons(X, from(s(X))) 3.68/1.52 head(cons(X, Y)) -> X 3.68/1.52 tail(cons(X, Y)) -> Y 3.68/1.52 if(true, X, Y) -> X 3.68/1.52 if(false, X, Y) -> Y 3.68/1.52 filter(s(s(X)), cons(Y, Z)) -> if(divides(s(s(X)), Y), filter(s(s(X)), Z), cons(Y, filter(X, sieve(Y)))) 3.68/1.52 sieve(cons(X, Y)) -> cons(X, filter(X, sieve(Y))) 3.68/1.52 3.68/1.52 The set Q consists of the following terms: 3.68/1.52 3.68/1.52 primes 3.68/1.52 from(x0) 3.68/1.52 head(cons(x0, x1)) 3.68/1.52 tail(cons(x0, x1)) 3.68/1.52 if(true, x0, x1) 3.68/1.52 if(false, x0, x1) 3.68/1.52 filter(s(s(x0)), cons(x1, x2)) 3.68/1.52 sieve(cons(x0, x1)) 3.68/1.52 3.68/1.52 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (9) PIsEmptyProof (EQUIVALENT) 3.68/1.52 The TRS P is empty. Hence, there is no (P,Q,R,mu)-chain. 3.68/1.52 ---------------------------------------- 3.68/1.52 3.68/1.52 (10) 3.68/1.52 YES 3.68/1.54 EOF