165.77/46.62 YES 165.77/46.67 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 165.77/46.67 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 165.77/46.67 165.77/46.67 165.77/46.67 Termination w.r.t. Q of the given QTRS could be proven: 165.77/46.67 165.77/46.67 (0) QTRS 165.77/46.67 (1) DependencyPairsProof [EQUIVALENT, 96 ms] 165.77/46.67 (2) QDP 165.77/46.67 (3) QDPOrderProof [EQUIVALENT, 480 ms] 165.77/46.67 (4) QDP 165.77/46.67 (5) DependencyGraphProof [EQUIVALENT, 0 ms] 165.77/46.67 (6) QDP 165.77/46.67 (7) QDPOrderProof [EQUIVALENT, 458 ms] 165.77/46.67 (8) QDP 165.77/46.67 (9) QDPOrderProof [EQUIVALENT, 357 ms] 165.77/46.67 (10) QDP 165.77/46.67 (11) DependencyGraphProof [EQUIVALENT, 0 ms] 165.77/46.67 (12) QDP 165.77/46.67 (13) QDPOrderProof [EQUIVALENT, 360 ms] 165.77/46.67 (14) QDP 165.77/46.67 (15) QDPOrderProof [EQUIVALENT, 413 ms] 165.77/46.67 (16) QDP 165.77/46.67 (17) DependencyGraphProof [EQUIVALENT, 0 ms] 165.77/46.67 (18) QDP 165.77/46.67 (19) QDPOrderProof [EQUIVALENT, 414 ms] 165.77/46.67 (20) QDP 165.77/46.67 (21) QDPOrderProof [EQUIVALENT, 424 ms] 165.77/46.67 (22) QDP 165.77/46.67 (23) QDPOrderProof [EQUIVALENT, 331 ms] 165.77/46.67 (24) QDP 165.77/46.67 (25) QDPOrderProof [EQUIVALENT, 335 ms] 165.77/46.67 (26) QDP 165.77/46.67 (27) QDPOrderProof [EQUIVALENT, 360 ms] 165.77/46.67 (28) QDP 165.77/46.67 (29) QDPOrderProof [EQUIVALENT, 392 ms] 165.77/46.67 (30) QDP 165.77/46.67 (31) QDPOrderProof [EQUIVALENT, 262 ms] 165.77/46.67 (32) QDP 165.77/46.67 (33) QDPOrderProof [EQUIVALENT, 311 ms] 165.77/46.67 (34) QDP 165.77/46.67 (35) QDPOrderProof [EQUIVALENT, 368 ms] 165.77/46.67 (36) QDP 165.77/46.67 (37) QDPOrderProof [EQUIVALENT, 300 ms] 165.77/46.67 (38) QDP 165.77/46.67 (39) QDPOrderProof [EQUIVALENT, 548 ms] 165.77/46.67 (40) QDP 165.77/46.67 (41) DependencyGraphProof [EQUIVALENT, 0 ms] 165.77/46.67 (42) QDP 165.77/46.67 (43) UsableRulesProof [EQUIVALENT, 0 ms] 165.77/46.67 (44) QDP 165.77/46.67 (45) QReductionProof [EQUIVALENT, 0 ms] 165.77/46.67 (46) QDP 165.77/46.67 (47) QDPSizeChangeProof [EQUIVALENT, 0 ms] 165.77/46.67 (48) YES 165.77/46.67 165.77/46.67 165.77/46.67 ---------------------------------------- 165.77/46.67 165.77/46.67 (0) 165.77/46.67 Obligation: 165.77/46.67 Q restricted rewrite system: 165.77/46.67 The TRS R consists of the following rules: 165.77/46.67 165.77/46.67 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.67 a__2ndspos(0, Z) -> rnil 165.77/46.67 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.67 a__2ndsneg(0, Z) -> rnil 165.77/46.67 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.67 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.67 a__plus(0, Y) -> mark(Y) 165.77/46.67 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.67 a__times(0, Y) -> 0 165.77/46.67 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.67 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.67 mark(from(X)) -> a__from(mark(X)) 165.77/46.67 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.67 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.67 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.67 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.67 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.67 mark(square(X)) -> a__square(mark(X)) 165.77/46.67 mark(0) -> 0 165.77/46.67 mark(s(X)) -> s(mark(X)) 165.77/46.67 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.67 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.67 mark(nil) -> nil 165.77/46.67 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.67 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.67 mark(rnil) -> rnil 165.77/46.67 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.67 a__from(X) -> from(X) 165.77/46.67 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.67 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.67 a__pi(X) -> pi(X) 165.77/46.67 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.67 a__times(X1, X2) -> times(X1, X2) 165.77/46.67 a__square(X) -> square(X) 165.77/46.67 165.77/46.67 The set Q consists of the following terms: 165.77/46.67 165.77/46.67 a__from(x0) 165.77/46.67 a__pi(x0) 165.77/46.67 a__square(x0) 165.77/46.67 mark(from(x0)) 165.77/46.67 mark(2ndspos(x0, x1)) 165.77/46.67 mark(2ndsneg(x0, x1)) 165.77/46.67 mark(pi(x0)) 165.77/46.67 mark(plus(x0, x1)) 165.77/46.67 mark(times(x0, x1)) 165.77/46.67 mark(square(x0)) 165.77/46.67 mark(0) 165.77/46.67 mark(s(x0)) 165.77/46.67 mark(posrecip(x0)) 165.77/46.67 mark(negrecip(x0)) 165.77/46.67 mark(nil) 165.77/46.67 mark(cons(x0, x1)) 165.77/46.67 mark(cons2(x0, x1)) 165.77/46.67 mark(rnil) 165.77/46.67 mark(rcons(x0, x1)) 165.77/46.67 a__2ndspos(x0, x1) 165.77/46.67 a__2ndsneg(x0, x1) 165.77/46.67 a__plus(x0, x1) 165.77/46.67 a__times(x0, x1) 165.77/46.67 165.77/46.67 165.77/46.67 ---------------------------------------- 165.77/46.67 165.77/46.67 (1) DependencyPairsProof (EQUIVALENT) 165.77/46.67 Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem. 165.77/46.67 ---------------------------------------- 165.77/46.67 165.77/46.67 (2) 165.77/46.67 Obligation: 165.77/46.67 Q DP problem: 165.77/46.67 The TRS P consists of the following rules: 165.77/46.67 165.77/46.67 A__FROM(X) -> MARK(X) 165.77/46.67 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.67 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.67 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.67 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.67 A__PI(X) -> A__2NDSPOS(mark(X), a__from(0)) 165.77/46.67 A__PI(X) -> MARK(X) 165.77/46.67 A__PI(X) -> A__FROM(0) 165.77/46.67 A__PLUS(0, Y) -> MARK(Y) 165.77/46.67 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.67 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.67 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.67 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.67 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.67 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.67 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.67 A__SQUARE(X) -> A__TIMES(mark(X), mark(X)) 165.77/46.67 A__SQUARE(X) -> MARK(X) 165.77/46.67 MARK(from(X)) -> A__FROM(mark(X)) 165.77/46.67 MARK(from(X)) -> MARK(X) 165.77/46.67 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.67 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.67 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(pi(X)) -> A__PI(mark(X)) 165.77/46.67 MARK(pi(X)) -> MARK(X) 165.77/46.67 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.67 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.67 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(square(X)) -> A__SQUARE(mark(X)) 165.77/46.67 MARK(square(X)) -> MARK(X) 165.77/46.67 MARK(s(X)) -> MARK(X) 165.77/46.67 MARK(posrecip(X)) -> MARK(X) 165.77/46.67 MARK(negrecip(X)) -> MARK(X) 165.77/46.67 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.67 165.77/46.67 The TRS R consists of the following rules: 165.77/46.67 165.77/46.67 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.67 a__2ndspos(0, Z) -> rnil 165.77/46.67 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.67 a__2ndsneg(0, Z) -> rnil 165.77/46.67 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.67 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.67 a__plus(0, Y) -> mark(Y) 165.77/46.67 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.67 a__times(0, Y) -> 0 165.77/46.67 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.67 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.67 mark(from(X)) -> a__from(mark(X)) 165.77/46.67 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.67 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.67 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.67 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.67 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.67 mark(square(X)) -> a__square(mark(X)) 165.77/46.67 mark(0) -> 0 165.77/46.67 mark(s(X)) -> s(mark(X)) 165.77/46.67 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.67 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.67 mark(nil) -> nil 165.77/46.67 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.67 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.67 mark(rnil) -> rnil 165.77/46.67 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.67 a__from(X) -> from(X) 165.77/46.67 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.67 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.67 a__pi(X) -> pi(X) 165.77/46.67 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.67 a__times(X1, X2) -> times(X1, X2) 165.77/46.67 a__square(X) -> square(X) 165.77/46.67 165.77/46.67 The set Q consists of the following terms: 165.77/46.67 165.77/46.67 a__from(x0) 165.77/46.67 a__pi(x0) 165.77/46.67 a__square(x0) 165.77/46.67 mark(from(x0)) 165.77/46.67 mark(2ndspos(x0, x1)) 165.77/46.67 mark(2ndsneg(x0, x1)) 165.77/46.67 mark(pi(x0)) 165.77/46.67 mark(plus(x0, x1)) 165.77/46.67 mark(times(x0, x1)) 165.77/46.67 mark(square(x0)) 165.77/46.67 mark(0) 165.77/46.67 mark(s(x0)) 165.77/46.67 mark(posrecip(x0)) 165.77/46.67 mark(negrecip(x0)) 165.77/46.67 mark(nil) 165.77/46.67 mark(cons(x0, x1)) 165.77/46.67 mark(cons2(x0, x1)) 165.77/46.67 mark(rnil) 165.77/46.67 mark(rcons(x0, x1)) 165.77/46.67 a__2ndspos(x0, x1) 165.77/46.67 a__2ndsneg(x0, x1) 165.77/46.67 a__plus(x0, x1) 165.77/46.67 a__times(x0, x1) 165.77/46.67 165.77/46.67 We have to consider all minimal (P,Q,R)-chains. 165.77/46.67 ---------------------------------------- 165.77/46.67 165.77/46.67 (3) QDPOrderProof (EQUIVALENT) 165.77/46.67 We use the reduction pair processor [LPAR04,JAR06]. 165.77/46.67 165.77/46.67 165.77/46.67 The following pairs can be oriented strictly and are deleted. 165.77/46.67 165.77/46.67 MARK(square(X)) -> A__SQUARE(mark(X)) 165.77/46.67 MARK(square(X)) -> MARK(X) 165.77/46.67 The remaining pairs can at least be oriented weakly. 165.77/46.67 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__FROM(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(MARK(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__2NDSPOS(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(s(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(mark(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__2NDSNEG(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__PI(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(a__from(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(0) = [[0A]] 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__PLUS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__TIMES(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(a__times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__SQUARE(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(from(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(pi(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(square(x_1)) = [[1A]] + [[1A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(rcons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(a__2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(a__2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(a__pi(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(a__plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(a__square(x_1)) = [[1A]] + [[1A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(nil) = [[0A]] 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(rnil) = [[0A]] 165.77/46.67 >>> 165.77/46.67 165.77/46.67 165.77/46.67 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 165.77/46.67 165.77/46.67 mark(from(X)) -> a__from(mark(X)) 165.77/46.67 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.67 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.67 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.67 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.67 a__plus(0, Y) -> mark(Y) 165.77/46.67 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.67 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.67 mark(square(X)) -> a__square(mark(X)) 165.77/46.67 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.67 mark(0) -> 0 165.77/46.67 mark(s(X)) -> s(mark(X)) 165.77/46.67 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.67 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.67 mark(nil) -> nil 165.77/46.67 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.67 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.67 mark(rnil) -> rnil 165.77/46.67 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.67 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.67 a__from(X) -> from(X) 165.77/46.67 a__times(0, Y) -> 0 165.77/46.67 a__times(X1, X2) -> times(X1, X2) 165.77/46.67 a__2ndspos(0, Z) -> rnil 165.77/46.67 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.67 a__2ndsneg(0, Z) -> rnil 165.77/46.67 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.67 a__pi(X) -> pi(X) 165.77/46.67 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.67 a__square(X) -> square(X) 165.77/46.67 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.67 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.67 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.67 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.67 165.77/46.67 165.77/46.67 ---------------------------------------- 165.77/46.67 165.77/46.67 (4) 165.77/46.67 Obligation: 165.77/46.67 Q DP problem: 165.77/46.67 The TRS P consists of the following rules: 165.77/46.67 165.77/46.67 A__FROM(X) -> MARK(X) 165.77/46.67 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.67 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.67 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.67 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.67 A__PI(X) -> A__2NDSPOS(mark(X), a__from(0)) 165.77/46.67 A__PI(X) -> MARK(X) 165.77/46.67 A__PI(X) -> A__FROM(0) 165.77/46.67 A__PLUS(0, Y) -> MARK(Y) 165.77/46.67 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.67 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.67 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.67 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.67 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.67 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.67 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.67 A__SQUARE(X) -> A__TIMES(mark(X), mark(X)) 165.77/46.67 A__SQUARE(X) -> MARK(X) 165.77/46.67 MARK(from(X)) -> A__FROM(mark(X)) 165.77/46.67 MARK(from(X)) -> MARK(X) 165.77/46.67 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.67 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.67 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(pi(X)) -> A__PI(mark(X)) 165.77/46.67 MARK(pi(X)) -> MARK(X) 165.77/46.67 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.67 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.67 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(s(X)) -> MARK(X) 165.77/46.67 MARK(posrecip(X)) -> MARK(X) 165.77/46.67 MARK(negrecip(X)) -> MARK(X) 165.77/46.67 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.67 165.77/46.67 The TRS R consists of the following rules: 165.77/46.67 165.77/46.67 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.67 a__2ndspos(0, Z) -> rnil 165.77/46.67 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.67 a__2ndsneg(0, Z) -> rnil 165.77/46.67 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.67 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.67 a__plus(0, Y) -> mark(Y) 165.77/46.67 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.67 a__times(0, Y) -> 0 165.77/46.67 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.67 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.67 mark(from(X)) -> a__from(mark(X)) 165.77/46.67 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.67 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.67 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.67 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.67 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.67 mark(square(X)) -> a__square(mark(X)) 165.77/46.67 mark(0) -> 0 165.77/46.67 mark(s(X)) -> s(mark(X)) 165.77/46.67 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.67 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.67 mark(nil) -> nil 165.77/46.67 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.67 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.67 mark(rnil) -> rnil 165.77/46.67 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.67 a__from(X) -> from(X) 165.77/46.67 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.67 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.67 a__pi(X) -> pi(X) 165.77/46.67 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.67 a__times(X1, X2) -> times(X1, X2) 165.77/46.67 a__square(X) -> square(X) 165.77/46.67 165.77/46.67 The set Q consists of the following terms: 165.77/46.67 165.77/46.67 a__from(x0) 165.77/46.67 a__pi(x0) 165.77/46.67 a__square(x0) 165.77/46.67 mark(from(x0)) 165.77/46.67 mark(2ndspos(x0, x1)) 165.77/46.67 mark(2ndsneg(x0, x1)) 165.77/46.67 mark(pi(x0)) 165.77/46.67 mark(plus(x0, x1)) 165.77/46.67 mark(times(x0, x1)) 165.77/46.67 mark(square(x0)) 165.77/46.67 mark(0) 165.77/46.67 mark(s(x0)) 165.77/46.67 mark(posrecip(x0)) 165.77/46.67 mark(negrecip(x0)) 165.77/46.67 mark(nil) 165.77/46.67 mark(cons(x0, x1)) 165.77/46.67 mark(cons2(x0, x1)) 165.77/46.67 mark(rnil) 165.77/46.67 mark(rcons(x0, x1)) 165.77/46.67 a__2ndspos(x0, x1) 165.77/46.67 a__2ndsneg(x0, x1) 165.77/46.67 a__plus(x0, x1) 165.77/46.67 a__times(x0, x1) 165.77/46.67 165.77/46.67 We have to consider all minimal (P,Q,R)-chains. 165.77/46.67 ---------------------------------------- 165.77/46.67 165.77/46.67 (5) DependencyGraphProof (EQUIVALENT) 165.77/46.67 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes. 165.77/46.67 ---------------------------------------- 165.77/46.67 165.77/46.67 (6) 165.77/46.67 Obligation: 165.77/46.67 Q DP problem: 165.77/46.67 The TRS P consists of the following rules: 165.77/46.67 165.77/46.67 MARK(from(X)) -> A__FROM(mark(X)) 165.77/46.67 A__FROM(X) -> MARK(X) 165.77/46.67 MARK(from(X)) -> MARK(X) 165.77/46.67 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.67 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.67 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.67 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.67 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(pi(X)) -> A__PI(mark(X)) 165.77/46.67 A__PI(X) -> A__2NDSPOS(mark(X), a__from(0)) 165.77/46.67 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.67 MARK(pi(X)) -> MARK(X) 165.77/46.67 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.67 A__PLUS(0, Y) -> MARK(Y) 165.77/46.67 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.67 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.67 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.67 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.67 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(s(X)) -> MARK(X) 165.77/46.67 MARK(posrecip(X)) -> MARK(X) 165.77/46.67 MARK(negrecip(X)) -> MARK(X) 165.77/46.67 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.67 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.67 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.67 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.67 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.67 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.67 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.67 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.67 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.67 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.67 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.67 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.67 A__PI(X) -> MARK(X) 165.77/46.67 A__PI(X) -> A__FROM(0) 165.77/46.67 165.77/46.67 The TRS R consists of the following rules: 165.77/46.67 165.77/46.67 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.67 a__2ndspos(0, Z) -> rnil 165.77/46.67 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.67 a__2ndsneg(0, Z) -> rnil 165.77/46.67 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.67 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.67 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.67 a__plus(0, Y) -> mark(Y) 165.77/46.67 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.67 a__times(0, Y) -> 0 165.77/46.67 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.67 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.67 mark(from(X)) -> a__from(mark(X)) 165.77/46.67 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.67 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.67 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.67 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.67 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.67 mark(square(X)) -> a__square(mark(X)) 165.77/46.67 mark(0) -> 0 165.77/46.67 mark(s(X)) -> s(mark(X)) 165.77/46.67 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.67 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.67 mark(nil) -> nil 165.77/46.67 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.67 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.67 mark(rnil) -> rnil 165.77/46.67 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.67 a__from(X) -> from(X) 165.77/46.67 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.67 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.67 a__pi(X) -> pi(X) 165.77/46.67 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.67 a__times(X1, X2) -> times(X1, X2) 165.77/46.67 a__square(X) -> square(X) 165.77/46.67 165.77/46.67 The set Q consists of the following terms: 165.77/46.67 165.77/46.67 a__from(x0) 165.77/46.67 a__pi(x0) 165.77/46.67 a__square(x0) 165.77/46.67 mark(from(x0)) 165.77/46.67 mark(2ndspos(x0, x1)) 165.77/46.67 mark(2ndsneg(x0, x1)) 165.77/46.67 mark(pi(x0)) 165.77/46.67 mark(plus(x0, x1)) 165.77/46.67 mark(times(x0, x1)) 165.77/46.67 mark(square(x0)) 165.77/46.67 mark(0) 165.77/46.67 mark(s(x0)) 165.77/46.67 mark(posrecip(x0)) 165.77/46.67 mark(negrecip(x0)) 165.77/46.67 mark(nil) 165.77/46.67 mark(cons(x0, x1)) 165.77/46.67 mark(cons2(x0, x1)) 165.77/46.67 mark(rnil) 165.77/46.67 mark(rcons(x0, x1)) 165.77/46.67 a__2ndspos(x0, x1) 165.77/46.67 a__2ndsneg(x0, x1) 165.77/46.67 a__plus(x0, x1) 165.77/46.67 a__times(x0, x1) 165.77/46.67 165.77/46.67 We have to consider all minimal (P,Q,R)-chains. 165.77/46.67 ---------------------------------------- 165.77/46.67 165.77/46.67 (7) QDPOrderProof (EQUIVALENT) 165.77/46.67 We use the reduction pair processor [LPAR04,JAR06]. 165.77/46.67 165.77/46.67 165.77/46.67 The following pairs can be oriented strictly and are deleted. 165.77/46.67 165.77/46.67 MARK(pi(X)) -> MARK(X) 165.77/46.67 The remaining pairs can at least be oriented weakly. 165.77/46.67 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(MARK(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(from(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__FROM(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(mark(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(2ndspos(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__2NDSPOS(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(s(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__2NDSNEG(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(pi(x_1)) = [[3A]] + [[1A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__PI(x_1)) = [[2A]] + [[1A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(a__from(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(0) = [[0A]] 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__PLUS(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.67 POL(A__TIMES(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.67 >>> 165.77/46.67 165.77/46.67 <<< 165.77/46.68 POL(a__times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rcons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndspos(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__pi(x_1)) = [[3A]] + [[1A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(square(x_1)) = [[5A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__square(x_1)) = [[5A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(nil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rnil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 165.77/46.68 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 165.77/46.68 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 165.77/46.68 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (8) 165.77/46.68 Obligation: 165.77/46.68 Q DP problem: 165.77/46.68 The TRS P consists of the following rules: 165.77/46.68 165.77/46.68 MARK(from(X)) -> A__FROM(mark(X)) 165.77/46.68 A__FROM(X) -> MARK(X) 165.77/46.68 MARK(from(X)) -> MARK(X) 165.77/46.68 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(pi(X)) -> A__PI(mark(X)) 165.77/46.68 A__PI(X) -> A__2NDSPOS(mark(X), a__from(0)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.68 A__PLUS(0, Y) -> MARK(Y) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.68 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(s(X)) -> MARK(X) 165.77/46.68 MARK(posrecip(X)) -> MARK(X) 165.77/46.68 MARK(negrecip(X)) -> MARK(X) 165.77/46.68 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__PI(X) -> MARK(X) 165.77/46.68 A__PI(X) -> A__FROM(0) 165.77/46.68 165.77/46.68 The TRS R consists of the following rules: 165.77/46.68 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 165.77/46.68 The set Q consists of the following terms: 165.77/46.68 165.77/46.68 a__from(x0) 165.77/46.68 a__pi(x0) 165.77/46.68 a__square(x0) 165.77/46.68 mark(from(x0)) 165.77/46.68 mark(2ndspos(x0, x1)) 165.77/46.68 mark(2ndsneg(x0, x1)) 165.77/46.68 mark(pi(x0)) 165.77/46.68 mark(plus(x0, x1)) 165.77/46.68 mark(times(x0, x1)) 165.77/46.68 mark(square(x0)) 165.77/46.68 mark(0) 165.77/46.68 mark(s(x0)) 165.77/46.68 mark(posrecip(x0)) 165.77/46.68 mark(negrecip(x0)) 165.77/46.68 mark(nil) 165.77/46.68 mark(cons(x0, x1)) 165.77/46.68 mark(cons2(x0, x1)) 165.77/46.68 mark(rnil) 165.77/46.68 mark(rcons(x0, x1)) 165.77/46.68 a__2ndspos(x0, x1) 165.77/46.68 a__2ndsneg(x0, x1) 165.77/46.68 a__plus(x0, x1) 165.77/46.68 a__times(x0, x1) 165.77/46.68 165.77/46.68 We have to consider all minimal (P,Q,R)-chains. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (9) QDPOrderProof (EQUIVALENT) 165.77/46.68 We use the reduction pair processor [LPAR04,JAR06]. 165.77/46.68 165.77/46.68 165.77/46.68 The following pairs can be oriented strictly and are deleted. 165.77/46.68 165.77/46.68 MARK(pi(X)) -> A__PI(mark(X)) 165.77/46.68 The remaining pairs can at least be oriented weakly. 165.77/46.68 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(MARK(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(from(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__FROM(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(mark(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSPOS(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(s(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSNEG(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(pi(x_1)) = [[3A]] + [[3A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__PI(x_1)) = [[0A]] + [[2A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__from(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(0) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__PLUS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(times(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__TIMES(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rcons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndspos(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__pi(x_1)) = [[3A]] + [[3A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__plus(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(square(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__square(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(nil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rnil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 165.77/46.68 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 165.77/46.68 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 165.77/46.68 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (10) 165.77/46.68 Obligation: 165.77/46.68 Q DP problem: 165.77/46.68 The TRS P consists of the following rules: 165.77/46.68 165.77/46.68 MARK(from(X)) -> A__FROM(mark(X)) 165.77/46.68 A__FROM(X) -> MARK(X) 165.77/46.68 MARK(from(X)) -> MARK(X) 165.77/46.68 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.68 A__PI(X) -> A__2NDSPOS(mark(X), a__from(0)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.68 A__PLUS(0, Y) -> MARK(Y) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.68 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(s(X)) -> MARK(X) 165.77/46.68 MARK(posrecip(X)) -> MARK(X) 165.77/46.68 MARK(negrecip(X)) -> MARK(X) 165.77/46.68 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__PI(X) -> MARK(X) 165.77/46.68 A__PI(X) -> A__FROM(0) 165.77/46.68 165.77/46.68 The TRS R consists of the following rules: 165.77/46.68 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 165.77/46.68 The set Q consists of the following terms: 165.77/46.68 165.77/46.68 a__from(x0) 165.77/46.68 a__pi(x0) 165.77/46.68 a__square(x0) 165.77/46.68 mark(from(x0)) 165.77/46.68 mark(2ndspos(x0, x1)) 165.77/46.68 mark(2ndsneg(x0, x1)) 165.77/46.68 mark(pi(x0)) 165.77/46.68 mark(plus(x0, x1)) 165.77/46.68 mark(times(x0, x1)) 165.77/46.68 mark(square(x0)) 165.77/46.68 mark(0) 165.77/46.68 mark(s(x0)) 165.77/46.68 mark(posrecip(x0)) 165.77/46.68 mark(negrecip(x0)) 165.77/46.68 mark(nil) 165.77/46.68 mark(cons(x0, x1)) 165.77/46.68 mark(cons2(x0, x1)) 165.77/46.68 mark(rnil) 165.77/46.68 mark(rcons(x0, x1)) 165.77/46.68 a__2ndspos(x0, x1) 165.77/46.68 a__2ndsneg(x0, x1) 165.77/46.68 a__plus(x0, x1) 165.77/46.68 a__times(x0, x1) 165.77/46.68 165.77/46.68 We have to consider all minimal (P,Q,R)-chains. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (11) DependencyGraphProof (EQUIVALENT) 165.77/46.68 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (12) 165.77/46.68 Obligation: 165.77/46.68 Q DP problem: 165.77/46.68 The TRS P consists of the following rules: 165.77/46.68 165.77/46.68 A__FROM(X) -> MARK(X) 165.77/46.68 MARK(from(X)) -> A__FROM(mark(X)) 165.77/46.68 MARK(from(X)) -> MARK(X) 165.77/46.68 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.68 A__PLUS(0, Y) -> MARK(Y) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.68 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(s(X)) -> MARK(X) 165.77/46.68 MARK(posrecip(X)) -> MARK(X) 165.77/46.68 MARK(negrecip(X)) -> MARK(X) 165.77/46.68 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 165.77/46.68 The TRS R consists of the following rules: 165.77/46.68 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 165.77/46.68 The set Q consists of the following terms: 165.77/46.68 165.77/46.68 a__from(x0) 165.77/46.68 a__pi(x0) 165.77/46.68 a__square(x0) 165.77/46.68 mark(from(x0)) 165.77/46.68 mark(2ndspos(x0, x1)) 165.77/46.68 mark(2ndsneg(x0, x1)) 165.77/46.68 mark(pi(x0)) 165.77/46.68 mark(plus(x0, x1)) 165.77/46.68 mark(times(x0, x1)) 165.77/46.68 mark(square(x0)) 165.77/46.68 mark(0) 165.77/46.68 mark(s(x0)) 165.77/46.68 mark(posrecip(x0)) 165.77/46.68 mark(negrecip(x0)) 165.77/46.68 mark(nil) 165.77/46.68 mark(cons(x0, x1)) 165.77/46.68 mark(cons2(x0, x1)) 165.77/46.68 mark(rnil) 165.77/46.68 mark(rcons(x0, x1)) 165.77/46.68 a__2ndspos(x0, x1) 165.77/46.68 a__2ndsneg(x0, x1) 165.77/46.68 a__plus(x0, x1) 165.77/46.68 a__times(x0, x1) 165.77/46.68 165.77/46.68 We have to consider all minimal (P,Q,R)-chains. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (13) QDPOrderProof (EQUIVALENT) 165.77/46.68 We use the reduction pair processor [LPAR04,JAR06]. 165.77/46.68 165.77/46.68 165.77/46.68 The following pairs can be oriented strictly and are deleted. 165.77/46.68 165.77/46.68 MARK(from(X)) -> MARK(X) 165.77/46.68 The remaining pairs can at least be oriented weakly. 165.77/46.68 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__FROM(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(MARK(x_1)) = [[1A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(from(x_1)) = [[2A]] + [[1A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(mark(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSPOS(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(s(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSNEG(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__PLUS(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(0) = [[1A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(times(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__TIMES(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rcons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__from(x_1)) = [[2A]] + [[1A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndspos(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(pi(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__pi(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__plus(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(square(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__square(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(nil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rnil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 165.77/46.68 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 165.77/46.68 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 165.77/46.68 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (14) 165.77/46.68 Obligation: 165.77/46.68 Q DP problem: 165.77/46.68 The TRS P consists of the following rules: 165.77/46.68 165.77/46.68 A__FROM(X) -> MARK(X) 165.77/46.68 MARK(from(X)) -> A__FROM(mark(X)) 165.77/46.68 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.68 A__PLUS(0, Y) -> MARK(Y) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.68 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(s(X)) -> MARK(X) 165.77/46.68 MARK(posrecip(X)) -> MARK(X) 165.77/46.68 MARK(negrecip(X)) -> MARK(X) 165.77/46.68 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 165.77/46.68 The TRS R consists of the following rules: 165.77/46.68 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 165.77/46.68 The set Q consists of the following terms: 165.77/46.68 165.77/46.68 a__from(x0) 165.77/46.68 a__pi(x0) 165.77/46.68 a__square(x0) 165.77/46.68 mark(from(x0)) 165.77/46.68 mark(2ndspos(x0, x1)) 165.77/46.68 mark(2ndsneg(x0, x1)) 165.77/46.68 mark(pi(x0)) 165.77/46.68 mark(plus(x0, x1)) 165.77/46.68 mark(times(x0, x1)) 165.77/46.68 mark(square(x0)) 165.77/46.68 mark(0) 165.77/46.68 mark(s(x0)) 165.77/46.68 mark(posrecip(x0)) 165.77/46.68 mark(negrecip(x0)) 165.77/46.68 mark(nil) 165.77/46.68 mark(cons(x0, x1)) 165.77/46.68 mark(cons2(x0, x1)) 165.77/46.68 mark(rnil) 165.77/46.68 mark(rcons(x0, x1)) 165.77/46.68 a__2ndspos(x0, x1) 165.77/46.68 a__2ndsneg(x0, x1) 165.77/46.68 a__plus(x0, x1) 165.77/46.68 a__times(x0, x1) 165.77/46.68 165.77/46.68 We have to consider all minimal (P,Q,R)-chains. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (15) QDPOrderProof (EQUIVALENT) 165.77/46.68 We use the reduction pair processor [LPAR04,JAR06]. 165.77/46.68 165.77/46.68 165.77/46.68 The following pairs can be oriented strictly and are deleted. 165.77/46.68 165.77/46.68 A__FROM(X) -> MARK(X) 165.77/46.68 The remaining pairs can at least be oriented weakly. 165.77/46.68 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__FROM(x_1)) = [[2A]] + [[1A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(MARK(x_1)) = [[1A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(from(x_1)) = [[2A]] + [[1A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(mark(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSPOS(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(s(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSNEG(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__PLUS(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(0) = [[1A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(times(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__TIMES(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__times(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rcons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__from(x_1)) = [[2A]] + [[1A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndspos(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(pi(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__pi(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(square(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__square(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(nil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rnil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 165.77/46.68 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 165.77/46.68 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 165.77/46.68 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (16) 165.77/46.68 Obligation: 165.77/46.68 Q DP problem: 165.77/46.68 The TRS P consists of the following rules: 165.77/46.68 165.77/46.68 MARK(from(X)) -> A__FROM(mark(X)) 165.77/46.68 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.68 A__PLUS(0, Y) -> MARK(Y) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.68 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(s(X)) -> MARK(X) 165.77/46.68 MARK(posrecip(X)) -> MARK(X) 165.77/46.68 MARK(negrecip(X)) -> MARK(X) 165.77/46.68 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 165.77/46.68 The TRS R consists of the following rules: 165.77/46.68 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 165.77/46.68 The set Q consists of the following terms: 165.77/46.68 165.77/46.68 a__from(x0) 165.77/46.68 a__pi(x0) 165.77/46.68 a__square(x0) 165.77/46.68 mark(from(x0)) 165.77/46.68 mark(2ndspos(x0, x1)) 165.77/46.68 mark(2ndsneg(x0, x1)) 165.77/46.68 mark(pi(x0)) 165.77/46.68 mark(plus(x0, x1)) 165.77/46.68 mark(times(x0, x1)) 165.77/46.68 mark(square(x0)) 165.77/46.68 mark(0) 165.77/46.68 mark(s(x0)) 165.77/46.68 mark(posrecip(x0)) 165.77/46.68 mark(negrecip(x0)) 165.77/46.68 mark(nil) 165.77/46.68 mark(cons(x0, x1)) 165.77/46.68 mark(cons2(x0, x1)) 165.77/46.68 mark(rnil) 165.77/46.68 mark(rcons(x0, x1)) 165.77/46.68 a__2ndspos(x0, x1) 165.77/46.68 a__2ndsneg(x0, x1) 165.77/46.68 a__plus(x0, x1) 165.77/46.68 a__times(x0, x1) 165.77/46.68 165.77/46.68 We have to consider all minimal (P,Q,R)-chains. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (17) DependencyGraphProof (EQUIVALENT) 165.77/46.68 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (18) 165.77/46.68 Obligation: 165.77/46.68 Q DP problem: 165.77/46.68 The TRS P consists of the following rules: 165.77/46.68 165.77/46.68 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.68 A__PLUS(0, Y) -> MARK(Y) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.68 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(s(X)) -> MARK(X) 165.77/46.68 MARK(posrecip(X)) -> MARK(X) 165.77/46.68 MARK(negrecip(X)) -> MARK(X) 165.77/46.68 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 165.77/46.68 The TRS R consists of the following rules: 165.77/46.68 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 165.77/46.68 The set Q consists of the following terms: 165.77/46.68 165.77/46.68 a__from(x0) 165.77/46.68 a__pi(x0) 165.77/46.68 a__square(x0) 165.77/46.68 mark(from(x0)) 165.77/46.68 mark(2ndspos(x0, x1)) 165.77/46.68 mark(2ndsneg(x0, x1)) 165.77/46.68 mark(pi(x0)) 165.77/46.68 mark(plus(x0, x1)) 165.77/46.68 mark(times(x0, x1)) 165.77/46.68 mark(square(x0)) 165.77/46.68 mark(0) 165.77/46.68 mark(s(x0)) 165.77/46.68 mark(posrecip(x0)) 165.77/46.68 mark(negrecip(x0)) 165.77/46.68 mark(nil) 165.77/46.68 mark(cons(x0, x1)) 165.77/46.68 mark(cons2(x0, x1)) 165.77/46.68 mark(rnil) 165.77/46.68 mark(rcons(x0, x1)) 165.77/46.68 a__2ndspos(x0, x1) 165.77/46.68 a__2ndsneg(x0, x1) 165.77/46.68 a__plus(x0, x1) 165.77/46.68 a__times(x0, x1) 165.77/46.68 165.77/46.68 We have to consider all minimal (P,Q,R)-chains. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (19) QDPOrderProof (EQUIVALENT) 165.77/46.68 We use the reduction pair processor [LPAR04,JAR06]. 165.77/46.68 165.77/46.68 165.77/46.68 The following pairs can be oriented strictly and are deleted. 165.77/46.68 165.77/46.68 A__TIMES(s(X), Y) -> MARK(X) 165.77/46.68 The remaining pairs can at least be oriented weakly. 165.77/46.68 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(MARK(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSPOS(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(mark(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(s(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSNEG(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__PLUS(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(0) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(times(x_1, x_2)) = [[-I]] + [[4A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__TIMES(x_1, x_2)) = [[-I]] + [[4A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__times(x_1, x_2)) = [[-I]] + [[4A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(posrecip(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rcons(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(from(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__from(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(pi(x_1)) = [[1A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__pi(x_1)) = [[1A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(square(x_1)) = [[0A]] + [[4A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__square(x_1)) = [[0A]] + [[4A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(nil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rnil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 165.77/46.68 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 165.77/46.68 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 165.77/46.68 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (20) 165.77/46.68 Obligation: 165.77/46.68 Q DP problem: 165.77/46.68 The TRS P consists of the following rules: 165.77/46.68 165.77/46.68 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.68 A__PLUS(0, Y) -> MARK(Y) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.68 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(s(X)) -> MARK(X) 165.77/46.68 MARK(posrecip(X)) -> MARK(X) 165.77/46.68 MARK(negrecip(X)) -> MARK(X) 165.77/46.68 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 165.77/46.68 The TRS R consists of the following rules: 165.77/46.68 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 165.77/46.68 The set Q consists of the following terms: 165.77/46.68 165.77/46.68 a__from(x0) 165.77/46.68 a__pi(x0) 165.77/46.68 a__square(x0) 165.77/46.68 mark(from(x0)) 165.77/46.68 mark(2ndspos(x0, x1)) 165.77/46.68 mark(2ndsneg(x0, x1)) 165.77/46.68 mark(pi(x0)) 165.77/46.68 mark(plus(x0, x1)) 165.77/46.68 mark(times(x0, x1)) 165.77/46.68 mark(square(x0)) 165.77/46.68 mark(0) 165.77/46.68 mark(s(x0)) 165.77/46.68 mark(posrecip(x0)) 165.77/46.68 mark(negrecip(x0)) 165.77/46.68 mark(nil) 165.77/46.68 mark(cons(x0, x1)) 165.77/46.68 mark(cons2(x0, x1)) 165.77/46.68 mark(rnil) 165.77/46.68 mark(rcons(x0, x1)) 165.77/46.68 a__2ndspos(x0, x1) 165.77/46.68 a__2ndsneg(x0, x1) 165.77/46.68 a__plus(x0, x1) 165.77/46.68 a__times(x0, x1) 165.77/46.68 165.77/46.68 We have to consider all minimal (P,Q,R)-chains. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (21) QDPOrderProof (EQUIVALENT) 165.77/46.68 We use the reduction pair processor [LPAR04,JAR06]. 165.77/46.68 165.77/46.68 165.77/46.68 The following pairs can be oriented strictly and are deleted. 165.77/46.68 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X2) 165.77/46.68 The remaining pairs can at least be oriented weakly. 165.77/46.68 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(MARK(x_1)) = [[1A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndspos(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[1A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSPOS(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(mark(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(s(x_1)) = [[1A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndsneg(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[1A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSNEG(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__PLUS(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(0) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(times(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__TIMES(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__times(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(posrecip(x_1)) = [[1A]] + [[1A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(negrecip(x_1)) = [[1A]] + [[1A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rcons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(from(x_1)) = [[1A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__from(x_1)) = [[1A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndspos(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[1A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__2ndsneg(x_1, x_2)) = [[2A]] + [[0A]] * x_1 + [[1A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(pi(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__pi(x_1)) = [[2A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__plus(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(square(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(a__square(x_1)) = [[0A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(nil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(rnil) = [[0A]] 165.77/46.68 >>> 165.77/46.68 165.77/46.68 165.77/46.68 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 165.77/46.68 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 165.77/46.68 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (22) 165.77/46.68 Obligation: 165.77/46.68 Q DP problem: 165.77/46.68 The TRS P consists of the following rules: 165.77/46.68 165.77/46.68 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 165.77/46.68 A__PLUS(0, Y) -> MARK(Y) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(plus(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 165.77/46.68 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(X) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(times(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(s(X)) -> MARK(X) 165.77/46.68 MARK(posrecip(X)) -> MARK(X) 165.77/46.68 MARK(negrecip(X)) -> MARK(X) 165.77/46.68 MARK(cons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(cons2(X1, X2)) -> MARK(X2) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(rcons(X1, X2)) -> MARK(X2) 165.77/46.68 A__PLUS(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> MARK(Y) 165.77/46.68 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 165.77/46.68 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 165.77/46.68 165.77/46.68 The TRS R consists of the following rules: 165.77/46.68 165.77/46.68 a__from(X) -> cons(mark(X), from(s(X))) 165.77/46.68 a__2ndspos(0, Z) -> rnil 165.77/46.68 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 165.77/46.68 a__2ndsneg(0, Z) -> rnil 165.77/46.68 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 165.77/46.68 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 165.77/46.68 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 165.77/46.68 a__plus(0, Y) -> mark(Y) 165.77/46.68 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 165.77/46.68 a__times(0, Y) -> 0 165.77/46.68 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 165.77/46.68 a__square(X) -> a__times(mark(X), mark(X)) 165.77/46.68 mark(from(X)) -> a__from(mark(X)) 165.77/46.68 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 165.77/46.68 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 165.77/46.68 mark(pi(X)) -> a__pi(mark(X)) 165.77/46.68 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 165.77/46.68 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 165.77/46.68 mark(square(X)) -> a__square(mark(X)) 165.77/46.68 mark(0) -> 0 165.77/46.68 mark(s(X)) -> s(mark(X)) 165.77/46.68 mark(posrecip(X)) -> posrecip(mark(X)) 165.77/46.68 mark(negrecip(X)) -> negrecip(mark(X)) 165.77/46.68 mark(nil) -> nil 165.77/46.68 mark(cons(X1, X2)) -> cons(mark(X1), X2) 165.77/46.68 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 165.77/46.68 mark(rnil) -> rnil 165.77/46.68 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 165.77/46.68 a__from(X) -> from(X) 165.77/46.68 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 165.77/46.68 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 165.77/46.68 a__pi(X) -> pi(X) 165.77/46.68 a__plus(X1, X2) -> plus(X1, X2) 165.77/46.68 a__times(X1, X2) -> times(X1, X2) 165.77/46.68 a__square(X) -> square(X) 165.77/46.68 165.77/46.68 The set Q consists of the following terms: 165.77/46.68 165.77/46.68 a__from(x0) 165.77/46.68 a__pi(x0) 165.77/46.68 a__square(x0) 165.77/46.68 mark(from(x0)) 165.77/46.68 mark(2ndspos(x0, x1)) 165.77/46.68 mark(2ndsneg(x0, x1)) 165.77/46.68 mark(pi(x0)) 165.77/46.68 mark(plus(x0, x1)) 165.77/46.68 mark(times(x0, x1)) 165.77/46.68 mark(square(x0)) 165.77/46.68 mark(0) 165.77/46.68 mark(s(x0)) 165.77/46.68 mark(posrecip(x0)) 165.77/46.68 mark(negrecip(x0)) 165.77/46.68 mark(nil) 165.77/46.68 mark(cons(x0, x1)) 165.77/46.68 mark(cons2(x0, x1)) 165.77/46.68 mark(rnil) 165.77/46.68 mark(rcons(x0, x1)) 165.77/46.68 a__2ndspos(x0, x1) 165.77/46.68 a__2ndsneg(x0, x1) 165.77/46.68 a__plus(x0, x1) 165.77/46.68 a__times(x0, x1) 165.77/46.68 165.77/46.68 We have to consider all minimal (P,Q,R)-chains. 165.77/46.68 ---------------------------------------- 165.77/46.68 165.77/46.68 (23) QDPOrderProof (EQUIVALENT) 165.77/46.68 We use the reduction pair processor [LPAR04,JAR06]. 165.77/46.68 165.77/46.68 165.77/46.68 The following pairs can be oriented strictly and are deleted. 165.77/46.68 165.77/46.68 MARK(2ndspos(X1, X2)) -> MARK(X1) 165.77/46.68 MARK(2ndsneg(X1, X2)) -> MARK(X1) 165.77/46.68 The remaining pairs can at least be oriented weakly. 165.77/46.68 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(MARK(x_1)) = [[1A]] + [[0A]] * x_1 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(2ndspos(x_1, x_2)) = [[2A]] + [[1A]] * x_1 + [[0A]] * x_2 165.77/46.68 >>> 165.77/46.68 165.77/46.68 <<< 165.77/46.68 POL(A__2NDSPOS(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(mark(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(s(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(2ndsneg(x_1, x_2)) = [[2A]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(A__2NDSNEG(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(A__PLUS(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(0) = [[1A]] 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(A__TIMES(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(a__times(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(posrecip(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(rcons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(from(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(a__from(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(a__2ndspos(x_1, x_2)) = [[2A]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(a__2ndsneg(x_1, x_2)) = [[2A]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(pi(x_1)) = [[2A]] + [[1A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(a__pi(x_1)) = [[2A]] + [[1A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(a__plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(square(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(a__square(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(nil) = [[0A]] 166.03/46.69 >>> 166.03/46.69 166.03/46.69 <<< 166.03/46.69 POL(rnil) = [[0A]] 166.03/46.69 >>> 166.03/46.69 166.03/46.69 166.03/46.69 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 166.03/46.69 166.03/46.69 mark(from(X)) -> a__from(mark(X)) 166.03/46.69 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.69 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.69 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.69 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.69 a__plus(0, Y) -> mark(Y) 166.03/46.69 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.69 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.69 mark(square(X)) -> a__square(mark(X)) 166.03/46.69 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.69 mark(0) -> 0 166.03/46.69 mark(s(X)) -> s(mark(X)) 166.03/46.69 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.69 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.69 mark(nil) -> nil 166.03/46.69 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.69 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.69 mark(rnil) -> rnil 166.03/46.69 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.69 a__times(0, Y) -> 0 166.03/46.69 a__times(X1, X2) -> times(X1, X2) 166.03/46.69 a__from(X) -> from(X) 166.03/46.69 a__2ndspos(0, Z) -> rnil 166.03/46.69 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.69 a__2ndsneg(0, Z) -> rnil 166.03/46.69 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.69 a__pi(X) -> pi(X) 166.03/46.69 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.69 a__square(X) -> square(X) 166.03/46.69 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.69 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.69 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.69 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.69 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.69 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.69 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.69 166.03/46.69 166.03/46.69 ---------------------------------------- 166.03/46.69 166.03/46.69 (24) 166.03/46.69 Obligation: 166.03/46.69 Q DP problem: 166.03/46.69 The TRS P consists of the following rules: 166.03/46.69 166.03/46.69 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 166.03/46.69 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 166.03/46.69 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.69 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 166.03/46.69 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 166.03/46.69 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.69 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 166.03/46.69 A__PLUS(0, Y) -> MARK(Y) 166.03/46.69 MARK(plus(X1, X2)) -> MARK(X1) 166.03/46.69 MARK(plus(X1, X2)) -> MARK(X2) 166.03/46.69 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 166.03/46.69 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.69 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 166.03/46.69 A__PLUS(s(X), Y) -> MARK(X) 166.03/46.69 MARK(times(X1, X2)) -> MARK(X1) 166.03/46.69 MARK(times(X1, X2)) -> MARK(X2) 166.03/46.69 MARK(s(X)) -> MARK(X) 166.03/46.69 MARK(posrecip(X)) -> MARK(X) 166.03/46.69 MARK(negrecip(X)) -> MARK(X) 166.03/46.69 MARK(cons(X1, X2)) -> MARK(X1) 166.03/46.69 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.69 MARK(rcons(X1, X2)) -> MARK(X1) 166.03/46.69 MARK(rcons(X1, X2)) -> MARK(X2) 166.03/46.69 A__PLUS(s(X), Y) -> MARK(Y) 166.03/46.69 A__TIMES(s(X), Y) -> MARK(Y) 166.03/46.69 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 166.03/46.69 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 166.03/46.69 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 166.03/46.69 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.69 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 166.03/46.69 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 166.03/46.69 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.69 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.69 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.69 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.69 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.69 166.03/46.69 The TRS R consists of the following rules: 166.03/46.69 166.03/46.69 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.69 a__2ndspos(0, Z) -> rnil 166.03/46.69 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.69 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.69 a__2ndsneg(0, Z) -> rnil 166.03/46.69 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.69 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.69 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.69 a__plus(0, Y) -> mark(Y) 166.03/46.69 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.69 a__times(0, Y) -> 0 166.03/46.69 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.69 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.70 mark(from(X)) -> a__from(mark(X)) 166.03/46.70 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.70 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.70 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.70 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.70 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.70 mark(square(X)) -> a__square(mark(X)) 166.03/46.70 mark(0) -> 0 166.03/46.70 mark(s(X)) -> s(mark(X)) 166.03/46.70 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.70 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.70 mark(nil) -> nil 166.03/46.70 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.70 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.70 mark(rnil) -> rnil 166.03/46.70 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.70 a__from(X) -> from(X) 166.03/46.70 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.70 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.70 a__pi(X) -> pi(X) 166.03/46.70 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.70 a__times(X1, X2) -> times(X1, X2) 166.03/46.70 a__square(X) -> square(X) 166.03/46.70 166.03/46.70 The set Q consists of the following terms: 166.03/46.70 166.03/46.70 a__from(x0) 166.03/46.70 a__pi(x0) 166.03/46.70 a__square(x0) 166.03/46.70 mark(from(x0)) 166.03/46.70 mark(2ndspos(x0, x1)) 166.03/46.70 mark(2ndsneg(x0, x1)) 166.03/46.70 mark(pi(x0)) 166.03/46.70 mark(plus(x0, x1)) 166.03/46.70 mark(times(x0, x1)) 166.03/46.70 mark(square(x0)) 166.03/46.70 mark(0) 166.03/46.70 mark(s(x0)) 166.03/46.70 mark(posrecip(x0)) 166.03/46.70 mark(negrecip(x0)) 166.03/46.70 mark(nil) 166.03/46.70 mark(cons(x0, x1)) 166.03/46.70 mark(cons2(x0, x1)) 166.03/46.70 mark(rnil) 166.03/46.70 mark(rcons(x0, x1)) 166.03/46.70 a__2ndspos(x0, x1) 166.03/46.70 a__2ndsneg(x0, x1) 166.03/46.70 a__plus(x0, x1) 166.03/46.70 a__times(x0, x1) 166.03/46.70 166.03/46.70 We have to consider all minimal (P,Q,R)-chains. 166.03/46.70 ---------------------------------------- 166.03/46.70 166.03/46.70 (25) QDPOrderProof (EQUIVALENT) 166.03/46.70 We use the reduction pair processor [LPAR04,JAR06]. 166.03/46.70 166.03/46.70 166.03/46.70 The following pairs can be oriented strictly and are deleted. 166.03/46.70 166.03/46.70 MARK(times(X1, X2)) -> MARK(X1) 166.03/46.70 The remaining pairs can at least be oriented weakly. 166.03/46.70 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(MARK(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSPOS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(mark(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(s(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons2(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSNEG(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__PLUS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(0) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(times(x_1, x_2)) = [[1A]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__TIMES(x_1, x_2)) = [[1A]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__times(x_1, x_2)) = [[1A]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(rcons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(from(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__from(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__2ndspos(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(pi(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__pi(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__plus(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(square(x_1)) = [[1A]] + [[1A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__square(x_1)) = [[1A]] + [[1A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(nil) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(rnil) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 166.03/46.70 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 166.03/46.70 166.03/46.70 mark(from(X)) -> a__from(mark(X)) 166.03/46.70 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.70 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.70 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.70 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.70 a__plus(0, Y) -> mark(Y) 166.03/46.70 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.70 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 mark(square(X)) -> a__square(mark(X)) 166.03/46.70 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.70 mark(0) -> 0 166.03/46.70 mark(s(X)) -> s(mark(X)) 166.03/46.70 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.70 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.70 mark(nil) -> nil 166.03/46.70 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.70 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.70 mark(rnil) -> rnil 166.03/46.70 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.70 a__times(0, Y) -> 0 166.03/46.70 a__times(X1, X2) -> times(X1, X2) 166.03/46.70 a__from(X) -> from(X) 166.03/46.70 a__2ndspos(0, Z) -> rnil 166.03/46.70 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.70 a__2ndsneg(0, Z) -> rnil 166.03/46.70 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.70 a__pi(X) -> pi(X) 166.03/46.70 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.70 a__square(X) -> square(X) 166.03/46.70 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.70 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.70 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.70 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.70 166.03/46.70 166.03/46.70 ---------------------------------------- 166.03/46.70 166.03/46.70 (26) 166.03/46.70 Obligation: 166.03/46.70 Q DP problem: 166.03/46.70 The TRS P consists of the following rules: 166.03/46.70 166.03/46.70 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.70 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.70 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 166.03/46.70 A__PLUS(0, Y) -> MARK(Y) 166.03/46.70 MARK(plus(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(plus(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 166.03/46.70 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 166.03/46.70 A__PLUS(s(X), Y) -> MARK(X) 166.03/46.70 MARK(times(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(s(X)) -> MARK(X) 166.03/46.70 MARK(posrecip(X)) -> MARK(X) 166.03/46.70 MARK(negrecip(X)) -> MARK(X) 166.03/46.70 MARK(cons(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(rcons(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(rcons(X1, X2)) -> MARK(X2) 166.03/46.70 A__PLUS(s(X), Y) -> MARK(Y) 166.03/46.70 A__TIMES(s(X), Y) -> MARK(Y) 166.03/46.70 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.70 166.03/46.70 The TRS R consists of the following rules: 166.03/46.70 166.03/46.70 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.70 a__2ndspos(0, Z) -> rnil 166.03/46.70 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.70 a__2ndsneg(0, Z) -> rnil 166.03/46.70 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.70 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.70 a__plus(0, Y) -> mark(Y) 166.03/46.70 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.70 a__times(0, Y) -> 0 166.03/46.70 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.70 mark(from(X)) -> a__from(mark(X)) 166.03/46.70 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.70 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.70 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.70 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.70 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.70 mark(square(X)) -> a__square(mark(X)) 166.03/46.70 mark(0) -> 0 166.03/46.70 mark(s(X)) -> s(mark(X)) 166.03/46.70 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.70 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.70 mark(nil) -> nil 166.03/46.70 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.70 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.70 mark(rnil) -> rnil 166.03/46.70 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.70 a__from(X) -> from(X) 166.03/46.70 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.70 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.70 a__pi(X) -> pi(X) 166.03/46.70 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.70 a__times(X1, X2) -> times(X1, X2) 166.03/46.70 a__square(X) -> square(X) 166.03/46.70 166.03/46.70 The set Q consists of the following terms: 166.03/46.70 166.03/46.70 a__from(x0) 166.03/46.70 a__pi(x0) 166.03/46.70 a__square(x0) 166.03/46.70 mark(from(x0)) 166.03/46.70 mark(2ndspos(x0, x1)) 166.03/46.70 mark(2ndsneg(x0, x1)) 166.03/46.70 mark(pi(x0)) 166.03/46.70 mark(plus(x0, x1)) 166.03/46.70 mark(times(x0, x1)) 166.03/46.70 mark(square(x0)) 166.03/46.70 mark(0) 166.03/46.70 mark(s(x0)) 166.03/46.70 mark(posrecip(x0)) 166.03/46.70 mark(negrecip(x0)) 166.03/46.70 mark(nil) 166.03/46.70 mark(cons(x0, x1)) 166.03/46.70 mark(cons2(x0, x1)) 166.03/46.70 mark(rnil) 166.03/46.70 mark(rcons(x0, x1)) 166.03/46.70 a__2ndspos(x0, x1) 166.03/46.70 a__2ndsneg(x0, x1) 166.03/46.70 a__plus(x0, x1) 166.03/46.70 a__times(x0, x1) 166.03/46.70 166.03/46.70 We have to consider all minimal (P,Q,R)-chains. 166.03/46.70 ---------------------------------------- 166.03/46.70 166.03/46.70 (27) QDPOrderProof (EQUIVALENT) 166.03/46.70 We use the reduction pair processor [LPAR04,JAR06]. 166.03/46.70 166.03/46.70 166.03/46.70 The following pairs can be oriented strictly and are deleted. 166.03/46.70 166.03/46.70 A__PLUS(s(X), Y) -> MARK(X) 166.03/46.70 The remaining pairs can at least be oriented weakly. 166.03/46.70 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(MARK(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSPOS(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(mark(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(s(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons2(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSNEG(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(plus(x_1, x_2)) = [[-I]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__PLUS(x_1, x_2)) = [[-I]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(0) = [[1A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[1A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__TIMES(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[1A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[1A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(rcons(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(from(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__from(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(pi(x_1)) = [[2A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__pi(x_1)) = [[2A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__plus(x_1, x_2)) = [[-I]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(square(x_1)) = [[0A]] + [[1A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__square(x_1)) = [[0A]] + [[1A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(nil) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(rnil) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 166.03/46.70 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 166.03/46.70 166.03/46.70 mark(from(X)) -> a__from(mark(X)) 166.03/46.70 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.70 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.70 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.70 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.70 a__plus(0, Y) -> mark(Y) 166.03/46.70 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.70 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 mark(square(X)) -> a__square(mark(X)) 166.03/46.70 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.70 mark(0) -> 0 166.03/46.70 mark(s(X)) -> s(mark(X)) 166.03/46.70 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.70 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.70 mark(nil) -> nil 166.03/46.70 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.70 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.70 mark(rnil) -> rnil 166.03/46.70 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.70 a__times(0, Y) -> 0 166.03/46.70 a__times(X1, X2) -> times(X1, X2) 166.03/46.70 a__from(X) -> from(X) 166.03/46.70 a__2ndspos(0, Z) -> rnil 166.03/46.70 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.70 a__2ndsneg(0, Z) -> rnil 166.03/46.70 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.70 a__pi(X) -> pi(X) 166.03/46.70 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.70 a__square(X) -> square(X) 166.03/46.70 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.70 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.70 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.70 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.70 166.03/46.70 166.03/46.70 ---------------------------------------- 166.03/46.70 166.03/46.70 (28) 166.03/46.70 Obligation: 166.03/46.70 Q DP problem: 166.03/46.70 The TRS P consists of the following rules: 166.03/46.70 166.03/46.70 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.70 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.70 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 166.03/46.70 A__PLUS(0, Y) -> MARK(Y) 166.03/46.70 MARK(plus(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(plus(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 166.03/46.70 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 166.03/46.70 MARK(times(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(s(X)) -> MARK(X) 166.03/46.70 MARK(posrecip(X)) -> MARK(X) 166.03/46.70 MARK(negrecip(X)) -> MARK(X) 166.03/46.70 MARK(cons(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(rcons(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(rcons(X1, X2)) -> MARK(X2) 166.03/46.70 A__PLUS(s(X), Y) -> MARK(Y) 166.03/46.70 A__TIMES(s(X), Y) -> MARK(Y) 166.03/46.70 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.70 166.03/46.70 The TRS R consists of the following rules: 166.03/46.70 166.03/46.70 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.70 a__2ndspos(0, Z) -> rnil 166.03/46.70 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.70 a__2ndsneg(0, Z) -> rnil 166.03/46.70 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.70 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.70 a__plus(0, Y) -> mark(Y) 166.03/46.70 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.70 a__times(0, Y) -> 0 166.03/46.70 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.70 mark(from(X)) -> a__from(mark(X)) 166.03/46.70 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.70 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.70 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.70 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.70 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.70 mark(square(X)) -> a__square(mark(X)) 166.03/46.70 mark(0) -> 0 166.03/46.70 mark(s(X)) -> s(mark(X)) 166.03/46.70 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.70 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.70 mark(nil) -> nil 166.03/46.70 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.70 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.70 mark(rnil) -> rnil 166.03/46.70 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.70 a__from(X) -> from(X) 166.03/46.70 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.70 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.70 a__pi(X) -> pi(X) 166.03/46.70 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.70 a__times(X1, X2) -> times(X1, X2) 166.03/46.70 a__square(X) -> square(X) 166.03/46.70 166.03/46.70 The set Q consists of the following terms: 166.03/46.70 166.03/46.70 a__from(x0) 166.03/46.70 a__pi(x0) 166.03/46.70 a__square(x0) 166.03/46.70 mark(from(x0)) 166.03/46.70 mark(2ndspos(x0, x1)) 166.03/46.70 mark(2ndsneg(x0, x1)) 166.03/46.70 mark(pi(x0)) 166.03/46.70 mark(plus(x0, x1)) 166.03/46.70 mark(times(x0, x1)) 166.03/46.70 mark(square(x0)) 166.03/46.70 mark(0) 166.03/46.70 mark(s(x0)) 166.03/46.70 mark(posrecip(x0)) 166.03/46.70 mark(negrecip(x0)) 166.03/46.70 mark(nil) 166.03/46.70 mark(cons(x0, x1)) 166.03/46.70 mark(cons2(x0, x1)) 166.03/46.70 mark(rnil) 166.03/46.70 mark(rcons(x0, x1)) 166.03/46.70 a__2ndspos(x0, x1) 166.03/46.70 a__2ndsneg(x0, x1) 166.03/46.70 a__plus(x0, x1) 166.03/46.70 a__times(x0, x1) 166.03/46.70 166.03/46.70 We have to consider all minimal (P,Q,R)-chains. 166.03/46.70 ---------------------------------------- 166.03/46.70 166.03/46.70 (29) QDPOrderProof (EQUIVALENT) 166.03/46.70 We use the reduction pair processor [LPAR04,JAR06]. 166.03/46.70 166.03/46.70 166.03/46.70 The following pairs can be oriented strictly and are deleted. 166.03/46.70 166.03/46.70 MARK(rcons(X1, X2)) -> MARK(X1) 166.03/46.70 The remaining pairs can at least be oriented weakly. 166.03/46.70 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(MARK(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndspos(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[1A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSPOS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(mark(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(s(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons2(x_1, x_2)) = [[0A]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndsneg(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[1A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSNEG(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__PLUS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(0) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(times(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__TIMES(x_1, x_2)) = [[0A]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__times(x_1, x_2)) = [[0A]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(rcons(x_1, x_2)) = [[1A]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(from(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__from(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__2ndspos(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[1A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__2ndsneg(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[1A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(pi(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__pi(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__plus(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(square(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__square(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(nil) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(rnil) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 166.03/46.70 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 166.03/46.70 166.03/46.70 mark(from(X)) -> a__from(mark(X)) 166.03/46.70 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.70 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.70 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.70 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.70 a__plus(0, Y) -> mark(Y) 166.03/46.70 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.70 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 mark(square(X)) -> a__square(mark(X)) 166.03/46.70 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.70 mark(0) -> 0 166.03/46.70 mark(s(X)) -> s(mark(X)) 166.03/46.70 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.70 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.70 mark(nil) -> nil 166.03/46.70 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.70 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.70 mark(rnil) -> rnil 166.03/46.70 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.70 a__times(0, Y) -> 0 166.03/46.70 a__times(X1, X2) -> times(X1, X2) 166.03/46.70 a__from(X) -> from(X) 166.03/46.70 a__2ndspos(0, Z) -> rnil 166.03/46.70 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.70 a__2ndsneg(0, Z) -> rnil 166.03/46.70 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.70 a__pi(X) -> pi(X) 166.03/46.70 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.70 a__square(X) -> square(X) 166.03/46.70 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.70 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.70 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.70 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.70 166.03/46.70 166.03/46.70 ---------------------------------------- 166.03/46.70 166.03/46.70 (30) 166.03/46.70 Obligation: 166.03/46.70 Q DP problem: 166.03/46.70 The TRS P consists of the following rules: 166.03/46.70 166.03/46.70 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.70 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.70 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 166.03/46.70 A__PLUS(0, Y) -> MARK(Y) 166.03/46.70 MARK(plus(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(plus(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 166.03/46.70 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 166.03/46.70 MARK(times(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(s(X)) -> MARK(X) 166.03/46.70 MARK(posrecip(X)) -> MARK(X) 166.03/46.70 MARK(negrecip(X)) -> MARK(X) 166.03/46.70 MARK(cons(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(rcons(X1, X2)) -> MARK(X2) 166.03/46.70 A__PLUS(s(X), Y) -> MARK(Y) 166.03/46.70 A__TIMES(s(X), Y) -> MARK(Y) 166.03/46.70 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.70 166.03/46.70 The TRS R consists of the following rules: 166.03/46.70 166.03/46.70 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.70 a__2ndspos(0, Z) -> rnil 166.03/46.70 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.70 a__2ndsneg(0, Z) -> rnil 166.03/46.70 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.70 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.70 a__plus(0, Y) -> mark(Y) 166.03/46.70 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.70 a__times(0, Y) -> 0 166.03/46.70 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.70 mark(from(X)) -> a__from(mark(X)) 166.03/46.70 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.70 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.70 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.70 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.70 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.70 mark(square(X)) -> a__square(mark(X)) 166.03/46.70 mark(0) -> 0 166.03/46.70 mark(s(X)) -> s(mark(X)) 166.03/46.70 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.70 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.70 mark(nil) -> nil 166.03/46.70 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.70 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.70 mark(rnil) -> rnil 166.03/46.70 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.70 a__from(X) -> from(X) 166.03/46.70 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.70 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.70 a__pi(X) -> pi(X) 166.03/46.70 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.70 a__times(X1, X2) -> times(X1, X2) 166.03/46.70 a__square(X) -> square(X) 166.03/46.70 166.03/46.70 The set Q consists of the following terms: 166.03/46.70 166.03/46.70 a__from(x0) 166.03/46.70 a__pi(x0) 166.03/46.70 a__square(x0) 166.03/46.70 mark(from(x0)) 166.03/46.70 mark(2ndspos(x0, x1)) 166.03/46.70 mark(2ndsneg(x0, x1)) 166.03/46.70 mark(pi(x0)) 166.03/46.70 mark(plus(x0, x1)) 166.03/46.70 mark(times(x0, x1)) 166.03/46.70 mark(square(x0)) 166.03/46.70 mark(0) 166.03/46.70 mark(s(x0)) 166.03/46.70 mark(posrecip(x0)) 166.03/46.70 mark(negrecip(x0)) 166.03/46.70 mark(nil) 166.03/46.70 mark(cons(x0, x1)) 166.03/46.70 mark(cons2(x0, x1)) 166.03/46.70 mark(rnil) 166.03/46.70 mark(rcons(x0, x1)) 166.03/46.70 a__2ndspos(x0, x1) 166.03/46.70 a__2ndsneg(x0, x1) 166.03/46.70 a__plus(x0, x1) 166.03/46.70 a__times(x0, x1) 166.03/46.70 166.03/46.70 We have to consider all minimal (P,Q,R)-chains. 166.03/46.70 ---------------------------------------- 166.03/46.70 166.03/46.70 (31) QDPOrderProof (EQUIVALENT) 166.03/46.70 We use the reduction pair processor [LPAR04,JAR06]. 166.03/46.70 166.03/46.70 166.03/46.70 The following pairs can be oriented strictly and are deleted. 166.03/46.70 166.03/46.70 MARK(negrecip(X)) -> MARK(X) 166.03/46.70 The remaining pairs can at least be oriented weakly. 166.03/46.70 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(MARK(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndspos(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSPOS(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(mark(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(s(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndsneg(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSNEG(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(plus(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__PLUS(x_1, x_2)) = [[1A]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(0) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(times(x_1, x_2)) = [[1A]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__TIMES(x_1, x_2)) = [[1A]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__times(x_1, x_2)) = [[1A]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(negrecip(x_1)) = [[2A]] + [[1A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(rcons(x_1, x_2)) = [[0A]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(from(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__from(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__2ndspos(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__2ndsneg(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(pi(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__pi(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__plus(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(square(x_1)) = [[5A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(a__square(x_1)) = [[5A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(nil) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(rnil) = [[0A]] 166.03/46.70 >>> 166.03/46.70 166.03/46.70 166.03/46.70 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 166.03/46.70 166.03/46.70 mark(from(X)) -> a__from(mark(X)) 166.03/46.70 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.70 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.70 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.70 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.70 a__plus(0, Y) -> mark(Y) 166.03/46.70 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.70 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 mark(square(X)) -> a__square(mark(X)) 166.03/46.70 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.70 mark(0) -> 0 166.03/46.70 mark(s(X)) -> s(mark(X)) 166.03/46.70 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.70 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.70 mark(nil) -> nil 166.03/46.70 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.70 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.70 mark(rnil) -> rnil 166.03/46.70 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.70 a__times(0, Y) -> 0 166.03/46.70 a__times(X1, X2) -> times(X1, X2) 166.03/46.70 a__from(X) -> from(X) 166.03/46.70 a__2ndspos(0, Z) -> rnil 166.03/46.70 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.70 a__2ndsneg(0, Z) -> rnil 166.03/46.70 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.70 a__pi(X) -> pi(X) 166.03/46.70 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.70 a__square(X) -> square(X) 166.03/46.70 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.70 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.70 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.70 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.70 166.03/46.70 166.03/46.70 ---------------------------------------- 166.03/46.70 166.03/46.70 (32) 166.03/46.70 Obligation: 166.03/46.70 Q DP problem: 166.03/46.70 The TRS P consists of the following rules: 166.03/46.70 166.03/46.70 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.70 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.70 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 166.03/46.70 A__PLUS(0, Y) -> MARK(Y) 166.03/46.70 MARK(plus(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(plus(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 166.03/46.70 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 166.03/46.70 MARK(times(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(s(X)) -> MARK(X) 166.03/46.70 MARK(posrecip(X)) -> MARK(X) 166.03/46.70 MARK(cons(X1, X2)) -> MARK(X1) 166.03/46.70 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.70 MARK(rcons(X1, X2)) -> MARK(X2) 166.03/46.70 A__PLUS(s(X), Y) -> MARK(Y) 166.03/46.70 A__TIMES(s(X), Y) -> MARK(Y) 166.03/46.70 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 166.03/46.70 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 166.03/46.70 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.70 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.70 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.70 166.03/46.70 The TRS R consists of the following rules: 166.03/46.70 166.03/46.70 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.70 a__2ndspos(0, Z) -> rnil 166.03/46.70 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.70 a__2ndsneg(0, Z) -> rnil 166.03/46.70 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.70 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.70 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.70 a__plus(0, Y) -> mark(Y) 166.03/46.70 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.70 a__times(0, Y) -> 0 166.03/46.70 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.70 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.70 mark(from(X)) -> a__from(mark(X)) 166.03/46.70 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.70 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.70 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.70 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.70 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.70 mark(square(X)) -> a__square(mark(X)) 166.03/46.70 mark(0) -> 0 166.03/46.70 mark(s(X)) -> s(mark(X)) 166.03/46.70 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.70 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.70 mark(nil) -> nil 166.03/46.70 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.70 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.70 mark(rnil) -> rnil 166.03/46.70 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.70 a__from(X) -> from(X) 166.03/46.70 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.70 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.70 a__pi(X) -> pi(X) 166.03/46.70 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.70 a__times(X1, X2) -> times(X1, X2) 166.03/46.70 a__square(X) -> square(X) 166.03/46.70 166.03/46.70 The set Q consists of the following terms: 166.03/46.70 166.03/46.70 a__from(x0) 166.03/46.70 a__pi(x0) 166.03/46.70 a__square(x0) 166.03/46.70 mark(from(x0)) 166.03/46.70 mark(2ndspos(x0, x1)) 166.03/46.70 mark(2ndsneg(x0, x1)) 166.03/46.70 mark(pi(x0)) 166.03/46.70 mark(plus(x0, x1)) 166.03/46.70 mark(times(x0, x1)) 166.03/46.70 mark(square(x0)) 166.03/46.70 mark(0) 166.03/46.70 mark(s(x0)) 166.03/46.70 mark(posrecip(x0)) 166.03/46.70 mark(negrecip(x0)) 166.03/46.70 mark(nil) 166.03/46.70 mark(cons(x0, x1)) 166.03/46.70 mark(cons2(x0, x1)) 166.03/46.70 mark(rnil) 166.03/46.70 mark(rcons(x0, x1)) 166.03/46.70 a__2ndspos(x0, x1) 166.03/46.70 a__2ndsneg(x0, x1) 166.03/46.70 a__plus(x0, x1) 166.03/46.70 a__times(x0, x1) 166.03/46.70 166.03/46.70 We have to consider all minimal (P,Q,R)-chains. 166.03/46.70 ---------------------------------------- 166.03/46.70 166.03/46.70 (33) QDPOrderProof (EQUIVALENT) 166.03/46.70 We use the reduction pair processor [LPAR04,JAR06]. 166.03/46.70 166.03/46.70 166.03/46.70 The following pairs can be oriented strictly and are deleted. 166.03/46.70 166.03/46.70 A__TIMES(s(X), Y) -> MARK(Y) 166.03/46.70 The remaining pairs can at least be oriented weakly. 166.03/46.70 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(MARK(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSPOS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(mark(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(s(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(cons2(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.70 <<< 166.03/46.70 POL(A__2NDSNEG(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.70 >>> 166.03/46.70 166.03/46.71 <<< 166.03/46.71 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(A__PLUS(x_1, x_2)) = [[1A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(0) = [[0A]] 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(times(x_1, x_2)) = [[1A]] + [[1A]] * x_1 + [[1A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(A__TIMES(x_1, x_2)) = [[-I]] + [[1A]] * x_1 + [[1A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(a__times(x_1, x_2)) = [[1A]] + [[1A]] * x_1 + [[1A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(rcons(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(from(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(a__from(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(a__2ndspos(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(a__2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(pi(x_1)) = [[2A]] + [[0A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(a__pi(x_1)) = [[2A]] + [[0A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(a__plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(square(x_1)) = [[1A]] + [[1A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(a__square(x_1)) = [[1A]] + [[1A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(negrecip(x_1)) = [[0A]] + [[-I]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(nil) = [[0A]] 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(rnil) = [[0A]] 166.03/46.71 >>> 166.03/46.71 166.03/46.71 166.03/46.71 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 166.03/46.71 166.03/46.71 mark(from(X)) -> a__from(mark(X)) 166.03/46.71 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.71 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.71 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.71 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.71 a__plus(0, Y) -> mark(Y) 166.03/46.71 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.71 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.71 mark(square(X)) -> a__square(mark(X)) 166.03/46.71 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.71 mark(0) -> 0 166.03/46.71 mark(s(X)) -> s(mark(X)) 166.03/46.71 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.71 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.71 mark(nil) -> nil 166.03/46.71 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.71 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.71 mark(rnil) -> rnil 166.03/46.71 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.71 a__times(0, Y) -> 0 166.03/46.71 a__times(X1, X2) -> times(X1, X2) 166.03/46.71 a__from(X) -> from(X) 166.03/46.71 a__2ndspos(0, Z) -> rnil 166.03/46.71 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.71 a__2ndsneg(0, Z) -> rnil 166.03/46.71 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.71 a__pi(X) -> pi(X) 166.03/46.71 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.71 a__square(X) -> square(X) 166.03/46.71 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.71 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.71 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.71 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.71 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.71 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.71 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.71 166.03/46.71 166.03/46.71 ---------------------------------------- 166.03/46.71 166.03/46.71 (34) 166.03/46.71 Obligation: 166.03/46.71 Q DP problem: 166.03/46.71 The TRS P consists of the following rules: 166.03/46.71 166.03/46.71 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 166.03/46.71 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 166.03/46.71 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.71 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 166.03/46.71 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 166.03/46.71 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.71 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 166.03/46.71 A__PLUS(0, Y) -> MARK(Y) 166.03/46.71 MARK(plus(X1, X2)) -> MARK(X1) 166.03/46.71 MARK(plus(X1, X2)) -> MARK(X2) 166.03/46.71 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 166.03/46.71 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.71 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 166.03/46.71 MARK(times(X1, X2)) -> MARK(X2) 166.03/46.71 MARK(s(X)) -> MARK(X) 166.03/46.71 MARK(posrecip(X)) -> MARK(X) 166.03/46.71 MARK(cons(X1, X2)) -> MARK(X1) 166.03/46.71 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.71 MARK(rcons(X1, X2)) -> MARK(X2) 166.03/46.71 A__PLUS(s(X), Y) -> MARK(Y) 166.03/46.71 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 166.03/46.71 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 166.03/46.71 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 166.03/46.71 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.71 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 166.03/46.71 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 166.03/46.71 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.71 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.71 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.71 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.71 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.71 166.03/46.71 The TRS R consists of the following rules: 166.03/46.71 166.03/46.71 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.71 a__2ndspos(0, Z) -> rnil 166.03/46.71 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.71 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.71 a__2ndsneg(0, Z) -> rnil 166.03/46.71 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.71 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.71 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.71 a__plus(0, Y) -> mark(Y) 166.03/46.71 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.71 a__times(0, Y) -> 0 166.03/46.71 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.71 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.71 mark(from(X)) -> a__from(mark(X)) 166.03/46.71 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.71 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.71 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.71 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.71 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.71 mark(square(X)) -> a__square(mark(X)) 166.03/46.71 mark(0) -> 0 166.03/46.71 mark(s(X)) -> s(mark(X)) 166.03/46.71 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.71 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.71 mark(nil) -> nil 166.03/46.71 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.71 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.71 mark(rnil) -> rnil 166.03/46.71 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.71 a__from(X) -> from(X) 166.03/46.71 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.71 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.71 a__pi(X) -> pi(X) 166.03/46.71 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.71 a__times(X1, X2) -> times(X1, X2) 166.03/46.71 a__square(X) -> square(X) 166.03/46.71 166.03/46.71 The set Q consists of the following terms: 166.03/46.71 166.03/46.71 a__from(x0) 166.03/46.71 a__pi(x0) 166.03/46.71 a__square(x0) 166.03/46.71 mark(from(x0)) 166.03/46.71 mark(2ndspos(x0, x1)) 166.03/46.71 mark(2ndsneg(x0, x1)) 166.03/46.71 mark(pi(x0)) 166.03/46.71 mark(plus(x0, x1)) 166.03/46.71 mark(times(x0, x1)) 166.03/46.71 mark(square(x0)) 166.03/46.71 mark(0) 166.03/46.71 mark(s(x0)) 166.03/46.71 mark(posrecip(x0)) 166.03/46.71 mark(negrecip(x0)) 166.03/46.71 mark(nil) 166.03/46.71 mark(cons(x0, x1)) 166.03/46.71 mark(cons2(x0, x1)) 166.03/46.71 mark(rnil) 166.03/46.71 mark(rcons(x0, x1)) 166.03/46.71 a__2ndspos(x0, x1) 166.03/46.71 a__2ndsneg(x0, x1) 166.03/46.71 a__plus(x0, x1) 166.03/46.71 a__times(x0, x1) 166.03/46.71 166.03/46.71 We have to consider all minimal (P,Q,R)-chains. 166.03/46.71 ---------------------------------------- 166.03/46.71 166.03/46.71 (35) QDPOrderProof (EQUIVALENT) 166.03/46.71 We use the reduction pair processor [LPAR04,JAR06]. 166.03/46.71 166.03/46.71 166.03/46.71 The following pairs can be oriented strictly and are deleted. 166.03/46.71 166.03/46.71 MARK(posrecip(X)) -> MARK(X) 166.03/46.71 The remaining pairs can at least be oriented weakly. 166.03/46.71 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(MARK(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(A__2NDSPOS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(mark(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(s(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(cons(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(cons2(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(2ndsneg(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(A__2NDSNEG(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(A__PLUS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.71 >>> 166.03/46.71 166.03/46.71 <<< 166.03/46.71 POL(0) = [[0A]] 166.03/46.71 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(times(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(A__TIMES(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(posrecip(x_1)) = [[1A]] + [[1A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(rcons(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(from(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__from(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__2ndspos(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(pi(x_1)) = [[3A]] + [[3A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__pi(x_1)) = [[3A]] + [[3A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__plus(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(square(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__square(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(negrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(nil) = [[0A]] 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(rnil) = [[0A]] 166.03/46.75 >>> 166.03/46.75 166.03/46.75 166.03/46.75 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 166.03/46.75 166.03/46.75 mark(from(X)) -> a__from(mark(X)) 166.03/46.75 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.75 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.75 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.75 a__plus(0, Y) -> mark(Y) 166.03/46.75 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.75 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 mark(square(X)) -> a__square(mark(X)) 166.03/46.75 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.75 mark(0) -> 0 166.03/46.75 mark(s(X)) -> s(mark(X)) 166.03/46.75 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.75 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.75 mark(nil) -> nil 166.03/46.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.75 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.75 mark(rnil) -> rnil 166.03/46.75 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.75 a__times(0, Y) -> 0 166.03/46.75 a__times(X1, X2) -> times(X1, X2) 166.03/46.75 a__from(X) -> from(X) 166.03/46.75 a__2ndspos(0, Z) -> rnil 166.03/46.75 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.75 a__2ndsneg(0, Z) -> rnil 166.03/46.75 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.75 a__pi(X) -> pi(X) 166.03/46.75 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.75 a__square(X) -> square(X) 166.03/46.75 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.75 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.75 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.75 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.75 166.03/46.75 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (36) 166.03/46.75 Obligation: 166.03/46.75 Q DP problem: 166.03/46.75 The TRS P consists of the following rules: 166.03/46.75 166.03/46.75 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 166.03/46.75 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.75 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 166.03/46.75 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.75 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 166.03/46.75 A__PLUS(0, Y) -> MARK(Y) 166.03/46.75 MARK(plus(X1, X2)) -> MARK(X1) 166.03/46.75 MARK(plus(X1, X2)) -> MARK(X2) 166.03/46.75 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 166.03/46.75 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 166.03/46.75 MARK(times(X1, X2)) -> MARK(X2) 166.03/46.75 MARK(s(X)) -> MARK(X) 166.03/46.75 MARK(cons(X1, X2)) -> MARK(X1) 166.03/46.75 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.75 MARK(rcons(X1, X2)) -> MARK(X2) 166.03/46.75 A__PLUS(s(X), Y) -> MARK(Y) 166.03/46.75 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 166.03/46.75 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 166.03/46.75 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 166.03/46.75 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 166.03/46.75 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.75 166.03/46.75 The TRS R consists of the following rules: 166.03/46.75 166.03/46.75 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.75 a__2ndspos(0, Z) -> rnil 166.03/46.75 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.75 a__2ndsneg(0, Z) -> rnil 166.03/46.75 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.75 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.75 a__plus(0, Y) -> mark(Y) 166.03/46.75 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.75 a__times(0, Y) -> 0 166.03/46.75 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.75 mark(from(X)) -> a__from(mark(X)) 166.03/46.75 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.75 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.75 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.75 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.75 mark(square(X)) -> a__square(mark(X)) 166.03/46.75 mark(0) -> 0 166.03/46.75 mark(s(X)) -> s(mark(X)) 166.03/46.75 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.75 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.75 mark(nil) -> nil 166.03/46.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.75 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.75 mark(rnil) -> rnil 166.03/46.75 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.75 a__from(X) -> from(X) 166.03/46.75 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.75 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.75 a__pi(X) -> pi(X) 166.03/46.75 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.75 a__times(X1, X2) -> times(X1, X2) 166.03/46.75 a__square(X) -> square(X) 166.03/46.75 166.03/46.75 The set Q consists of the following terms: 166.03/46.75 166.03/46.75 a__from(x0) 166.03/46.75 a__pi(x0) 166.03/46.75 a__square(x0) 166.03/46.75 mark(from(x0)) 166.03/46.75 mark(2ndspos(x0, x1)) 166.03/46.75 mark(2ndsneg(x0, x1)) 166.03/46.75 mark(pi(x0)) 166.03/46.75 mark(plus(x0, x1)) 166.03/46.75 mark(times(x0, x1)) 166.03/46.75 mark(square(x0)) 166.03/46.75 mark(0) 166.03/46.75 mark(s(x0)) 166.03/46.75 mark(posrecip(x0)) 166.03/46.75 mark(negrecip(x0)) 166.03/46.75 mark(nil) 166.03/46.75 mark(cons(x0, x1)) 166.03/46.75 mark(cons2(x0, x1)) 166.03/46.75 mark(rnil) 166.03/46.75 mark(rcons(x0, x1)) 166.03/46.75 a__2ndspos(x0, x1) 166.03/46.75 a__2ndsneg(x0, x1) 166.03/46.75 a__plus(x0, x1) 166.03/46.75 a__times(x0, x1) 166.03/46.75 166.03/46.75 We have to consider all minimal (P,Q,R)-chains. 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (37) QDPOrderProof (EQUIVALENT) 166.03/46.75 We use the reduction pair processor [LPAR04,JAR06]. 166.03/46.75 166.03/46.75 166.03/46.75 The following pairs can be oriented strictly and are deleted. 166.03/46.75 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Y) 166.03/46.75 MARK(cons(X1, X2)) -> MARK(X1) 166.03/46.75 The remaining pairs can at least be oriented weakly. 166.03/46.75 Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]: 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(MARK(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(A__2NDSPOS(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(mark(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(s(x_1)) = [[0A]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(cons(x_1, x_2)) = [[1A]] + [[1A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(cons2(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(A__2NDSNEG(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(A__PLUS(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(0) = [[0A]] 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(A__TIMES(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__times(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(rcons(x_1, x_2)) = [[-I]] + [[-I]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(from(x_1)) = [[1A]] + [[1A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__from(x_1)) = [[1A]] + [[1A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__2ndspos(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__2ndsneg(x_1, x_2)) = [[0A]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(pi(x_1)) = [[3A]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__pi(x_1)) = [[3A]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__plus(x_1, x_2)) = [[-I]] + [[0A]] * x_1 + [[0A]] * x_2 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(square(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(a__square(x_1)) = [[1A]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(posrecip(x_1)) = [[-I]] + [[0A]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(negrecip(x_1)) = [[0A]] + [[-I]] * x_1 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(nil) = [[0A]] 166.03/46.75 >>> 166.03/46.75 166.03/46.75 <<< 166.03/46.75 POL(rnil) = [[0A]] 166.03/46.75 >>> 166.03/46.75 166.03/46.75 166.03/46.75 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 166.03/46.75 166.03/46.75 mark(from(X)) -> a__from(mark(X)) 166.03/46.75 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.75 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.75 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.75 a__plus(0, Y) -> mark(Y) 166.03/46.75 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.75 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 mark(square(X)) -> a__square(mark(X)) 166.03/46.75 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.75 mark(0) -> 0 166.03/46.75 mark(s(X)) -> s(mark(X)) 166.03/46.75 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.75 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.75 mark(nil) -> nil 166.03/46.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.75 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.75 mark(rnil) -> rnil 166.03/46.75 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.75 a__times(0, Y) -> 0 166.03/46.75 a__times(X1, X2) -> times(X1, X2) 166.03/46.75 a__from(X) -> from(X) 166.03/46.75 a__2ndspos(0, Z) -> rnil 166.03/46.75 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.75 a__2ndsneg(0, Z) -> rnil 166.03/46.75 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.75 a__pi(X) -> pi(X) 166.03/46.75 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.75 a__square(X) -> square(X) 166.03/46.75 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.75 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.75 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.75 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.75 166.03/46.75 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (38) 166.03/46.75 Obligation: 166.03/46.75 Q DP problem: 166.03/46.75 The TRS P consists of the following rules: 166.03/46.75 166.03/46.75 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 166.03/46.75 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 166.03/46.75 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 166.03/46.75 A__PLUS(0, Y) -> MARK(Y) 166.03/46.75 MARK(plus(X1, X2)) -> MARK(X1) 166.03/46.75 MARK(plus(X1, X2)) -> MARK(X2) 166.03/46.75 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 166.03/46.75 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 166.03/46.75 MARK(times(X1, X2)) -> MARK(X2) 166.03/46.75 MARK(s(X)) -> MARK(X) 166.03/46.75 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.75 MARK(rcons(X1, X2)) -> MARK(X2) 166.03/46.75 A__PLUS(s(X), Y) -> MARK(Y) 166.03/46.75 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 166.03/46.75 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 166.03/46.75 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 166.03/46.75 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 166.03/46.75 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.75 166.03/46.75 The TRS R consists of the following rules: 166.03/46.75 166.03/46.75 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.75 a__2ndspos(0, Z) -> rnil 166.03/46.75 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.75 a__2ndsneg(0, Z) -> rnil 166.03/46.75 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.75 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.75 a__plus(0, Y) -> mark(Y) 166.03/46.75 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.75 a__times(0, Y) -> 0 166.03/46.75 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.75 mark(from(X)) -> a__from(mark(X)) 166.03/46.75 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.75 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.75 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.75 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.75 mark(square(X)) -> a__square(mark(X)) 166.03/46.75 mark(0) -> 0 166.03/46.75 mark(s(X)) -> s(mark(X)) 166.03/46.75 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.75 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.75 mark(nil) -> nil 166.03/46.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.75 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.75 mark(rnil) -> rnil 166.03/46.75 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.75 a__from(X) -> from(X) 166.03/46.75 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.75 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.75 a__pi(X) -> pi(X) 166.03/46.75 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.75 a__times(X1, X2) -> times(X1, X2) 166.03/46.75 a__square(X) -> square(X) 166.03/46.75 166.03/46.75 The set Q consists of the following terms: 166.03/46.75 166.03/46.75 a__from(x0) 166.03/46.75 a__pi(x0) 166.03/46.75 a__square(x0) 166.03/46.75 mark(from(x0)) 166.03/46.75 mark(2ndspos(x0, x1)) 166.03/46.75 mark(2ndsneg(x0, x1)) 166.03/46.75 mark(pi(x0)) 166.03/46.75 mark(plus(x0, x1)) 166.03/46.75 mark(times(x0, x1)) 166.03/46.75 mark(square(x0)) 166.03/46.75 mark(0) 166.03/46.75 mark(s(x0)) 166.03/46.75 mark(posrecip(x0)) 166.03/46.75 mark(negrecip(x0)) 166.03/46.75 mark(nil) 166.03/46.75 mark(cons(x0, x1)) 166.03/46.75 mark(cons2(x0, x1)) 166.03/46.75 mark(rnil) 166.03/46.75 mark(rcons(x0, x1)) 166.03/46.75 a__2ndspos(x0, x1) 166.03/46.75 a__2ndsneg(x0, x1) 166.03/46.75 a__plus(x0, x1) 166.03/46.75 a__times(x0, x1) 166.03/46.75 166.03/46.75 We have to consider all minimal (P,Q,R)-chains. 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (39) QDPOrderProof (EQUIVALENT) 166.03/46.75 We use the reduction pair processor [LPAR04,JAR06]. 166.03/46.75 166.03/46.75 166.03/46.75 The following pairs can be oriented strictly and are deleted. 166.03/46.75 166.03/46.75 MARK(2ndspos(X1, X2)) -> A__2NDSPOS(mark(X1), mark(X2)) 166.03/46.75 MARK(2ndsneg(X1, X2)) -> A__2NDSNEG(mark(X1), mark(X2)) 166.03/46.75 MARK(plus(X1, X2)) -> A__PLUS(mark(X1), mark(X2)) 166.03/46.75 A__PLUS(0, Y) -> MARK(Y) 166.03/46.75 MARK(plus(X1, X2)) -> MARK(X1) 166.03/46.75 MARK(plus(X1, X2)) -> MARK(X2) 166.03/46.75 A__TIMES(s(X), Y) -> A__PLUS(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 A__PLUS(s(X), Y) -> A__PLUS(mark(X), mark(Y)) 166.03/46.75 MARK(times(X1, X2)) -> MARK(X2) 166.03/46.75 MARK(s(X)) -> MARK(X) 166.03/46.75 MARK(rcons(X1, X2)) -> MARK(X2) 166.03/46.75 A__PLUS(s(X), Y) -> MARK(Y) 166.03/46.75 A__TIMES(s(X), Y) -> A__TIMES(mark(X), mark(Y)) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> A__2NDSPOS(mark(N), mark(Z)) 166.03/46.75 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(N) 166.03/46.75 A__2NDSPOS(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> A__2NDSNEG(mark(N), mark(Z)) 166.03/46.75 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(N) 166.03/46.75 A__2NDSNEG(s(N), cons(X, Z)) -> MARK(Z) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.75 A__2NDSNEG(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(N) 166.03/46.75 A__2NDSPOS(s(N), cons2(X, cons(Y, Z))) -> MARK(Z) 166.03/46.75 The remaining pairs can at least be oriented weakly. 166.03/46.75 Used ordering: Combined order from the following AFS and order. 166.03/46.75 MARK(x1) = x1 166.03/46.75 166.03/46.75 2ndspos(x1, x2) = 2ndspos(x1, x2) 166.03/46.75 166.03/46.75 A__2NDSPOS(x1, x2) = A__2NDSPOS(x1, x2) 166.03/46.75 166.03/46.75 mark(x1) = x1 166.03/46.75 166.03/46.75 s(x1) = s(x1) 166.03/46.75 166.03/46.75 cons(x1, x2) = x2 166.03/46.75 166.03/46.75 cons2(x1, x2) = x2 166.03/46.75 166.03/46.75 2ndsneg(x1, x2) = 2ndsneg(x1, x2) 166.03/46.75 166.03/46.75 A__2NDSNEG(x1, x2) = A__2NDSNEG(x1, x2) 166.03/46.75 166.03/46.75 plus(x1, x2) = plus(x1, x2) 166.03/46.75 166.03/46.75 A__PLUS(x1, x2) = A__PLUS(x1, x2) 166.03/46.75 166.03/46.75 0 = 0 166.03/46.75 166.03/46.75 times(x1, x2) = times(x1, x2) 166.03/46.75 166.03/46.75 A__TIMES(x1, x2) = A__TIMES(x1, x2) 166.03/46.75 166.03/46.75 a__times(x1, x2) = a__times(x1, x2) 166.03/46.75 166.03/46.75 rcons(x1, x2) = rcons(x1, x2) 166.03/46.75 166.03/46.75 from(x1) = from 166.03/46.75 166.03/46.75 a__from(x1) = a__from 166.03/46.75 166.03/46.75 a__2ndspos(x1, x2) = a__2ndspos(x1, x2) 166.03/46.75 166.03/46.75 a__2ndsneg(x1, x2) = a__2ndsneg(x1, x2) 166.03/46.75 166.03/46.75 pi(x1) = pi(x1) 166.03/46.75 166.03/46.75 a__pi(x1) = a__pi(x1) 166.03/46.75 166.03/46.75 a__plus(x1, x2) = a__plus(x1, x2) 166.03/46.75 166.03/46.75 square(x1) = square(x1) 166.03/46.75 166.03/46.75 a__square(x1) = a__square(x1) 166.03/46.75 166.03/46.75 posrecip(x1) = posrecip 166.03/46.75 166.03/46.75 negrecip(x1) = negrecip 166.03/46.75 166.03/46.75 nil = nil 166.03/46.75 166.03/46.75 rnil = rnil 166.03/46.75 166.03/46.75 166.03/46.75 Recursive path order with status [RPO]. 166.03/46.75 Quasi-Precedence: [from, a__from, pi_1, a__pi_1] > [2ndspos_2, 2ndsneg_2, a__2ndspos_2, a__2ndsneg_2, posrecip] > [A__2NDSPOS_2, A__2NDSNEG_2] > s_1 > A__PLUS_2 166.03/46.75 [from, a__from, pi_1, a__pi_1] > [2ndspos_2, 2ndsneg_2, a__2ndspos_2, a__2ndsneg_2, posrecip] > rcons_2 166.03/46.75 [from, a__from, pi_1, a__pi_1] > [2ndspos_2, 2ndsneg_2, a__2ndspos_2, a__2ndsneg_2, posrecip] > negrecip 166.03/46.75 [from, a__from, pi_1, a__pi_1] > [2ndspos_2, 2ndsneg_2, a__2ndspos_2, a__2ndsneg_2, posrecip] > rnil 166.03/46.75 [from, a__from, pi_1, a__pi_1] > 0 166.03/46.75 [square_1, a__square_1] > [times_2, A__TIMES_2, a__times_2] > [plus_2, a__plus_2] > s_1 > A__PLUS_2 166.03/46.75 [square_1, a__square_1] > [times_2, A__TIMES_2, a__times_2] > 0 166.03/46.75 166.03/46.75 Status: 2ndspos_2: multiset status 166.03/46.75 A__2NDSPOS_2: [2,1] 166.03/46.75 s_1: multiset status 166.03/46.75 2ndsneg_2: multiset status 166.03/46.75 A__2NDSNEG_2: [2,1] 166.03/46.75 plus_2: multiset status 166.03/46.75 A__PLUS_2: [2,1] 166.03/46.75 0: multiset status 166.03/46.75 times_2: multiset status 166.03/46.75 A__TIMES_2: multiset status 166.03/46.75 a__times_2: multiset status 166.03/46.75 rcons_2: multiset status 166.03/46.75 from: [] 166.03/46.75 a__from: [] 166.03/46.75 a__2ndspos_2: multiset status 166.03/46.75 a__2ndsneg_2: multiset status 166.03/46.75 pi_1: [1] 166.03/46.75 a__pi_1: [1] 166.03/46.75 a__plus_2: multiset status 166.03/46.75 square_1: multiset status 166.03/46.75 a__square_1: multiset status 166.03/46.75 posrecip: multiset status 166.03/46.75 negrecip: multiset status 166.03/46.75 nil: multiset status 166.03/46.75 rnil: multiset status 166.03/46.75 166.03/46.75 166.03/46.75 The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented: 166.03/46.75 166.03/46.75 mark(from(X)) -> a__from(mark(X)) 166.03/46.75 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.75 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.75 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.75 a__plus(0, Y) -> mark(Y) 166.03/46.75 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.75 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 mark(square(X)) -> a__square(mark(X)) 166.03/46.75 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.75 mark(0) -> 0 166.03/46.75 mark(s(X)) -> s(mark(X)) 166.03/46.75 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.75 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.75 mark(nil) -> nil 166.03/46.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.75 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.75 mark(rnil) -> rnil 166.03/46.75 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.75 a__times(0, Y) -> 0 166.03/46.75 a__times(X1, X2) -> times(X1, X2) 166.03/46.75 a__from(X) -> from(X) 166.03/46.75 a__2ndspos(0, Z) -> rnil 166.03/46.75 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.75 a__2ndsneg(0, Z) -> rnil 166.03/46.75 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.75 a__pi(X) -> pi(X) 166.03/46.75 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.75 a__square(X) -> square(X) 166.03/46.75 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.75 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.75 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.75 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.75 166.03/46.75 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (40) 166.03/46.75 Obligation: 166.03/46.75 Q DP problem: 166.03/46.75 The TRS P consists of the following rules: 166.03/46.75 166.03/46.75 A__2NDSPOS(s(N), cons(X, Z)) -> A__2NDSPOS(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 A__2NDSNEG(s(N), cons(X, Z)) -> A__2NDSNEG(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 MARK(times(X1, X2)) -> A__TIMES(mark(X1), mark(X2)) 166.03/46.75 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.75 166.03/46.75 The TRS R consists of the following rules: 166.03/46.75 166.03/46.75 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.75 a__2ndspos(0, Z) -> rnil 166.03/46.75 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.75 a__2ndsneg(0, Z) -> rnil 166.03/46.75 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.75 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.75 a__plus(0, Y) -> mark(Y) 166.03/46.75 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.75 a__times(0, Y) -> 0 166.03/46.75 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.75 mark(from(X)) -> a__from(mark(X)) 166.03/46.75 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.75 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.75 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.75 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.75 mark(square(X)) -> a__square(mark(X)) 166.03/46.75 mark(0) -> 0 166.03/46.75 mark(s(X)) -> s(mark(X)) 166.03/46.75 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.75 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.75 mark(nil) -> nil 166.03/46.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.75 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.75 mark(rnil) -> rnil 166.03/46.75 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.75 a__from(X) -> from(X) 166.03/46.75 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.75 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.75 a__pi(X) -> pi(X) 166.03/46.75 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.75 a__times(X1, X2) -> times(X1, X2) 166.03/46.75 a__square(X) -> square(X) 166.03/46.75 166.03/46.75 The set Q consists of the following terms: 166.03/46.75 166.03/46.75 a__from(x0) 166.03/46.75 a__pi(x0) 166.03/46.75 a__square(x0) 166.03/46.75 mark(from(x0)) 166.03/46.75 mark(2ndspos(x0, x1)) 166.03/46.75 mark(2ndsneg(x0, x1)) 166.03/46.75 mark(pi(x0)) 166.03/46.75 mark(plus(x0, x1)) 166.03/46.75 mark(times(x0, x1)) 166.03/46.75 mark(square(x0)) 166.03/46.75 mark(0) 166.03/46.75 mark(s(x0)) 166.03/46.75 mark(posrecip(x0)) 166.03/46.75 mark(negrecip(x0)) 166.03/46.75 mark(nil) 166.03/46.75 mark(cons(x0, x1)) 166.03/46.75 mark(cons2(x0, x1)) 166.03/46.75 mark(rnil) 166.03/46.75 mark(rcons(x0, x1)) 166.03/46.75 a__2ndspos(x0, x1) 166.03/46.75 a__2ndsneg(x0, x1) 166.03/46.75 a__plus(x0, x1) 166.03/46.75 a__times(x0, x1) 166.03/46.75 166.03/46.75 We have to consider all minimal (P,Q,R)-chains. 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (41) DependencyGraphProof (EQUIVALENT) 166.03/46.75 The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes. 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (42) 166.03/46.75 Obligation: 166.03/46.75 Q DP problem: 166.03/46.75 The TRS P consists of the following rules: 166.03/46.75 166.03/46.75 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.75 166.03/46.75 The TRS R consists of the following rules: 166.03/46.75 166.03/46.75 a__from(X) -> cons(mark(X), from(s(X))) 166.03/46.75 a__2ndspos(0, Z) -> rnil 166.03/46.75 a__2ndspos(s(N), cons(X, Z)) -> a__2ndspos(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndspos(s(N), cons2(X, cons(Y, Z))) -> rcons(posrecip(mark(Y)), a__2ndsneg(mark(N), mark(Z))) 166.03/46.75 a__2ndsneg(0, Z) -> rnil 166.03/46.75 a__2ndsneg(s(N), cons(X, Z)) -> a__2ndsneg(s(mark(N)), cons2(X, mark(Z))) 166.03/46.75 a__2ndsneg(s(N), cons2(X, cons(Y, Z))) -> rcons(negrecip(mark(Y)), a__2ndspos(mark(N), mark(Z))) 166.03/46.75 a__pi(X) -> a__2ndspos(mark(X), a__from(0)) 166.03/46.75 a__plus(0, Y) -> mark(Y) 166.03/46.75 a__plus(s(X), Y) -> s(a__plus(mark(X), mark(Y))) 166.03/46.75 a__times(0, Y) -> 0 166.03/46.75 a__times(s(X), Y) -> a__plus(mark(Y), a__times(mark(X), mark(Y))) 166.03/46.75 a__square(X) -> a__times(mark(X), mark(X)) 166.03/46.75 mark(from(X)) -> a__from(mark(X)) 166.03/46.75 mark(2ndspos(X1, X2)) -> a__2ndspos(mark(X1), mark(X2)) 166.03/46.75 mark(2ndsneg(X1, X2)) -> a__2ndsneg(mark(X1), mark(X2)) 166.03/46.75 mark(pi(X)) -> a__pi(mark(X)) 166.03/46.75 mark(plus(X1, X2)) -> a__plus(mark(X1), mark(X2)) 166.03/46.75 mark(times(X1, X2)) -> a__times(mark(X1), mark(X2)) 166.03/46.75 mark(square(X)) -> a__square(mark(X)) 166.03/46.75 mark(0) -> 0 166.03/46.75 mark(s(X)) -> s(mark(X)) 166.03/46.75 mark(posrecip(X)) -> posrecip(mark(X)) 166.03/46.75 mark(negrecip(X)) -> negrecip(mark(X)) 166.03/46.75 mark(nil) -> nil 166.03/46.75 mark(cons(X1, X2)) -> cons(mark(X1), X2) 166.03/46.75 mark(cons2(X1, X2)) -> cons2(X1, mark(X2)) 166.03/46.75 mark(rnil) -> rnil 166.03/46.75 mark(rcons(X1, X2)) -> rcons(mark(X1), mark(X2)) 166.03/46.75 a__from(X) -> from(X) 166.03/46.75 a__2ndspos(X1, X2) -> 2ndspos(X1, X2) 166.03/46.75 a__2ndsneg(X1, X2) -> 2ndsneg(X1, X2) 166.03/46.75 a__pi(X) -> pi(X) 166.03/46.75 a__plus(X1, X2) -> plus(X1, X2) 166.03/46.75 a__times(X1, X2) -> times(X1, X2) 166.03/46.75 a__square(X) -> square(X) 166.03/46.75 166.03/46.75 The set Q consists of the following terms: 166.03/46.75 166.03/46.75 a__from(x0) 166.03/46.75 a__pi(x0) 166.03/46.75 a__square(x0) 166.03/46.75 mark(from(x0)) 166.03/46.75 mark(2ndspos(x0, x1)) 166.03/46.75 mark(2ndsneg(x0, x1)) 166.03/46.75 mark(pi(x0)) 166.03/46.75 mark(plus(x0, x1)) 166.03/46.75 mark(times(x0, x1)) 166.03/46.75 mark(square(x0)) 166.03/46.75 mark(0) 166.03/46.75 mark(s(x0)) 166.03/46.75 mark(posrecip(x0)) 166.03/46.75 mark(negrecip(x0)) 166.03/46.75 mark(nil) 166.03/46.75 mark(cons(x0, x1)) 166.03/46.75 mark(cons2(x0, x1)) 166.03/46.75 mark(rnil) 166.03/46.75 mark(rcons(x0, x1)) 166.03/46.75 a__2ndspos(x0, x1) 166.03/46.75 a__2ndsneg(x0, x1) 166.03/46.75 a__plus(x0, x1) 166.03/46.75 a__times(x0, x1) 166.03/46.75 166.03/46.75 We have to consider all minimal (P,Q,R)-chains. 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (43) UsableRulesProof (EQUIVALENT) 166.03/46.75 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. 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (44) 166.03/46.75 Obligation: 166.03/46.75 Q DP problem: 166.03/46.75 The TRS P consists of the following rules: 166.03/46.75 166.03/46.75 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.75 166.03/46.75 R is empty. 166.03/46.75 The set Q consists of the following terms: 166.03/46.75 166.03/46.75 a__from(x0) 166.03/46.75 a__pi(x0) 166.03/46.75 a__square(x0) 166.03/46.75 mark(from(x0)) 166.03/46.75 mark(2ndspos(x0, x1)) 166.03/46.75 mark(2ndsneg(x0, x1)) 166.03/46.75 mark(pi(x0)) 166.03/46.75 mark(plus(x0, x1)) 166.03/46.75 mark(times(x0, x1)) 166.03/46.75 mark(square(x0)) 166.03/46.75 mark(0) 166.03/46.75 mark(s(x0)) 166.03/46.75 mark(posrecip(x0)) 166.03/46.75 mark(negrecip(x0)) 166.03/46.75 mark(nil) 166.03/46.75 mark(cons(x0, x1)) 166.03/46.75 mark(cons2(x0, x1)) 166.03/46.75 mark(rnil) 166.03/46.75 mark(rcons(x0, x1)) 166.03/46.75 a__2ndspos(x0, x1) 166.03/46.75 a__2ndsneg(x0, x1) 166.03/46.75 a__plus(x0, x1) 166.03/46.75 a__times(x0, x1) 166.03/46.75 166.03/46.75 We have to consider all minimal (P,Q,R)-chains. 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (45) QReductionProof (EQUIVALENT) 166.03/46.75 We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN]. 166.03/46.75 166.03/46.75 a__from(x0) 166.03/46.75 a__pi(x0) 166.03/46.75 a__square(x0) 166.03/46.75 mark(from(x0)) 166.03/46.75 mark(2ndspos(x0, x1)) 166.03/46.75 mark(2ndsneg(x0, x1)) 166.03/46.75 mark(pi(x0)) 166.03/46.75 mark(plus(x0, x1)) 166.03/46.75 mark(times(x0, x1)) 166.03/46.75 mark(square(x0)) 166.03/46.75 mark(0) 166.03/46.75 mark(s(x0)) 166.03/46.75 mark(posrecip(x0)) 166.03/46.75 mark(negrecip(x0)) 166.03/46.75 mark(nil) 166.03/46.75 mark(cons(x0, x1)) 166.03/46.75 mark(cons2(x0, x1)) 166.03/46.75 mark(rnil) 166.03/46.75 mark(rcons(x0, x1)) 166.03/46.75 a__2ndspos(x0, x1) 166.03/46.75 a__2ndsneg(x0, x1) 166.03/46.75 a__plus(x0, x1) 166.03/46.75 a__times(x0, x1) 166.03/46.75 166.03/46.75 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (46) 166.03/46.75 Obligation: 166.03/46.75 Q DP problem: 166.03/46.75 The TRS P consists of the following rules: 166.03/46.75 166.03/46.75 MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.75 166.03/46.75 R is empty. 166.03/46.75 Q is empty. 166.03/46.75 We have to consider all minimal (P,Q,R)-chains. 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (47) QDPSizeChangeProof (EQUIVALENT) 166.03/46.75 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. 166.03/46.75 166.03/46.75 From the DPs we obtained the following set of size-change graphs: 166.03/46.75 *MARK(cons2(X1, X2)) -> MARK(X2) 166.03/46.75 The graph contains the following edges 1 > 1 166.03/46.75 166.03/46.75 166.03/46.75 ---------------------------------------- 166.03/46.75 166.03/46.75 (48) 166.03/46.75 YES 166.46/46.85 EOF