/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- NO proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination w.r.t. Q of the given QTRS could be disproven: (0) QTRS (1) DependencyPairsProof [EQUIVALENT, 4 ms] (2) QDP (3) DependencyGraphProof [EQUIVALENT, 0 ms] (4) AND (5) QDP (6) UsableRulesProof [EQUIVALENT, 0 ms] (7) QDP (8) QDPSizeChangeProof [EQUIVALENT, 0 ms] (9) YES (10) QDP (11) TransformationProof [EQUIVALENT, 0 ms] (12) QDP (13) TransformationProof [EQUIVALENT, 0 ms] (14) QDP (15) DependencyGraphProof [EQUIVALENT, 0 ms] (16) QDP (17) QDPOrderProof [EQUIVALENT, 35 ms] (18) QDP (19) NonTerminationLoopProof [COMPLETE, 20 ms] (20) NO ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: from(X) -> cons(X, n__from(n__s(X))) length(n__nil) -> 0 length(n__cons(X, Y)) -> s(length1(activate(Y))) length1(X) -> length(activate(X)) from(X) -> n__from(X) s(X) -> n__s(X) nil -> n__nil cons(X1, X2) -> n__cons(X1, X2) activate(n__from(X)) -> from(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(n__nil) -> nil activate(n__cons(X1, X2)) -> cons(activate(X1), X2) activate(X) -> X 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: FROM(X) -> CONS(X, n__from(n__s(X))) LENGTH(n__cons(X, Y)) -> S(length1(activate(Y))) LENGTH(n__cons(X, Y)) -> LENGTH1(activate(Y)) LENGTH(n__cons(X, Y)) -> ACTIVATE(Y) LENGTH1(X) -> LENGTH(activate(X)) LENGTH1(X) -> ACTIVATE(X) ACTIVATE(n__from(X)) -> FROM(activate(X)) ACTIVATE(n__from(X)) -> ACTIVATE(X) ACTIVATE(n__s(X)) -> S(activate(X)) ACTIVATE(n__s(X)) -> ACTIVATE(X) ACTIVATE(n__nil) -> NIL ACTIVATE(n__cons(X1, X2)) -> CONS(activate(X1), X2) ACTIVATE(n__cons(X1, X2)) -> ACTIVATE(X1) The TRS R consists of the following rules: from(X) -> cons(X, n__from(n__s(X))) length(n__nil) -> 0 length(n__cons(X, Y)) -> s(length1(activate(Y))) length1(X) -> length(activate(X)) from(X) -> n__from(X) s(X) -> n__s(X) nil -> n__nil cons(X1, X2) -> n__cons(X1, X2) activate(n__from(X)) -> from(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(n__nil) -> nil activate(n__cons(X1, X2)) -> cons(activate(X1), X2) activate(X) -> X 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 2 SCCs with 8 less nodes. ---------------------------------------- (4) Complex Obligation (AND) ---------------------------------------- (5) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVATE(n__s(X)) -> ACTIVATE(X) ACTIVATE(n__from(X)) -> ACTIVATE(X) ACTIVATE(n__cons(X1, X2)) -> ACTIVATE(X1) The TRS R consists of the following rules: from(X) -> cons(X, n__from(n__s(X))) length(n__nil) -> 0 length(n__cons(X, Y)) -> s(length1(activate(Y))) length1(X) -> length(activate(X)) from(X) -> n__from(X) s(X) -> n__s(X) nil -> n__nil cons(X1, X2) -> n__cons(X1, X2) activate(n__from(X)) -> from(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(n__nil) -> nil activate(n__cons(X1, X2)) -> cons(activate(X1), X2) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (6) UsableRulesProof (EQUIVALENT) We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R. ---------------------------------------- (7) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVATE(n__s(X)) -> ACTIVATE(X) ACTIVATE(n__from(X)) -> ACTIVATE(X) ACTIVATE(n__cons(X1, X2)) -> ACTIVATE(X1) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (8) 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: *ACTIVATE(n__s(X)) -> ACTIVATE(X) The graph contains the following edges 1 > 1 *ACTIVATE(n__from(X)) -> ACTIVATE(X) The graph contains the following edges 1 > 1 *ACTIVATE(n__cons(X1, X2)) -> ACTIVATE(X1) The graph contains the following edges 1 > 1 ---------------------------------------- (9) YES ---------------------------------------- (10) Obligation: Q DP problem: The TRS P consists of the following rules: LENGTH(n__cons(X, Y)) -> LENGTH1(activate(Y)) LENGTH1(X) -> LENGTH(activate(X)) The TRS R consists of the following rules: from(X) -> cons(X, n__from(n__s(X))) length(n__nil) -> 0 length(n__cons(X, Y)) -> s(length1(activate(Y))) length1(X) -> length(activate(X)) from(X) -> n__from(X) s(X) -> n__s(X) nil -> n__nil cons(X1, X2) -> n__cons(X1, X2) activate(n__from(X)) -> from(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(n__nil) -> nil activate(n__cons(X1, X2)) -> cons(activate(X1), X2) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (11) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule LENGTH1(X) -> LENGTH(activate(X)) at position [0] we obtained the following new rules [LPAR04]: (LENGTH1(n__from(x0)) -> LENGTH(from(activate(x0))),LENGTH1(n__from(x0)) -> LENGTH(from(activate(x0)))) (LENGTH1(n__s(x0)) -> LENGTH(s(activate(x0))),LENGTH1(n__s(x0)) -> LENGTH(s(activate(x0)))) (LENGTH1(n__nil) -> LENGTH(nil),LENGTH1(n__nil) -> LENGTH(nil)) (LENGTH1(n__cons(x0, x1)) -> LENGTH(cons(activate(x0), x1)),LENGTH1(n__cons(x0, x1)) -> LENGTH(cons(activate(x0), x1))) (LENGTH1(x0) -> LENGTH(x0),LENGTH1(x0) -> LENGTH(x0)) ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: LENGTH(n__cons(X, Y)) -> LENGTH1(activate(Y)) LENGTH1(n__from(x0)) -> LENGTH(from(activate(x0))) LENGTH1(n__s(x0)) -> LENGTH(s(activate(x0))) LENGTH1(n__nil) -> LENGTH(nil) LENGTH1(n__cons(x0, x1)) -> LENGTH(cons(activate(x0), x1)) LENGTH1(x0) -> LENGTH(x0) The TRS R consists of the following rules: from(X) -> cons(X, n__from(n__s(X))) length(n__nil) -> 0 length(n__cons(X, Y)) -> s(length1(activate(Y))) length1(X) -> length(activate(X)) from(X) -> n__from(X) s(X) -> n__s(X) nil -> n__nil cons(X1, X2) -> n__cons(X1, X2) activate(n__from(X)) -> from(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(n__nil) -> nil activate(n__cons(X1, X2)) -> cons(activate(X1), X2) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) TransformationProof (EQUIVALENT) By narrowing [LPAR04] the rule LENGTH1(n__nil) -> LENGTH(nil) at position [0] we obtained the following new rules [LPAR04]: (LENGTH1(n__nil) -> LENGTH(n__nil),LENGTH1(n__nil) -> LENGTH(n__nil)) ---------------------------------------- (14) Obligation: Q DP problem: The TRS P consists of the following rules: LENGTH(n__cons(X, Y)) -> LENGTH1(activate(Y)) LENGTH1(n__from(x0)) -> LENGTH(from(activate(x0))) LENGTH1(n__s(x0)) -> LENGTH(s(activate(x0))) LENGTH1(n__cons(x0, x1)) -> LENGTH(cons(activate(x0), x1)) LENGTH1(x0) -> LENGTH(x0) LENGTH1(n__nil) -> LENGTH(n__nil) The TRS R consists of the following rules: from(X) -> cons(X, n__from(n__s(X))) length(n__nil) -> 0 length(n__cons(X, Y)) -> s(length1(activate(Y))) length1(X) -> length(activate(X)) from(X) -> n__from(X) s(X) -> n__s(X) nil -> n__nil cons(X1, X2) -> n__cons(X1, X2) activate(n__from(X)) -> from(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(n__nil) -> nil activate(n__cons(X1, X2)) -> cons(activate(X1), X2) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (15) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (16) Obligation: Q DP problem: The TRS P consists of the following rules: LENGTH1(n__from(x0)) -> LENGTH(from(activate(x0))) LENGTH(n__cons(X, Y)) -> LENGTH1(activate(Y)) LENGTH1(n__s(x0)) -> LENGTH(s(activate(x0))) LENGTH1(n__cons(x0, x1)) -> LENGTH(cons(activate(x0), x1)) LENGTH1(x0) -> LENGTH(x0) The TRS R consists of the following rules: from(X) -> cons(X, n__from(n__s(X))) length(n__nil) -> 0 length(n__cons(X, Y)) -> s(length1(activate(Y))) length1(X) -> length(activate(X)) from(X) -> n__from(X) s(X) -> n__s(X) nil -> n__nil cons(X1, X2) -> n__cons(X1, X2) activate(n__from(X)) -> from(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(n__nil) -> nil activate(n__cons(X1, X2)) -> cons(activate(X1), X2) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (17) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. LENGTH1(n__s(x0)) -> LENGTH(s(activate(x0))) The remaining pairs can at least be oriented weakly. Used ordering: Polynomial Order [NEGPOLO,POLO] with Interpretation: POL( LENGTH1_1(x_1) ) = 2x_1 + 2 POL( LENGTH_1(x_1) ) = x_1 + 2 POL( cons_2(x_1, x_2) ) = 2x_2 POL( from_1(x_1) ) = max{0, -2} POL( s_1(x_1) ) = 1 POL( activate_1(x_1) ) = x_1 POL( n__from_1(x_1) ) = 0 POL( n__s_1(x_1) ) = 1 POL( n__nil ) = 2 POL( nil ) = 2 POL( n__cons_2(x_1, x_2) ) = 2x_2 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: activate(n__from(X)) -> from(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(n__nil) -> nil activate(n__cons(X1, X2)) -> cons(activate(X1), X2) activate(X) -> X from(X) -> cons(X, n__from(n__s(X))) from(X) -> n__from(X) s(X) -> n__s(X) cons(X1, X2) -> n__cons(X1, X2) nil -> n__nil ---------------------------------------- (18) Obligation: Q DP problem: The TRS P consists of the following rules: LENGTH1(n__from(x0)) -> LENGTH(from(activate(x0))) LENGTH(n__cons(X, Y)) -> LENGTH1(activate(Y)) LENGTH1(n__cons(x0, x1)) -> LENGTH(cons(activate(x0), x1)) LENGTH1(x0) -> LENGTH(x0) The TRS R consists of the following rules: from(X) -> cons(X, n__from(n__s(X))) length(n__nil) -> 0 length(n__cons(X, Y)) -> s(length1(activate(Y))) length1(X) -> length(activate(X)) from(X) -> n__from(X) s(X) -> n__s(X) nil -> n__nil cons(X1, X2) -> n__cons(X1, X2) activate(n__from(X)) -> from(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(n__nil) -> nil activate(n__cons(X1, X2)) -> cons(activate(X1), X2) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (19) NonTerminationLoopProof (COMPLETE) We used the non-termination processor [FROCOS05] to show that the DP problem is infinite. Found a loop by narrowing to the left: s = LENGTH(from(X)) evaluates to t =LENGTH(from(activate(n__s(X)))) Thus s starts an infinite chain as s semiunifies with t with the following substitutions: * Matcher: [X / activate(n__s(X))] * Semiunifier: [ ] -------------------------------------------------------------------------------- Rewriting sequence LENGTH(from(X)) -> LENGTH(cons(X, n__from(n__s(X)))) with rule from(X') -> cons(X', n__from(n__s(X'))) at position [0] and matcher [X' / X] LENGTH(cons(X, n__from(n__s(X)))) -> LENGTH(n__cons(X, n__from(n__s(X)))) with rule cons(X1, X2) -> n__cons(X1, X2) at position [0] and matcher [X1 / X, X2 / n__from(n__s(X))] LENGTH(n__cons(X, n__from(n__s(X)))) -> LENGTH1(activate(n__from(n__s(X)))) with rule LENGTH(n__cons(X', Y)) -> LENGTH1(activate(Y)) at position [] and matcher [X' / X, Y / n__from(n__s(X))] LENGTH1(activate(n__from(n__s(X)))) -> LENGTH1(n__from(n__s(X))) with rule activate(X') -> X' at position [0] and matcher [X' / n__from(n__s(X))] LENGTH1(n__from(n__s(X))) -> LENGTH(from(activate(n__s(X)))) with rule LENGTH1(n__from(x0)) -> LENGTH(from(activate(x0))) Now applying the matcher to the start term leads to a term which is equal to the last term in the rewriting sequence All these steps are and every following step will be a correct step w.r.t to Q. ---------------------------------------- (20) NO