0 QTRS
↳1 QTRSToCSRProof (⇔, 0 ms)
↳2 CSR
↳3 CSRRRRProof (⇔, 32 ms)
↳4 CSR
↳5 CSDependencyPairsProof (⇔, 0 ms)
↳6 QCSDP
↳7 QCSDPInstantiationProcessor (⇔, 0 ms)
↳8 QCSDP
↳9 QCSUsableRulesProof (⇔, 0 ms)
↳10 QCSDP
↳11 QCSDPInstantiationProcessor (⇔, 0 ms)
↳12 QCSDP
↳13 QCSDependencyGraphProof (⇔, 0 ms)
↳14 TRUE
active(h(X)) → mark(g(X, X))
active(g(a, X)) → mark(f(b, X))
active(f(X, X)) → mark(h(a))
active(a) → mark(b)
active(h(X)) → h(active(X))
active(g(X1, X2)) → g(active(X1), X2)
active(f(X1, X2)) → f(active(X1), X2)
h(mark(X)) → mark(h(X))
g(mark(X1), X2) → mark(g(X1, X2))
f(mark(X1), X2) → mark(f(X1, X2))
proper(h(X)) → h(proper(X))
proper(g(X1, X2)) → g(proper(X1), proper(X2))
proper(a) → ok(a)
proper(f(X1, X2)) → f(proper(X1), proper(X2))
proper(b) → ok(b)
h(ok(X)) → ok(h(X))
g(ok(X1), ok(X2)) → ok(g(X1, X2))
f(ok(X1), ok(X2)) → ok(f(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
active(h(X)) → mark(g(X, X))
active(g(a, X)) → mark(f(b, X))
active(f(X, X)) → mark(h(a))
active(a) → mark(b)
active(h(X)) → h(active(X))
active(g(X1, X2)) → g(active(X1), X2)
active(f(X1, X2)) → f(active(X1), X2)
h(mark(X)) → mark(h(X))
g(mark(X1), X2) → mark(g(X1, X2))
f(mark(X1), X2) → mark(f(X1, X2))
proper(h(X)) → h(proper(X))
proper(g(X1, X2)) → g(proper(X1), proper(X2))
proper(a) → ok(a)
proper(f(X1, X2)) → f(proper(X1), proper(X2))
proper(b) → ok(b)
h(ok(X)) → ok(h(X))
g(ok(X1), ok(X2)) → ok(g(X1, X2))
f(ok(X1), ok(X2)) → ok(f(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))
h: {1}
g: {1}
a: empty set
f: {1}
b: empty set
The QTRS contained all rules created by the complete Giesl-Middeldorp transformation. Therefore, the inverse transformation is complete (and sound).
h(X) → g(X, X)
g(a, X) → f(b, X)
f(X, X) → h(a)
a → b
h: {1}
g: {1}
a: empty set
f: {1}
b: empty set
h(X) → g(X, X)
g(a, X) → f(b, X)
f(X, X) → h(a)
a → b
h: {1}
g: {1}
a: empty set
f: {1}
b: empty set
Used ordering:
Polynomial interpretation [POLO]:
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:
POL(a) = 1
POL(b) = 0
POL(f(x1, x2)) = 2 + x1
POL(g(x1, x2)) = 2·x1
POL(h(x1)) = 2·x1
a → b
h(X) → g(X, X)
g(a, X) → f(b, X)
f(X, X) → h(a)
h: {1}
g: {1}
a: empty set
f: {1}
b: empty set
H(X) → G(X, X)
G(a, X) → F(b, X)
F(X, X) → H(a)
h(X) → g(X, X)
g(a, X) → f(b, X)
f(X, X) → h(a)
H(a) → G(a, a)
G(a, X) → F(b, X)
F(X, X) → H(a)
H(a) → G(a, a)
h(X) → g(X, X)
g(a, X) → f(b, X)
f(X, X) → h(a)
h(x0) → g(x0, x0)
g(a, x0) → f(b, x0)
f(x0, x0) → h(a)
G(a, X) → F(b, X)
F(X, X) → H(a)
H(a) → G(a, a)
G(a, a) → F(b, a)
F(X, X) → H(a)
H(a) → G(a, a)
G(a, a) → F(b, a)