/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.xml /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.xml # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination w.r.t. Q of the given QTRS could be proven: (0) QTRS (1) DependencyPairsProof [EQUIVALENT, 37 ms] (2) QDP (3) DependencyGraphProof [EQUIVALENT, 0 ms] (4) QDP (5) QDPOrderProof [EQUIVALENT, 191 ms] (6) QDP (7) QDPOrderProof [EQUIVALENT, 126 ms] (8) QDP (9) DependencyGraphProof [EQUIVALENT, 0 ms] (10) QDP (11) QDPOrderProof [EQUIVALENT, 182 ms] (12) QDP (13) DependencyGraphProof [EQUIVALENT, 0 ms] (14) TRUE ---------------------------------------- (0) Obligation: Q restricted rewrite system: The TRS R consists of the following rules: terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) sqr(0) -> 0 sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) dbl(0) -> 0 dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(0, X) -> X add(s(X), Y) -> s(n__add(activate(X), Y)) first(0, X) -> nil first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) terms(X) -> n__terms(X) s(X) -> n__s(X) add(X1, X2) -> n__add(X1, X2) sqr(X) -> n__sqr(X) dbl(X) -> n__dbl(X) first(X1, X2) -> n__first(X1, X2) activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(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: TERMS(N) -> SQR(N) SQR(s(X)) -> S(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) SQR(s(X)) -> ACTIVATE(X) DBL(s(X)) -> S(n__s(n__dbl(activate(X)))) DBL(s(X)) -> ACTIVATE(X) ADD(s(X), Y) -> S(n__add(activate(X), Y)) ADD(s(X), Y) -> ACTIVATE(X) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(X) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(Z) ACTIVATE(n__terms(X)) -> TERMS(activate(X)) ACTIVATE(n__terms(X)) -> ACTIVATE(X) ACTIVATE(n__s(X)) -> S(X) ACTIVATE(n__add(X1, X2)) -> ADD(activate(X1), activate(X2)) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__sqr(X)) -> SQR(activate(X)) ACTIVATE(n__sqr(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> DBL(activate(X)) ACTIVATE(n__dbl(X)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> FIRST(activate(X1), activate(X2)) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X2) The TRS R consists of the following rules: terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) sqr(0) -> 0 sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) dbl(0) -> 0 dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(0, X) -> X add(s(X), Y) -> s(n__add(activate(X), Y)) first(0, X) -> nil first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) terms(X) -> n__terms(X) s(X) -> n__s(X) add(X1, X2) -> n__add(X1, X2) sqr(X) -> n__sqr(X) dbl(X) -> n__dbl(X) first(X1, X2) -> n__first(X1, X2) activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(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 1 SCC with 4 less nodes. ---------------------------------------- (4) Obligation: Q DP problem: The TRS P consists of the following rules: SQR(s(X)) -> ACTIVATE(X) ACTIVATE(n__terms(X)) -> TERMS(activate(X)) TERMS(N) -> SQR(N) ACTIVATE(n__terms(X)) -> ACTIVATE(X) ACTIVATE(n__add(X1, X2)) -> ADD(activate(X1), activate(X2)) ADD(s(X), Y) -> ACTIVATE(X) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__sqr(X)) -> SQR(activate(X)) ACTIVATE(n__sqr(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> DBL(activate(X)) DBL(s(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> FIRST(activate(X1), activate(X2)) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X2) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(Z) The TRS R consists of the following rules: terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) sqr(0) -> 0 sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) dbl(0) -> 0 dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(0, X) -> X add(s(X), Y) -> s(n__add(activate(X), Y)) first(0, X) -> nil first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) terms(X) -> n__terms(X) s(X) -> n__s(X) add(X1, X2) -> n__add(X1, X2) sqr(X) -> n__sqr(X) dbl(X) -> n__dbl(X) first(X1, X2) -> n__first(X1, X2) activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(X2)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (5) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVATE(n__terms(X)) -> ACTIVATE(X) The remaining pairs can at least be oriented weakly. Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: <<< POL(SQR(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(s(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(ACTIVATE(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(n__terms(x_1)) = [[1A]] + [[1A]] * x_1 >>> <<< POL(TERMS(x_1)) = [[0A]] + [[1A]] * x_1 >>> <<< POL(activate(x_1)) = [[-I]] + [[0A]] * x_1 >>> <<< POL(n__add(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(ADD(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(n__sqr(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(n__dbl(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(DBL(x_1)) = [[-I]] + [[0A]] * x_1 >>> <<< POL(n__first(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(FIRST(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(terms(x_1)) = [[1A]] + [[1A]] * x_1 >>> <<< POL(n__s(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(add(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(sqr(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(dbl(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(first(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(0) = [[0A]] >>> <<< POL(nil) = [[0A]] >>> <<< POL(recip(x_1)) = [[-I]] + [[0A]] * x_1 >>> The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(X2)) activate(X) -> X sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) s(X) -> n__s(X) terms(X) -> n__terms(X) add(0, X) -> X add(X1, X2) -> n__add(X1, X2) sqr(0) -> 0 sqr(X) -> n__sqr(X) dbl(0) -> 0 dbl(X) -> n__dbl(X) first(0, X) -> nil first(X1, X2) -> n__first(X1, X2) first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(s(X), Y) -> s(n__add(activate(X), Y)) terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) ---------------------------------------- (6) Obligation: Q DP problem: The TRS P consists of the following rules: SQR(s(X)) -> ACTIVATE(X) ACTIVATE(n__terms(X)) -> TERMS(activate(X)) TERMS(N) -> SQR(N) ACTIVATE(n__add(X1, X2)) -> ADD(activate(X1), activate(X2)) ADD(s(X), Y) -> ACTIVATE(X) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__sqr(X)) -> SQR(activate(X)) ACTIVATE(n__sqr(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> DBL(activate(X)) DBL(s(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> FIRST(activate(X1), activate(X2)) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X2) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(Z) The TRS R consists of the following rules: terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) sqr(0) -> 0 sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) dbl(0) -> 0 dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(0, X) -> X add(s(X), Y) -> s(n__add(activate(X), Y)) first(0, X) -> nil first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) terms(X) -> n__terms(X) s(X) -> n__s(X) add(X1, X2) -> n__add(X1, X2) sqr(X) -> n__sqr(X) dbl(X) -> n__dbl(X) first(X1, X2) -> n__first(X1, X2) activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(X2)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (7) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVATE(n__terms(X)) -> TERMS(activate(X)) The remaining pairs can at least be oriented weakly. Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: <<< POL(SQR(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(s(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(ACTIVATE(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(n__terms(x_1)) = [[1A]] + [[1A]] * x_1 >>> <<< POL(TERMS(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(activate(x_1)) = [[-I]] + [[0A]] * x_1 >>> <<< POL(n__add(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(ADD(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(n__sqr(x_1)) = [[-I]] + [[0A]] * x_1 >>> <<< POL(n__dbl(x_1)) = [[-I]] + [[0A]] * x_1 >>> <<< POL(DBL(x_1)) = [[-I]] + [[0A]] * x_1 >>> <<< POL(n__first(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(FIRST(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(terms(x_1)) = [[1A]] + [[1A]] * x_1 >>> <<< POL(n__s(x_1)) = [[0A]] + [[0A]] * x_1 >>> <<< POL(add(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(sqr(x_1)) = [[-I]] + [[0A]] * x_1 >>> <<< POL(dbl(x_1)) = [[-I]] + [[0A]] * x_1 >>> <<< POL(first(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 >>> <<< POL(0) = [[0A]] >>> <<< POL(nil) = [[0A]] >>> <<< POL(recip(x_1)) = [[-I]] + [[0A]] * x_1 >>> The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(X2)) activate(X) -> X sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) s(X) -> n__s(X) terms(X) -> n__terms(X) add(0, X) -> X add(X1, X2) -> n__add(X1, X2) sqr(0) -> 0 sqr(X) -> n__sqr(X) dbl(0) -> 0 dbl(X) -> n__dbl(X) first(0, X) -> nil first(X1, X2) -> n__first(X1, X2) first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(s(X), Y) -> s(n__add(activate(X), Y)) terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) ---------------------------------------- (8) Obligation: Q DP problem: The TRS P consists of the following rules: SQR(s(X)) -> ACTIVATE(X) TERMS(N) -> SQR(N) ACTIVATE(n__add(X1, X2)) -> ADD(activate(X1), activate(X2)) ADD(s(X), Y) -> ACTIVATE(X) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__sqr(X)) -> SQR(activate(X)) ACTIVATE(n__sqr(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> DBL(activate(X)) DBL(s(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> FIRST(activate(X1), activate(X2)) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X2) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(Z) The TRS R consists of the following rules: terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) sqr(0) -> 0 sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) dbl(0) -> 0 dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(0, X) -> X add(s(X), Y) -> s(n__add(activate(X), Y)) first(0, X) -> nil first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) terms(X) -> n__terms(X) s(X) -> n__s(X) add(X1, X2) -> n__add(X1, X2) sqr(X) -> n__sqr(X) dbl(X) -> n__dbl(X) first(X1, X2) -> n__first(X1, X2) activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(X2)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (9) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. ---------------------------------------- (10) Obligation: Q DP problem: The TRS P consists of the following rules: ACTIVATE(n__add(X1, X2)) -> ADD(activate(X1), activate(X2)) ADD(s(X), Y) -> ACTIVATE(X) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__sqr(X)) -> SQR(activate(X)) SQR(s(X)) -> ACTIVATE(X) ACTIVATE(n__sqr(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> DBL(activate(X)) DBL(s(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> FIRST(activate(X1), activate(X2)) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X2) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(Z) The TRS R consists of the following rules: terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) sqr(0) -> 0 sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) dbl(0) -> 0 dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(0, X) -> X add(s(X), Y) -> s(n__add(activate(X), Y)) first(0, X) -> nil first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) terms(X) -> n__terms(X) s(X) -> n__s(X) add(X1, X2) -> n__add(X1, X2) sqr(X) -> n__sqr(X) dbl(X) -> n__dbl(X) first(X1, X2) -> n__first(X1, X2) activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(X2)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (11) QDPOrderProof (EQUIVALENT) We use the reduction pair processor [LPAR04,JAR06]. The following pairs can be oriented strictly and are deleted. ACTIVATE(n__add(X1, X2)) -> ADD(activate(X1), activate(X2)) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__add(X1, X2)) -> ACTIVATE(X2) ACTIVATE(n__sqr(X)) -> SQR(activate(X)) SQR(s(X)) -> ACTIVATE(X) ACTIVATE(n__sqr(X)) -> ACTIVATE(X) ACTIVATE(n__dbl(X)) -> DBL(activate(X)) ACTIVATE(n__dbl(X)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> FIRST(activate(X1), activate(X2)) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(X) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X1) ACTIVATE(n__first(X1, X2)) -> ACTIVATE(X2) FIRST(s(X), cons(Y, Z)) -> ACTIVATE(Z) The remaining pairs can at least be oriented weakly. Used ordering: Combined order from the following AFS and order. ACTIVATE(x1) = ACTIVATE(x1) n__add(x1, x2) = n__add(x1, x2) ADD(x1, x2) = x1 activate(x1) = x1 s(x1) = s(x1) n__sqr(x1) = n__sqr(x1) SQR(x1) = SQR(x1) n__dbl(x1) = n__dbl(x1) DBL(x1) = x1 n__first(x1, x2) = n__first(x1, x2) FIRST(x1, x2) = FIRST(x1, x2) cons(x1, x2) = x2 n__terms(x1) = n__terms terms(x1) = terms n__s(x1) = n__s(x1) add(x1, x2) = add(x1, x2) sqr(x1) = sqr(x1) dbl(x1) = dbl(x1) first(x1, x2) = first(x1, x2) 0 = 0 nil = nil recip(x1) = recip(x1) Recursive path order with status [RPO]. Quasi-Precedence: [n__sqr_1, n__dbl_1, sqr_1, dbl_1] > [n__add_2, add_2] > [ACTIVATE_1, s_1, n__s_1] [n__sqr_1, n__dbl_1, sqr_1, dbl_1] > SQR_1 > [ACTIVATE_1, s_1, n__s_1] [n__sqr_1, n__dbl_1, sqr_1, dbl_1] > [n__first_2, FIRST_2, first_2, 0, nil] > [ACTIVATE_1, s_1, n__s_1] [n__terms, terms] > [ACTIVATE_1, s_1, n__s_1] Status: ACTIVATE_1: multiset status n__add_2: [2,1] s_1: multiset status n__sqr_1: [1] SQR_1: multiset status n__dbl_1: [1] n__first_2: [2,1] FIRST_2: [2,1] n__terms: [] terms: [] n__s_1: multiset status add_2: [2,1] sqr_1: [1] dbl_1: [1] first_2: [2,1] 0: multiset status nil: multiset status recip_1: [1] The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(X2)) activate(X) -> X sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) s(X) -> n__s(X) terms(X) -> n__terms(X) add(0, X) -> X add(X1, X2) -> n__add(X1, X2) sqr(0) -> 0 sqr(X) -> n__sqr(X) dbl(0) -> 0 dbl(X) -> n__dbl(X) first(0, X) -> nil first(X1, X2) -> n__first(X1, X2) first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(s(X), Y) -> s(n__add(activate(X), Y)) terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) ---------------------------------------- (12) Obligation: Q DP problem: The TRS P consists of the following rules: ADD(s(X), Y) -> ACTIVATE(X) DBL(s(X)) -> ACTIVATE(X) The TRS R consists of the following rules: terms(N) -> cons(recip(sqr(N)), n__terms(n__s(N))) sqr(0) -> 0 sqr(s(X)) -> s(n__add(n__sqr(activate(X)), n__dbl(activate(X)))) dbl(0) -> 0 dbl(s(X)) -> s(n__s(n__dbl(activate(X)))) add(0, X) -> X add(s(X), Y) -> s(n__add(activate(X), Y)) first(0, X) -> nil first(s(X), cons(Y, Z)) -> cons(Y, n__first(activate(X), activate(Z))) terms(X) -> n__terms(X) s(X) -> n__s(X) add(X1, X2) -> n__add(X1, X2) sqr(X) -> n__sqr(X) dbl(X) -> n__dbl(X) first(X1, X2) -> n__first(X1, X2) activate(n__terms(X)) -> terms(activate(X)) activate(n__s(X)) -> s(X) activate(n__add(X1, X2)) -> add(activate(X1), activate(X2)) activate(n__sqr(X)) -> sqr(activate(X)) activate(n__dbl(X)) -> dbl(activate(X)) activate(n__first(X1, X2)) -> first(activate(X1), activate(X2)) activate(X) -> X Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (13) DependencyGraphProof (EQUIVALENT) The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes. ---------------------------------------- (14) TRUE