/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files
--------------------------------------------------------------------------------
NO
proof of /export/starexec/sandbox/benchmark/theBenchmark.xml
# AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty
Termination w.r.t. Q of the given QTRS could be disproven:
(0) QTRS
(1) DependencyPairsProof [EQUIVALENT, 0 ms]
(2) QDP
(3) DependencyGraphProof [EQUIVALENT, 0 ms]
(4) AND
(5) QDP
(6) UsableRulesProof [EQUIVALENT, 0 ms]
(7) QDP
(8) QDPSizeChangeProof [EQUIVALENT, 0 ms]
(9) YES
(10) QDP
(11) QDPOrderProof [EQUIVALENT, 52 ms]
(12) QDP
(13) QDPOrderProof [EQUIVALENT, 11 ms]
(14) QDP
(15) TransformationProof [EQUIVALENT, 4 ms]
(16) QDP
(17) QDPOrderProof [EQUIVALENT, 1498 ms]
(18) QDP
(19) QDPOrderProof [EQUIVALENT, 2181 ms]
(20) QDP
(21) SplitQDPProof [EQUIVALENT, 0 ms]
(22) AND
(23) QDP
(24) SemLabProof [SOUND, 0 ms]
(25) QDP
(26) QDPOrderProof [EQUIVALENT, 77 ms]
(27) QDP
(28) QDPOrderProof [EQUIVALENT, 82 ms]
(29) QDP
(30) QDPOrderProof [EQUIVALENT, 40 ms]
(31) QDP
(32) PisEmptyProof [SOUND, 0 ms]
(33) TRUE
(34) QDP
(35) NonTerminationLoopProof [COMPLETE, 12.1 s]
(36) NO
----------------------------------------
(0)
Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
----------------------------------------
(1) DependencyPairsProof (EQUIVALENT)
Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.
----------------------------------------
(2)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(f(a, b, X)) -> MARK(f(X, X, X))
ACTIVE(f(a, b, X)) -> F(X, X, X)
ACTIVE(c) -> MARK(a)
ACTIVE(c) -> MARK(b)
MARK(f(X1, X2, X3)) -> ACTIVE(f(mark(X1), X2, mark(X3)))
MARK(f(X1, X2, X3)) -> F(mark(X1), X2, mark(X3))
MARK(f(X1, X2, X3)) -> MARK(X1)
MARK(f(X1, X2, X3)) -> MARK(X3)
MARK(a) -> ACTIVE(a)
MARK(b) -> ACTIVE(b)
MARK(c) -> ACTIVE(c)
F(mark(X1), X2, X3) -> F(X1, X2, X3)
F(X1, mark(X2), X3) -> F(X1, X2, X3)
F(X1, X2, mark(X3)) -> F(X1, X2, X3)
F(active(X1), X2, X3) -> F(X1, X2, X3)
F(X1, active(X2), X3) -> F(X1, X2, X3)
F(X1, X2, active(X3)) -> F(X1, X2, X3)
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(3) DependencyGraphProof (EQUIVALENT)
The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 2 SCCs with 7 less nodes.
----------------------------------------
(4)
Complex Obligation (AND)
----------------------------------------
(5)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
F(X1, mark(X2), X3) -> F(X1, X2, X3)
F(mark(X1), X2, X3) -> F(X1, X2, X3)
F(X1, X2, mark(X3)) -> F(X1, X2, X3)
F(active(X1), X2, X3) -> F(X1, X2, X3)
F(X1, active(X2), X3) -> F(X1, X2, X3)
F(X1, X2, active(X3)) -> F(X1, X2, X3)
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(6) UsableRulesProof (EQUIVALENT)
We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.
----------------------------------------
(7)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
F(X1, mark(X2), X3) -> F(X1, X2, X3)
F(mark(X1), X2, X3) -> F(X1, X2, X3)
F(X1, X2, mark(X3)) -> F(X1, X2, X3)
F(active(X1), X2, X3) -> F(X1, X2, X3)
F(X1, active(X2), X3) -> F(X1, X2, X3)
F(X1, X2, active(X3)) -> F(X1, X2, X3)
R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(8) QDPSizeChangeProof (EQUIVALENT)
By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.
From the DPs we obtained the following set of size-change graphs:
*F(X1, mark(X2), X3) -> F(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
*F(mark(X1), X2, X3) -> F(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
*F(X1, X2, mark(X3)) -> F(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
*F(active(X1), X2, X3) -> F(X1, X2, X3)
The graph contains the following edges 1 > 1, 2 >= 2, 3 >= 3
*F(X1, active(X2), X3) -> F(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3
*F(X1, X2, active(X3)) -> F(X1, X2, X3)
The graph contains the following edges 1 >= 1, 2 >= 2, 3 > 3
----------------------------------------
(9)
YES
----------------------------------------
(10)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(f(X1, X2, X3)) -> ACTIVE(f(mark(X1), X2, mark(X3)))
ACTIVE(f(a, b, X)) -> MARK(f(X, X, X))
MARK(f(X1, X2, X3)) -> MARK(X1)
MARK(f(X1, X2, X3)) -> MARK(X3)
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(11) QDPOrderProof (EQUIVALENT)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(f(X1, X2, X3)) -> MARK(X3)
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]:
<<<
POL(MARK(x_1)) = [[-I]] + [[0A]] * x_1
>>>
<<<
POL(f(x_1, x_2, x_3)) = [[-I]] + [[0A]] * x_1 + [[-I]] * x_2 + [[1A]] * x_3
>>>
<<<
POL(ACTIVE(x_1)) = [[-I]] + [[0A]] * x_1
>>>
<<<
POL(mark(x_1)) = [[-I]] + [[0A]] * x_1
>>>
<<<
POL(a) = [[0A]]
>>>
<<<
POL(b) = [[0A]]
>>>
<<<
POL(active(x_1)) = [[-I]] + [[0A]] * x_1
>>>
<<<
POL(c) = [[5A]]
>>>
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
active(f(a, b, X)) -> mark(f(X, X, X))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
active(c) -> mark(a)
active(c) -> mark(b)
----------------------------------------
(12)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(f(X1, X2, X3)) -> ACTIVE(f(mark(X1), X2, mark(X3)))
ACTIVE(f(a, b, X)) -> MARK(f(X, X, X))
MARK(f(X1, X2, X3)) -> MARK(X1)
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(13) QDPOrderProof (EQUIVALENT)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(f(X1, X2, X3)) -> MARK(X1)
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]:
<<<
POL(MARK(x_1)) = [[-I]] + [[0A]] * x_1
>>>
<<<
POL(f(x_1, x_2, x_3)) = [[0A]] + [[1A]] * x_1 + [[-I]] * x_2 + [[1A]] * x_3
>>>
<<<
POL(ACTIVE(x_1)) = [[-I]] + [[0A]] * x_1
>>>
<<<
POL(mark(x_1)) = [[-I]] + [[0A]] * x_1
>>>
<<<
POL(a) = [[2A]]
>>>
<<<
POL(b) = [[0A]]
>>>
<<<
POL(active(x_1)) = [[0A]] + [[0A]] * x_1
>>>
<<<
POL(c) = [[2A]]
>>>
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
active(f(a, b, X)) -> mark(f(X, X, X))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
active(c) -> mark(a)
active(c) -> mark(b)
----------------------------------------
(14)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(f(X1, X2, X3)) -> ACTIVE(f(mark(X1), X2, mark(X3)))
ACTIVE(f(a, b, X)) -> MARK(f(X, X, X))
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(15) TransformationProof (EQUIVALENT)
By narrowing [LPAR04] the rule MARK(f(X1, X2, X3)) -> ACTIVE(f(mark(X1), X2, mark(X3))) at position [0] we obtained the following new rules [LPAR04]:
(MARK(f(x0, x1, y2)) -> ACTIVE(f(x0, x1, mark(y2))),MARK(f(x0, x1, y2)) -> ACTIVE(f(x0, x1, mark(y2))))
(MARK(f(y0, mark(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2))),MARK(f(y0, mark(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2))))
(MARK(f(y0, x1, x2)) -> ACTIVE(f(mark(y0), x1, x2)),MARK(f(y0, x1, x2)) -> ACTIVE(f(mark(y0), x1, x2)))
(MARK(f(y0, active(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2))),MARK(f(y0, active(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2))))
(MARK(f(f(x0, x1, x2), y1, y2)) -> ACTIVE(f(active(f(mark(x0), x1, mark(x2))), y1, mark(y2))),MARK(f(f(x0, x1, x2), y1, y2)) -> ACTIVE(f(active(f(mark(x0), x1, mark(x2))), y1, mark(y2))))
(MARK(f(a, y1, y2)) -> ACTIVE(f(active(a), y1, mark(y2))),MARK(f(a, y1, y2)) -> ACTIVE(f(active(a), y1, mark(y2))))
(MARK(f(b, y1, y2)) -> ACTIVE(f(active(b), y1, mark(y2))),MARK(f(b, y1, y2)) -> ACTIVE(f(active(b), y1, mark(y2))))
(MARK(f(c, y1, y2)) -> ACTIVE(f(active(c), y1, mark(y2))),MARK(f(c, y1, y2)) -> ACTIVE(f(active(c), y1, mark(y2))))
(MARK(f(y0, y1, f(x0, x1, x2))) -> ACTIVE(f(mark(y0), y1, active(f(mark(x0), x1, mark(x2))))),MARK(f(y0, y1, f(x0, x1, x2))) -> ACTIVE(f(mark(y0), y1, active(f(mark(x0), x1, mark(x2))))))
(MARK(f(y0, y1, a)) -> ACTIVE(f(mark(y0), y1, active(a))),MARK(f(y0, y1, a)) -> ACTIVE(f(mark(y0), y1, active(a))))
(MARK(f(y0, y1, b)) -> ACTIVE(f(mark(y0), y1, active(b))),MARK(f(y0, y1, b)) -> ACTIVE(f(mark(y0), y1, active(b))))
(MARK(f(y0, y1, c)) -> ACTIVE(f(mark(y0), y1, active(c))),MARK(f(y0, y1, c)) -> ACTIVE(f(mark(y0), y1, active(c))))
----------------------------------------
(16)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(f(a, b, X)) -> MARK(f(X, X, X))
MARK(f(x0, x1, y2)) -> ACTIVE(f(x0, x1, mark(y2)))
MARK(f(y0, mark(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(y0, x1, x2)) -> ACTIVE(f(mark(y0), x1, x2))
MARK(f(y0, active(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(f(x0, x1, x2), y1, y2)) -> ACTIVE(f(active(f(mark(x0), x1, mark(x2))), y1, mark(y2)))
MARK(f(a, y1, y2)) -> ACTIVE(f(active(a), y1, mark(y2)))
MARK(f(b, y1, y2)) -> ACTIVE(f(active(b), y1, mark(y2)))
MARK(f(c, y1, y2)) -> ACTIVE(f(active(c), y1, mark(y2)))
MARK(f(y0, y1, f(x0, x1, x2))) -> ACTIVE(f(mark(y0), y1, active(f(mark(x0), x1, mark(x2)))))
MARK(f(y0, y1, a)) -> ACTIVE(f(mark(y0), y1, active(a)))
MARK(f(y0, y1, b)) -> ACTIVE(f(mark(y0), y1, active(b)))
MARK(f(y0, y1, c)) -> ACTIVE(f(mark(y0), y1, active(c)))
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(17) QDPOrderProof (EQUIVALENT)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(f(y0, y1, a)) -> ACTIVE(f(mark(y0), y1, active(a)))
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]:
<<<
POL(ACTIVE(x_1)) = [[0A]] + [[0A, -I, 0A]] * x_1
>>>
<<<
POL(f(x_1, x_2, x_3)) = [[0A], [2A], [0A]] + [[-I, -I, -I], [0A, -I, -I], [-I, -I, -I]] * x_1 + [[-I, -I, -I], [1A, -I, 0A], [0A, -I, -I]] * x_2 + [[-I, -I, 0A], [-I, -I, 0A], [1A, -I, -I]] * x_3
>>>
<<<
POL(a) = [[0A], [0A], [0A]]
>>>
<<<
POL(b) = [[2A], [0A], [0A]]
>>>
<<<
POL(MARK(x_1)) = [[0A]] + [[0A, 0A, 0A]] * x_1
>>>
<<<
POL(mark(x_1)) = [[-I], [0A], [0A]] + [[0A, -I, -I], [0A, -I, 0A], [-I, -I, 0A]] * x_1
>>>
<<<
POL(active(x_1)) = [[0A], [0A], [0A]] + [[0A, -I, -I], [0A, -I, 0A], [-I, -I, 0A]] * x_1
>>>
<<<
POL(c) = [[2A], [0A], [-I]]
>>>
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
active(f(a, b, X)) -> mark(f(X, X, X))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
active(c) -> mark(a)
active(c) -> mark(b)
----------------------------------------
(18)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(f(a, b, X)) -> MARK(f(X, X, X))
MARK(f(x0, x1, y2)) -> ACTIVE(f(x0, x1, mark(y2)))
MARK(f(y0, mark(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(y0, x1, x2)) -> ACTIVE(f(mark(y0), x1, x2))
MARK(f(y0, active(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(f(x0, x1, x2), y1, y2)) -> ACTIVE(f(active(f(mark(x0), x1, mark(x2))), y1, mark(y2)))
MARK(f(a, y1, y2)) -> ACTIVE(f(active(a), y1, mark(y2)))
MARK(f(b, y1, y2)) -> ACTIVE(f(active(b), y1, mark(y2)))
MARK(f(c, y1, y2)) -> ACTIVE(f(active(c), y1, mark(y2)))
MARK(f(y0, y1, f(x0, x1, x2))) -> ACTIVE(f(mark(y0), y1, active(f(mark(x0), x1, mark(x2)))))
MARK(f(y0, y1, b)) -> ACTIVE(f(mark(y0), y1, active(b)))
MARK(f(y0, y1, c)) -> ACTIVE(f(mark(y0), y1, active(c)))
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(19) QDPOrderProof (EQUIVALENT)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK(f(y0, y1, b)) -> ACTIVE(f(mark(y0), y1, active(b)))
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] with arctic natural numbers [ARCTIC]:
<<<
POL(ACTIVE(x_1)) = [[0A]] + [[-I, 0A, 0A]] * x_1
>>>
<<<
POL(f(x_1, x_2, x_3)) = [[0A], [0A], [0A]] + [[1A, -I, -I], [0A, -I, -I], [0A, -I, -I]] * x_1 + [[1A, -I, -I], [-I, -I, -I], [0A, -I, -I]] * x_2 + [[1A, -I, -I], [0A, -I, 0A], [1A, -I, -I]] * x_3
>>>
<<<
POL(a) = [[2A], [0A], [-I]]
>>>
<<<
POL(b) = [[0A], [0A], [0A]]
>>>
<<<
POL(MARK(x_1)) = [[2A]] + [[0A, 0A, 0A]] * x_1
>>>
<<<
POL(mark(x_1)) = [[-I], [0A], [-I]] + [[0A, -I, -I], [0A, 0A, 0A], [-I, -I, 0A]] * x_1
>>>
<<<
POL(active(x_1)) = [[-I], [0A], [-I]] + [[0A, -I, 0A], [0A, 0A, 0A], [-I, -I, 0A]] * x_1
>>>
<<<
POL(c) = [[2A], [0A], [0A]]
>>>
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
active(f(a, b, X)) -> mark(f(X, X, X))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
active(c) -> mark(a)
active(c) -> mark(b)
----------------------------------------
(20)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(f(a, b, X)) -> MARK(f(X, X, X))
MARK(f(x0, x1, y2)) -> ACTIVE(f(x0, x1, mark(y2)))
MARK(f(y0, mark(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(y0, x1, x2)) -> ACTIVE(f(mark(y0), x1, x2))
MARK(f(y0, active(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(f(x0, x1, x2), y1, y2)) -> ACTIVE(f(active(f(mark(x0), x1, mark(x2))), y1, mark(y2)))
MARK(f(a, y1, y2)) -> ACTIVE(f(active(a), y1, mark(y2)))
MARK(f(b, y1, y2)) -> ACTIVE(f(active(b), y1, mark(y2)))
MARK(f(c, y1, y2)) -> ACTIVE(f(active(c), y1, mark(y2)))
MARK(f(y0, y1, f(x0, x1, x2))) -> ACTIVE(f(mark(y0), y1, active(f(mark(x0), x1, mark(x2)))))
MARK(f(y0, y1, c)) -> ACTIVE(f(mark(y0), y1, active(c)))
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(21) SplitQDPProof (EQUIVALENT)
We show in the first subproof that some pairs and rules can be removed, afterwards, we continue with the remaining DP-Problem
----------------------------------------
(22)
Complex Obligation (AND)
----------------------------------------
(23)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
ACTIVE(f(a, b, X)) -> MARK(f(X, X, X))
MARK(f(x0, x1, y2)) -> ACTIVE(f(x0, x1, mark(y2)))
MARK(f(y0, mark(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(y0, x1, x2)) -> ACTIVE(f(mark(y0), x1, x2))
MARK(f(y0, active(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(f(x0, x1, x2), y1, y2)) -> ACTIVE(f(active(f(mark(x0), x1, mark(x2))), y1, mark(y2)))
MARK(f(a, y1, y2)) -> ACTIVE(f(active(a), y1, mark(y2)))
MARK(f(b, y1, y2)) -> ACTIVE(f(active(b), y1, mark(y2)))
MARK(f(c, y1, y2)) -> ACTIVE(f(active(c), y1, mark(y2)))
MARK(f(y0, y1, f(x0, x1, x2))) -> ACTIVE(f(mark(y0), y1, active(f(mark(x0), x1, mark(x2)))))
MARK(f(y0, y1, c)) -> ACTIVE(f(mark(y0), y1, active(c)))
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(24) SemLabProof (SOUND)
We found the following model for the rules of the TRSs R and P.
Interpretation over the domain with elements from 0 to 1.
active: x0
a: 1
b: 1
c: 1
MARK: 0
f: 0
ACTIVE: 0
mark: x0
By semantic labelling [SEMLAB] we obtain the following labelled QDP problem.
----------------------------------------
(25)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
ACTIVE.0(f.1-1-0(a., b., X)) -> MARK.0(f.0-0-0(X, X, X))
MARK.0(f.0-0-0(x0, x1, y2)) -> ACTIVE.0(f.0-0-0(x0, x1, mark.0(y2)))
MARK.0(f.0-0-1(x0, x1, y2)) -> ACTIVE.0(f.0-0-1(x0, x1, mark.1(y2)))
MARK.0(f.0-1-0(x0, x1, y2)) -> ACTIVE.0(f.0-1-0(x0, x1, mark.0(y2)))
MARK.0(f.0-1-1(x0, x1, y2)) -> ACTIVE.0(f.0-1-1(x0, x1, mark.1(y2)))
MARK.0(f.1-0-0(x0, x1, y2)) -> ACTIVE.0(f.1-0-0(x0, x1, mark.0(y2)))
MARK.0(f.1-0-1(x0, x1, y2)) -> ACTIVE.0(f.1-0-1(x0, x1, mark.1(y2)))
MARK.0(f.1-1-0(x0, x1, y2)) -> ACTIVE.0(f.1-1-0(x0, x1, mark.0(y2)))
MARK.0(f.1-1-1(x0, x1, y2)) -> ACTIVE.0(f.1-1-1(x0, x1, mark.1(y2)))
ACTIVE.0(f.1-1-1(a., b., X)) -> MARK.0(f.1-1-1(X, X, X))
MARK.0(f.0-0-0(y0, mark.0(x1), y2)) -> ACTIVE.0(f.0-0-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-0-1(y0, mark.0(x1), y2)) -> ACTIVE.0(f.0-0-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.0-1-0(y0, mark.1(x1), y2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-1-1(y0, mark.1(x1), y2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.1-0-0(y0, mark.0(x1), y2)) -> ACTIVE.0(f.1-0-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-0-1(y0, mark.0(x1), y2)) -> ACTIVE.0(f.1-0-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.1-1-0(y0, mark.1(x1), y2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-1-1(y0, mark.1(x1), y2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.0-0-0(y0, x1, x2)) -> ACTIVE.0(f.0-0-0(mark.0(y0), x1, x2))
MARK.0(f.0-0-1(y0, x1, x2)) -> ACTIVE.0(f.0-0-1(mark.0(y0), x1, x2))
MARK.0(f.0-1-0(y0, x1, x2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, x2))
MARK.0(f.0-1-1(y0, x1, x2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, x2))
MARK.0(f.1-0-0(y0, x1, x2)) -> ACTIVE.0(f.1-0-0(mark.1(y0), x1, x2))
MARK.0(f.1-0-1(y0, x1, x2)) -> ACTIVE.0(f.1-0-1(mark.1(y0), x1, x2))
MARK.0(f.1-1-0(y0, x1, x2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, x2))
MARK.0(f.1-1-1(y0, x1, x2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, x2))
MARK.0(f.0-0-0(y0, active.0(x1), y2)) -> ACTIVE.0(f.0-0-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-0-1(y0, active.0(x1), y2)) -> ACTIVE.0(f.0-0-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.0-1-0(y0, active.1(x1), y2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-1-1(y0, active.1(x1), y2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.1-0-0(y0, active.0(x1), y2)) -> ACTIVE.0(f.1-0-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-0-1(y0, active.0(x1), y2)) -> ACTIVE.0(f.1-0-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.1-1-0(y0, active.1(x1), y2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-1-1(y0, active.1(x1), y2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.1-0-0(a., y1, y2)) -> ACTIVE.0(f.1-0-0(active.1(a.), y1, mark.0(y2)))
MARK.0(f.1-0-1(a., y1, y2)) -> ACTIVE.0(f.1-0-1(active.1(a.), y1, mark.1(y2)))
MARK.0(f.1-1-0(a., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(a.), y1, mark.0(y2)))
MARK.0(f.1-1-1(a., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(a.), y1, mark.1(y2)))
MARK.0(f.1-0-0(b., y1, y2)) -> ACTIVE.0(f.1-0-0(active.1(b.), y1, mark.0(y2)))
MARK.0(f.1-0-1(b., y1, y2)) -> ACTIVE.0(f.1-0-1(active.1(b.), y1, mark.1(y2)))
MARK.0(f.1-1-0(b., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(b.), y1, mark.0(y2)))
MARK.0(f.1-1-1(b., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(b.), y1, mark.1(y2)))
MARK.0(f.1-0-0(c., y1, y2)) -> ACTIVE.0(f.1-0-0(active.1(c.), y1, mark.0(y2)))
MARK.0(f.1-0-1(c., y1, y2)) -> ACTIVE.0(f.1-0-1(active.1(c.), y1, mark.1(y2)))
MARK.0(f.1-1-0(c., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(c.), y1, mark.0(y2)))
MARK.0(f.1-1-1(c., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(c.), y1, mark.1(y2)))
MARK.0(f.0-0-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-1(y0, y1, c.)) -> ACTIVE.0(f.0-0-1(mark.0(y0), y1, active.1(c.)))
MARK.0(f.0-1-1(y0, y1, c.)) -> ACTIVE.0(f.0-1-1(mark.0(y0), y1, active.1(c.)))
MARK.0(f.1-0-1(y0, y1, c.)) -> ACTIVE.0(f.1-0-1(mark.1(y0), y1, active.1(c.)))
MARK.0(f.1-1-1(y0, y1, c.)) -> ACTIVE.0(f.1-1-1(mark.1(y0), y1, active.1(c.)))
The TRS R consists of the following rules:
active.0(f.1-1-0(a., b., X)) -> mark.0(f.0-0-0(X, X, X))
active.0(f.1-1-1(a., b., X)) -> mark.0(f.1-1-1(X, X, X))
active.1(c.) -> mark.1(a.)
active.1(c.) -> mark.1(b.)
mark.0(f.0-0-0(X1, X2, X3)) -> active.0(f.0-0-0(mark.0(X1), X2, mark.0(X3)))
mark.0(f.0-0-1(X1, X2, X3)) -> active.0(f.0-0-1(mark.0(X1), X2, mark.1(X3)))
mark.0(f.0-1-0(X1, X2, X3)) -> active.0(f.0-1-0(mark.0(X1), X2, mark.0(X3)))
mark.0(f.0-1-1(X1, X2, X3)) -> active.0(f.0-1-1(mark.0(X1), X2, mark.1(X3)))
mark.0(f.1-0-0(X1, X2, X3)) -> active.0(f.1-0-0(mark.1(X1), X2, mark.0(X3)))
mark.0(f.1-0-1(X1, X2, X3)) -> active.0(f.1-0-1(mark.1(X1), X2, mark.1(X3)))
mark.0(f.1-1-0(X1, X2, X3)) -> active.0(f.1-1-0(mark.1(X1), X2, mark.0(X3)))
mark.0(f.1-1-1(X1, X2, X3)) -> active.0(f.1-1-1(mark.1(X1), X2, mark.1(X3)))
mark.1(a.) -> active.1(a.)
mark.1(b.) -> active.1(b.)
mark.1(c.) -> active.1(c.)
f.0-0-0(mark.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(mark.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(mark.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(mark.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(mark.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(mark.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(mark.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(mark.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, mark.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, mark.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, mark.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, mark.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, mark.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, mark.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, mark.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, mark.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, X2, mark.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, X2, mark.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, X2, mark.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, X2, mark.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, X2, mark.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, X2, mark.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, X2, mark.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, X2, mark.1(X3)) -> f.1-1-1(X1, X2, X3)
f.0-0-0(active.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(active.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(active.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(active.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(active.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(active.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(active.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(active.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, active.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, active.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, active.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, active.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, active.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, active.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, active.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, active.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, X2, active.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, X2, active.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, X2, active.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, X2, active.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, X2, active.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, X2, active.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, X2, active.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, X2, active.1(X3)) -> f.1-1-1(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(26) QDPOrderProof (EQUIVALENT)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
ACTIVE.0(f.1-1-0(a., b., X)) -> MARK.0(f.0-0-0(X, X, X))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:
POL(ACTIVE.0(x_1)) = x_1
POL(MARK.0(x_1)) = x_1
POL(a.) = 0
POL(active.0(x_1)) = 0
POL(active.1(x_1)) = 0
POL(b.) = 0
POL(c.) = 0
POL(f.0-0-0(x_1, x_2, x_3)) = 0
POL(f.0-0-1(x_1, x_2, x_3)) = 0
POL(f.0-1-0(x_1, x_2, x_3)) = 0
POL(f.0-1-1(x_1, x_2, x_3)) = 0
POL(f.1-0-0(x_1, x_2, x_3)) = 0
POL(f.1-0-1(x_1, x_2, x_3)) = 0
POL(f.1-1-0(x_1, x_2, x_3)) = 1
POL(f.1-1-1(x_1, x_2, x_3)) = 0
POL(mark.0(x_1)) = 0
POL(mark.1(x_1)) = 0
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
f.0-0-0(X1, mark.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-0(mark.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-0(X1, X2, mark.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-0(active.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-0(X1, active.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-0(X1, X2, active.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, mark.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-0-1(mark.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-0-1(X1, X2, mark.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-0-1(active.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-0-1(X1, active.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-0-1(X1, X2, active.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, mark.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-0(mark.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-0(X1, X2, mark.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-0(active.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-0(X1, active.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-0(X1, X2, active.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, mark.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.0-1-1(mark.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.0-1-1(X1, X2, mark.1(X3)) -> f.0-1-1(X1, X2, X3)
f.0-1-1(active.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.0-1-1(X1, active.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.0-1-1(X1, X2, active.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, mark.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-0(mark.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-0(X1, X2, mark.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-0(active.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-0(X1, active.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-0(X1, X2, active.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, mark.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-0-1(mark.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-0-1(X1, X2, mark.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-0-1(active.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-0-1(X1, active.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-0-1(X1, X2, active.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, mark.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-0(mark.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-0(X1, X2, mark.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-0(active.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-0(X1, active.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-0(X1, X2, active.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, mark.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(mark.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(X1, X2, mark.1(X3)) -> f.1-1-1(X1, X2, X3)
f.1-1-1(active.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(X1, active.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(X1, X2, active.1(X3)) -> f.1-1-1(X1, X2, X3)
----------------------------------------
(27)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK.0(f.0-0-0(x0, x1, y2)) -> ACTIVE.0(f.0-0-0(x0, x1, mark.0(y2)))
MARK.0(f.0-0-1(x0, x1, y2)) -> ACTIVE.0(f.0-0-1(x0, x1, mark.1(y2)))
MARK.0(f.0-1-0(x0, x1, y2)) -> ACTIVE.0(f.0-1-0(x0, x1, mark.0(y2)))
MARK.0(f.0-1-1(x0, x1, y2)) -> ACTIVE.0(f.0-1-1(x0, x1, mark.1(y2)))
MARK.0(f.1-0-0(x0, x1, y2)) -> ACTIVE.0(f.1-0-0(x0, x1, mark.0(y2)))
MARK.0(f.1-0-1(x0, x1, y2)) -> ACTIVE.0(f.1-0-1(x0, x1, mark.1(y2)))
MARK.0(f.1-1-0(x0, x1, y2)) -> ACTIVE.0(f.1-1-0(x0, x1, mark.0(y2)))
MARK.0(f.1-1-1(x0, x1, y2)) -> ACTIVE.0(f.1-1-1(x0, x1, mark.1(y2)))
ACTIVE.0(f.1-1-1(a., b., X)) -> MARK.0(f.1-1-1(X, X, X))
MARK.0(f.0-0-0(y0, mark.0(x1), y2)) -> ACTIVE.0(f.0-0-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-0-1(y0, mark.0(x1), y2)) -> ACTIVE.0(f.0-0-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.0-1-0(y0, mark.1(x1), y2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-1-1(y0, mark.1(x1), y2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.1-0-0(y0, mark.0(x1), y2)) -> ACTIVE.0(f.1-0-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-0-1(y0, mark.0(x1), y2)) -> ACTIVE.0(f.1-0-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.1-1-0(y0, mark.1(x1), y2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-1-1(y0, mark.1(x1), y2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.0-0-0(y0, x1, x2)) -> ACTIVE.0(f.0-0-0(mark.0(y0), x1, x2))
MARK.0(f.0-0-1(y0, x1, x2)) -> ACTIVE.0(f.0-0-1(mark.0(y0), x1, x2))
MARK.0(f.0-1-0(y0, x1, x2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, x2))
MARK.0(f.0-1-1(y0, x1, x2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, x2))
MARK.0(f.1-0-0(y0, x1, x2)) -> ACTIVE.0(f.1-0-0(mark.1(y0), x1, x2))
MARK.0(f.1-0-1(y0, x1, x2)) -> ACTIVE.0(f.1-0-1(mark.1(y0), x1, x2))
MARK.0(f.1-1-0(y0, x1, x2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, x2))
MARK.0(f.1-1-1(y0, x1, x2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, x2))
MARK.0(f.0-0-0(y0, active.0(x1), y2)) -> ACTIVE.0(f.0-0-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-0-1(y0, active.0(x1), y2)) -> ACTIVE.0(f.0-0-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.0-1-0(y0, active.1(x1), y2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-1-1(y0, active.1(x1), y2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.1-0-0(y0, active.0(x1), y2)) -> ACTIVE.0(f.1-0-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-0-1(y0, active.0(x1), y2)) -> ACTIVE.0(f.1-0-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.1-1-0(y0, active.1(x1), y2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-1-1(y0, active.1(x1), y2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.1-0-0(a., y1, y2)) -> ACTIVE.0(f.1-0-0(active.1(a.), y1, mark.0(y2)))
MARK.0(f.1-0-1(a., y1, y2)) -> ACTIVE.0(f.1-0-1(active.1(a.), y1, mark.1(y2)))
MARK.0(f.1-1-0(a., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(a.), y1, mark.0(y2)))
MARK.0(f.1-1-1(a., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(a.), y1, mark.1(y2)))
MARK.0(f.1-0-0(b., y1, y2)) -> ACTIVE.0(f.1-0-0(active.1(b.), y1, mark.0(y2)))
MARK.0(f.1-0-1(b., y1, y2)) -> ACTIVE.0(f.1-0-1(active.1(b.), y1, mark.1(y2)))
MARK.0(f.1-1-0(b., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(b.), y1, mark.0(y2)))
MARK.0(f.1-1-1(b., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(b.), y1, mark.1(y2)))
MARK.0(f.1-0-0(c., y1, y2)) -> ACTIVE.0(f.1-0-0(active.1(c.), y1, mark.0(y2)))
MARK.0(f.1-0-1(c., y1, y2)) -> ACTIVE.0(f.1-0-1(active.1(c.), y1, mark.1(y2)))
MARK.0(f.1-1-0(c., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(c.), y1, mark.0(y2)))
MARK.0(f.1-1-1(c., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(c.), y1, mark.1(y2)))
MARK.0(f.0-0-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-1(y0, y1, c.)) -> ACTIVE.0(f.0-0-1(mark.0(y0), y1, active.1(c.)))
MARK.0(f.0-1-1(y0, y1, c.)) -> ACTIVE.0(f.0-1-1(mark.0(y0), y1, active.1(c.)))
MARK.0(f.1-0-1(y0, y1, c.)) -> ACTIVE.0(f.1-0-1(mark.1(y0), y1, active.1(c.)))
MARK.0(f.1-1-1(y0, y1, c.)) -> ACTIVE.0(f.1-1-1(mark.1(y0), y1, active.1(c.)))
The TRS R consists of the following rules:
active.0(f.1-1-0(a., b., X)) -> mark.0(f.0-0-0(X, X, X))
active.0(f.1-1-1(a., b., X)) -> mark.0(f.1-1-1(X, X, X))
active.1(c.) -> mark.1(a.)
active.1(c.) -> mark.1(b.)
mark.0(f.0-0-0(X1, X2, X3)) -> active.0(f.0-0-0(mark.0(X1), X2, mark.0(X3)))
mark.0(f.0-0-1(X1, X2, X3)) -> active.0(f.0-0-1(mark.0(X1), X2, mark.1(X3)))
mark.0(f.0-1-0(X1, X2, X3)) -> active.0(f.0-1-0(mark.0(X1), X2, mark.0(X3)))
mark.0(f.0-1-1(X1, X2, X3)) -> active.0(f.0-1-1(mark.0(X1), X2, mark.1(X3)))
mark.0(f.1-0-0(X1, X2, X3)) -> active.0(f.1-0-0(mark.1(X1), X2, mark.0(X3)))
mark.0(f.1-0-1(X1, X2, X3)) -> active.0(f.1-0-1(mark.1(X1), X2, mark.1(X3)))
mark.0(f.1-1-0(X1, X2, X3)) -> active.0(f.1-1-0(mark.1(X1), X2, mark.0(X3)))
mark.0(f.1-1-1(X1, X2, X3)) -> active.0(f.1-1-1(mark.1(X1), X2, mark.1(X3)))
mark.1(a.) -> active.1(a.)
mark.1(b.) -> active.1(b.)
mark.1(c.) -> active.1(c.)
f.0-0-0(mark.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(mark.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(mark.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(mark.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(mark.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(mark.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(mark.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(mark.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, mark.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, mark.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, mark.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, mark.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, mark.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, mark.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, mark.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, mark.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, X2, mark.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, X2, mark.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, X2, mark.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, X2, mark.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, X2, mark.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, X2, mark.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, X2, mark.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, X2, mark.1(X3)) -> f.1-1-1(X1, X2, X3)
f.0-0-0(active.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(active.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(active.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(active.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(active.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(active.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(active.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(active.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, active.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, active.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, active.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, active.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, active.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, active.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, active.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, active.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, X2, active.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, X2, active.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, X2, active.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, X2, active.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, X2, active.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, X2, active.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, X2, active.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, X2, active.1(X3)) -> f.1-1-1(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(28) QDPOrderProof (EQUIVALENT)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK.0(f.0-0-0(x0, x1, y2)) -> ACTIVE.0(f.0-0-0(x0, x1, mark.0(y2)))
MARK.0(f.0-0-1(x0, x1, y2)) -> ACTIVE.0(f.0-0-1(x0, x1, mark.1(y2)))
MARK.0(f.1-0-0(x0, x1, y2)) -> ACTIVE.0(f.1-0-0(x0, x1, mark.0(y2)))
MARK.0(f.1-0-1(x0, x1, y2)) -> ACTIVE.0(f.1-0-1(x0, x1, mark.1(y2)))
MARK.0(f.0-0-0(y0, mark.0(x1), y2)) -> ACTIVE.0(f.0-0-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-0-1(y0, mark.0(x1), y2)) -> ACTIVE.0(f.0-0-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.0-1-0(y0, mark.1(x1), y2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.1-0-0(y0, mark.0(x1), y2)) -> ACTIVE.0(f.1-0-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-0-1(y0, mark.0(x1), y2)) -> ACTIVE.0(f.1-0-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.0-0-0(y0, x1, x2)) -> ACTIVE.0(f.0-0-0(mark.0(y0), x1, x2))
MARK.0(f.0-0-1(y0, x1, x2)) -> ACTIVE.0(f.0-0-1(mark.0(y0), x1, x2))
MARK.0(f.1-0-0(y0, x1, x2)) -> ACTIVE.0(f.1-0-0(mark.1(y0), x1, x2))
MARK.0(f.1-0-1(y0, x1, x2)) -> ACTIVE.0(f.1-0-1(mark.1(y0), x1, x2))
MARK.0(f.0-0-0(y0, active.0(x1), y2)) -> ACTIVE.0(f.0-0-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-0-1(y0, active.0(x1), y2)) -> ACTIVE.0(f.0-0-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.1-0-0(y0, active.0(x1), y2)) -> ACTIVE.0(f.1-0-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-0-1(y0, active.0(x1), y2)) -> ACTIVE.0(f.1-0-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-1(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-1(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-1(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-1(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-0-0(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-0(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-0-1(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-0-1(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.1-0-0(a., y1, y2)) -> ACTIVE.0(f.1-0-0(active.1(a.), y1, mark.0(y2)))
MARK.0(f.1-0-1(a., y1, y2)) -> ACTIVE.0(f.1-0-1(active.1(a.), y1, mark.1(y2)))
MARK.0(f.1-1-0(a., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(a.), y1, mark.0(y2)))
MARK.0(f.1-0-0(b., y1, y2)) -> ACTIVE.0(f.1-0-0(active.1(b.), y1, mark.0(y2)))
MARK.0(f.1-0-1(b., y1, y2)) -> ACTIVE.0(f.1-0-1(active.1(b.), y1, mark.1(y2)))
MARK.0(f.1-1-0(b., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(b.), y1, mark.0(y2)))
MARK.0(f.1-0-0(c., y1, y2)) -> ACTIVE.0(f.1-0-0(active.1(c.), y1, mark.0(y2)))
MARK.0(f.1-0-1(c., y1, y2)) -> ACTIVE.0(f.1-0-1(active.1(c.), y1, mark.1(y2)))
MARK.0(f.0-0-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-0-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-0-0(mark.0(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-0-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-0-0(mark.1(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-0-1(y0, y1, c.)) -> ACTIVE.0(f.0-0-1(mark.0(y0), y1, active.1(c.)))
MARK.0(f.1-0-1(y0, y1, c.)) -> ACTIVE.0(f.1-0-1(mark.1(y0), y1, active.1(c.)))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:
POL(ACTIVE.0(x_1)) = 0
POL(MARK.0(x_1)) = x_1
POL(a.) = 1
POL(active.0(x_1)) = 0
POL(active.1(x_1)) = 0
POL(b.) = 1
POL(c.) = 0
POL(f.0-0-0(x_1, x_2, x_3)) = 1 + x_2
POL(f.0-0-1(x_1, x_2, x_3)) = 1 + x_2
POL(f.0-1-0(x_1, x_2, x_3)) = x_2 + x_3
POL(f.0-1-1(x_1, x_2, x_3)) = x_1
POL(f.1-0-0(x_1, x_2, x_3)) = 1 + x_1
POL(f.1-0-1(x_1, x_2, x_3)) = 1 + x_1 + x_2
POL(f.1-1-0(x_1, x_2, x_3)) = x_1
POL(f.1-1-1(x_1, x_2, x_3)) = 0
POL(mark.0(x_1)) = 1
POL(mark.1(x_1)) = 1
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
f.1-1-1(X1, mark.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(mark.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(X1, X2, mark.1(X3)) -> f.1-1-1(X1, X2, X3)
f.1-1-1(active.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(X1, active.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(X1, X2, active.1(X3)) -> f.1-1-1(X1, X2, X3)
----------------------------------------
(29)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK.0(f.0-1-0(x0, x1, y2)) -> ACTIVE.0(f.0-1-0(x0, x1, mark.0(y2)))
MARK.0(f.0-1-1(x0, x1, y2)) -> ACTIVE.0(f.0-1-1(x0, x1, mark.1(y2)))
MARK.0(f.1-1-0(x0, x1, y2)) -> ACTIVE.0(f.1-1-0(x0, x1, mark.0(y2)))
MARK.0(f.1-1-1(x0, x1, y2)) -> ACTIVE.0(f.1-1-1(x0, x1, mark.1(y2)))
ACTIVE.0(f.1-1-1(a., b., X)) -> MARK.0(f.1-1-1(X, X, X))
MARK.0(f.0-1-1(y0, mark.1(x1), y2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.1-1-0(y0, mark.1(x1), y2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-1-1(y0, mark.1(x1), y2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.0-1-0(y0, x1, x2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, x2))
MARK.0(f.0-1-1(y0, x1, x2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, x2))
MARK.0(f.1-1-0(y0, x1, x2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, x2))
MARK.0(f.1-1-1(y0, x1, x2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, x2))
MARK.0(f.0-1-0(y0, active.1(x1), y2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-1-1(y0, active.1(x1), y2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.1-1-0(y0, active.1(x1), y2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.1-1-1(y0, active.1(x1), y2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-0(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-0(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-0(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-0(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.1-1-1(a., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(a.), y1, mark.1(y2)))
MARK.0(f.1-1-1(b., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(b.), y1, mark.1(y2)))
MARK.0(f.1-1-0(c., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(c.), y1, mark.0(y2)))
MARK.0(f.1-1-1(c., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(c.), y1, mark.1(y2)))
MARK.0(f.0-1-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-1(y0, y1, c.)) -> ACTIVE.0(f.0-1-1(mark.0(y0), y1, active.1(c.)))
MARK.0(f.1-1-1(y0, y1, c.)) -> ACTIVE.0(f.1-1-1(mark.1(y0), y1, active.1(c.)))
The TRS R consists of the following rules:
active.0(f.1-1-0(a., b., X)) -> mark.0(f.0-0-0(X, X, X))
active.0(f.1-1-1(a., b., X)) -> mark.0(f.1-1-1(X, X, X))
active.1(c.) -> mark.1(a.)
active.1(c.) -> mark.1(b.)
mark.0(f.0-0-0(X1, X2, X3)) -> active.0(f.0-0-0(mark.0(X1), X2, mark.0(X3)))
mark.0(f.0-0-1(X1, X2, X3)) -> active.0(f.0-0-1(mark.0(X1), X2, mark.1(X3)))
mark.0(f.0-1-0(X1, X2, X3)) -> active.0(f.0-1-0(mark.0(X1), X2, mark.0(X3)))
mark.0(f.0-1-1(X1, X2, X3)) -> active.0(f.0-1-1(mark.0(X1), X2, mark.1(X3)))
mark.0(f.1-0-0(X1, X2, X3)) -> active.0(f.1-0-0(mark.1(X1), X2, mark.0(X3)))
mark.0(f.1-0-1(X1, X2, X3)) -> active.0(f.1-0-1(mark.1(X1), X2, mark.1(X3)))
mark.0(f.1-1-0(X1, X2, X3)) -> active.0(f.1-1-0(mark.1(X1), X2, mark.0(X3)))
mark.0(f.1-1-1(X1, X2, X3)) -> active.0(f.1-1-1(mark.1(X1), X2, mark.1(X3)))
mark.1(a.) -> active.1(a.)
mark.1(b.) -> active.1(b.)
mark.1(c.) -> active.1(c.)
f.0-0-0(mark.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(mark.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(mark.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(mark.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(mark.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(mark.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(mark.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(mark.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, mark.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, mark.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, mark.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, mark.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, mark.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, mark.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, mark.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, mark.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, X2, mark.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, X2, mark.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, X2, mark.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, X2, mark.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, X2, mark.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, X2, mark.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, X2, mark.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, X2, mark.1(X3)) -> f.1-1-1(X1, X2, X3)
f.0-0-0(active.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(active.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(active.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(active.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(active.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(active.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(active.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(active.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, active.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, active.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, active.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, active.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, active.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, active.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, active.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, active.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, X2, active.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, X2, active.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, X2, active.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, X2, active.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, X2, active.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, X2, active.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, X2, active.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, X2, active.1(X3)) -> f.1-1-1(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(30) QDPOrderProof (EQUIVALENT)
We use the reduction pair processor [LPAR04,JAR06].
The following pairs can be oriented strictly and are deleted.
MARK.0(f.0-1-0(x0, x1, y2)) -> ACTIVE.0(f.0-1-0(x0, x1, mark.0(y2)))
MARK.0(f.0-1-1(x0, x1, y2)) -> ACTIVE.0(f.0-1-1(x0, x1, mark.1(y2)))
MARK.0(f.1-1-0(x0, x1, y2)) -> ACTIVE.0(f.1-1-0(x0, x1, mark.0(y2)))
MARK.0(f.0-1-1(y0, mark.1(x1), y2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.1-1-0(y0, mark.1(x1), y2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.0-1-0(y0, x1, x2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, x2))
MARK.0(f.0-1-1(y0, x1, x2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, x2))
MARK.0(f.1-1-0(y0, x1, x2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, x2))
MARK.0(f.0-1-0(y0, active.1(x1), y2)) -> ACTIVE.0(f.0-1-0(mark.0(y0), x1, mark.0(y2)))
MARK.0(f.0-1-1(y0, active.1(x1), y2)) -> ACTIVE.0(f.0-1-1(mark.0(y0), x1, mark.1(y2)))
MARK.0(f.1-1-0(y0, active.1(x1), y2)) -> ACTIVE.0(f.1-1-0(mark.1(y0), x1, mark.0(y2)))
MARK.0(f.0-1-0(f.0-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-0(f.0-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-0(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.0-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-0-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-0(f.1-0-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-0(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-1-0(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2))), y1, mark.1(y2)))
MARK.0(f.0-1-0(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-0(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.0(y2)))
MARK.0(f.0-1-1(f.1-1-1(x0, x1, x2), y1, y2)) -> ACTIVE.0(f.0-1-1(active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2))), y1, mark.1(y2)))
MARK.0(f.1-1-0(c., y1, y2)) -> ACTIVE.0(f.1-1-0(active.1(c.), y1, mark.0(y2)))
MARK.0(f.0-1-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.0-1-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.0-1-0(mark.0(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-0-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-0-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-1-0(mark.0(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.0-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.0-1-1(mark.0(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-0-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-0-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-0-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-0-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-1-0(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-1-0(mark.1(x0), x1, mark.0(x2)))))
MARK.0(f.1-1-0(y0, y1, f.1-1-1(x0, x1, x2))) -> ACTIVE.0(f.1-1-0(mark.1(y0), y1, active.0(f.1-1-1(mark.1(x0), x1, mark.1(x2)))))
MARK.0(f.0-1-1(y0, y1, c.)) -> ACTIVE.0(f.0-1-1(mark.0(y0), y1, active.1(c.)))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:
POL(ACTIVE.0(x_1)) = x_1
POL(MARK.0(x_1)) = 1
POL(a.) = 0
POL(active.0(x_1)) = 0
POL(active.1(x_1)) = 0
POL(b.) = 0
POL(c.) = 0
POL(f.0-0-0(x_1, x_2, x_3)) = x_2
POL(f.0-0-1(x_1, x_2, x_3)) = x_2
POL(f.0-1-0(x_1, x_2, x_3)) = 0
POL(f.0-1-1(x_1, x_2, x_3)) = 0
POL(f.1-0-0(x_1, x_2, x_3)) = x_2
POL(f.1-0-1(x_1, x_2, x_3)) = x_2
POL(f.1-1-0(x_1, x_2, x_3)) = 0
POL(f.1-1-1(x_1, x_2, x_3)) = 1
POL(mark.0(x_1)) = 0
POL(mark.1(x_1)) = 0
The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
f.0-1-0(X1, mark.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-0(mark.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-0(X1, X2, mark.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-0(active.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-0(X1, active.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-0(X1, X2, active.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, mark.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.0-1-1(mark.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.0-1-1(X1, X2, mark.1(X3)) -> f.0-1-1(X1, X2, X3)
f.0-1-1(active.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.0-1-1(X1, active.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.0-1-1(X1, X2, active.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-1-0(X1, mark.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-0(mark.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-0(X1, X2, mark.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-0(active.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-0(X1, active.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-0(X1, X2, active.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, mark.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(mark.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(X1, X2, mark.1(X3)) -> f.1-1-1(X1, X2, X3)
f.1-1-1(active.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(X1, active.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.1-1-1(X1, X2, active.1(X3)) -> f.1-1-1(X1, X2, X3)
----------------------------------------
(31)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK.0(f.1-1-1(x0, x1, y2)) -> ACTIVE.0(f.1-1-1(x0, x1, mark.1(y2)))
ACTIVE.0(f.1-1-1(a., b., X)) -> MARK.0(f.1-1-1(X, X, X))
MARK.0(f.1-1-1(y0, mark.1(x1), y2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.1-1-1(y0, x1, x2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, x2))
MARK.0(f.1-1-1(y0, active.1(x1), y2)) -> ACTIVE.0(f.1-1-1(mark.1(y0), x1, mark.1(y2)))
MARK.0(f.1-1-1(a., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(a.), y1, mark.1(y2)))
MARK.0(f.1-1-1(b., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(b.), y1, mark.1(y2)))
MARK.0(f.1-1-1(c., y1, y2)) -> ACTIVE.0(f.1-1-1(active.1(c.), y1, mark.1(y2)))
MARK.0(f.1-1-1(y0, y1, c.)) -> ACTIVE.0(f.1-1-1(mark.1(y0), y1, active.1(c.)))
The TRS R consists of the following rules:
active.0(f.1-1-0(a., b., X)) -> mark.0(f.0-0-0(X, X, X))
active.0(f.1-1-1(a., b., X)) -> mark.0(f.1-1-1(X, X, X))
active.1(c.) -> mark.1(a.)
active.1(c.) -> mark.1(b.)
mark.0(f.0-0-0(X1, X2, X3)) -> active.0(f.0-0-0(mark.0(X1), X2, mark.0(X3)))
mark.0(f.0-0-1(X1, X2, X3)) -> active.0(f.0-0-1(mark.0(X1), X2, mark.1(X3)))
mark.0(f.0-1-0(X1, X2, X3)) -> active.0(f.0-1-0(mark.0(X1), X2, mark.0(X3)))
mark.0(f.0-1-1(X1, X2, X3)) -> active.0(f.0-1-1(mark.0(X1), X2, mark.1(X3)))
mark.0(f.1-0-0(X1, X2, X3)) -> active.0(f.1-0-0(mark.1(X1), X2, mark.0(X3)))
mark.0(f.1-0-1(X1, X2, X3)) -> active.0(f.1-0-1(mark.1(X1), X2, mark.1(X3)))
mark.0(f.1-1-0(X1, X2, X3)) -> active.0(f.1-1-0(mark.1(X1), X2, mark.0(X3)))
mark.0(f.1-1-1(X1, X2, X3)) -> active.0(f.1-1-1(mark.1(X1), X2, mark.1(X3)))
mark.1(a.) -> active.1(a.)
mark.1(b.) -> active.1(b.)
mark.1(c.) -> active.1(c.)
f.0-0-0(mark.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(mark.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(mark.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(mark.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(mark.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(mark.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(mark.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(mark.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, mark.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, mark.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, mark.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, mark.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, mark.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, mark.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, mark.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, mark.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, X2, mark.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, X2, mark.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, X2, mark.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, X2, mark.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, X2, mark.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, X2, mark.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, X2, mark.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, X2, mark.1(X3)) -> f.1-1-1(X1, X2, X3)
f.0-0-0(active.0(X1), X2, X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(active.0(X1), X2, X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(active.0(X1), X2, X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(active.0(X1), X2, X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(active.1(X1), X2, X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(active.1(X1), X2, X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(active.1(X1), X2, X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(active.1(X1), X2, X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, active.0(X2), X3) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, active.0(X2), X3) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, active.1(X2), X3) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, active.1(X2), X3) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, active.0(X2), X3) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, active.0(X2), X3) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, active.1(X2), X3) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, active.1(X2), X3) -> f.1-1-1(X1, X2, X3)
f.0-0-0(X1, X2, active.0(X3)) -> f.0-0-0(X1, X2, X3)
f.0-0-1(X1, X2, active.1(X3)) -> f.0-0-1(X1, X2, X3)
f.0-1-0(X1, X2, active.0(X3)) -> f.0-1-0(X1, X2, X3)
f.0-1-1(X1, X2, active.1(X3)) -> f.0-1-1(X1, X2, X3)
f.1-0-0(X1, X2, active.0(X3)) -> f.1-0-0(X1, X2, X3)
f.1-0-1(X1, X2, active.1(X3)) -> f.1-0-1(X1, X2, X3)
f.1-1-0(X1, X2, active.0(X3)) -> f.1-1-0(X1, X2, X3)
f.1-1-1(X1, X2, active.1(X3)) -> f.1-1-1(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(32) PisEmptyProof (SOUND)
The TRS P is empty. Hence, there is no (P,Q,R) chain.
----------------------------------------
(33)
TRUE
----------------------------------------
(34)
Obligation:
Q DP problem:
The TRS P consists of the following rules:
MARK(f(x0, x1, y2)) -> ACTIVE(f(x0, x1, mark(y2)))
ACTIVE(f(a, b, X)) -> MARK(f(X, X, X))
MARK(f(y0, mark(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(y0, x1, x2)) -> ACTIVE(f(mark(y0), x1, x2))
MARK(f(y0, active(x1), y2)) -> ACTIVE(f(mark(y0), x1, mark(y2)))
MARK(f(a, y1, y2)) -> ACTIVE(f(active(a), y1, mark(y2)))
MARK(f(b, y1, y2)) -> ACTIVE(f(active(b), y1, mark(y2)))
MARK(f(c, y1, y2)) -> ACTIVE(f(active(c), y1, mark(y2)))
MARK(f(y0, y1, c)) -> ACTIVE(f(mark(y0), y1, active(c)))
The TRS R consists of the following rules:
active(f(a, b, X)) -> mark(f(X, X, X))
active(c) -> mark(a)
active(c) -> mark(b)
mark(f(X1, X2, X3)) -> active(f(mark(X1), X2, mark(X3)))
mark(a) -> active(a)
mark(b) -> active(b)
mark(c) -> active(c)
f(mark(X1), X2, X3) -> f(X1, X2, X3)
f(X1, mark(X2), X3) -> f(X1, X2, X3)
f(X1, X2, mark(X3)) -> f(X1, X2, X3)
f(active(X1), X2, X3) -> f(X1, X2, X3)
f(X1, active(X2), X3) -> f(X1, X2, X3)
f(X1, X2, active(X3)) -> f(X1, X2, X3)
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
----------------------------------------
(35) NonTerminationLoopProof (COMPLETE)
We used the non-termination processor [FROCOS05] to show that the DP problem is infinite.
Found a loop by narrowing to the left:
s = ACTIVE(f(active(c), active(c), mark(X3))) evaluates to t =ACTIVE(f(X3, X3, mark(X3)))
Thus s starts an infinite chain as s semiunifies with t with the following substitutions:
* Matcher: [ ]
* Semiunifier: [X3 / active(c)]
--------------------------------------------------------------------------------
Rewriting sequence
ACTIVE(f(active(c), active(c), mark(active(c)))) -> ACTIVE(f(active(c), mark(b), mark(active(c))))
with rule active(c) -> mark(b) at position [0,1] and matcher [ ]
ACTIVE(f(active(c), mark(b), mark(active(c)))) -> ACTIVE(f(mark(a), mark(b), mark(active(c))))
with rule active(c) -> mark(a) at position [0,0] and matcher [ ]
ACTIVE(f(mark(a), mark(b), mark(active(c)))) -> ACTIVE(f(mark(a), mark(b), active(c)))
with rule f(X1, X2, mark(X3)) -> f(X1, X2, X3) at position [0] and matcher [X1 / mark(a), X2 / mark(b), X3 / active(c)]
ACTIVE(f(mark(a), mark(b), active(c))) -> ACTIVE(f(mark(a), b, active(c)))
with rule f(X1, mark(X2), X3') -> f(X1, X2, X3') at position [0] and matcher [X1 / mark(a), X2 / b, X3' / active(c)]
ACTIVE(f(mark(a), b, active(c))) -> ACTIVE(f(a, b, active(c)))
with rule f(mark(X1), X2, X3) -> f(X1, X2, X3) at position [0] and matcher [X1 / a, X2 / b, X3 / active(c)]
ACTIVE(f(a, b, active(c))) -> MARK(f(active(c), active(c), active(c)))
with rule ACTIVE(f(a, b, X)) -> MARK(f(X, X, X)) at position [] and matcher [X / active(c)]
MARK(f(active(c), active(c), active(c))) -> ACTIVE(f(active(c), active(c), mark(active(c))))
with rule MARK(f(x0, x1, y2)) -> ACTIVE(f(x0, x1, mark(y2)))
Now applying the matcher to the start term leads to a term which is equal to the last term in the rewriting sequence
All these steps are and every following step will be a correct step w.r.t to Q.
----------------------------------------
(36)
NO