YES
from(X) → cons(X, from(s(X)))
length(nil) → 0
length(cons(X, Y)) → s(length1(Y))
length1(X) → length(X)
from: {1}
cons: {1}
s: {1}
length: empty set
nil: empty set
0: empty set
length1: empty set
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
from(X) → cons(X, from(s(X)))
length(nil) → 0
length(cons(X, Y)) → s(length1(Y))
length1(X) → length(X)
from: {1}
cons: {1}
s: {1}
length: empty set
nil: empty set
0: empty set
length1: empty set
We applied the Lucas [26] to transform the context-sensitive TRS to an usual TRS.
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
from(X) → cons(X)
length → 0
length → s(length1)
length1 → length
from(X) → cons(X)
length → 0
length → s(length1)
length1 → length
Used ordering:
from(X) → cons(X)
POL(0) = 0
POL(cons(x1)) = 2·x1
POL(from(x1)) = 1 + 2·x1
POL(length) = 0
POL(length1) = 0
POL(s(x1)) = 2·x1
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
length → 0
length → s(length1)
length1 → length
length → 0
length → s(length1)
length1 → length
Used ordering:
length → 0
POL(0) = 0
POL(length) = 1
POL(length1) = 1
POL(s(x1)) = x1
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ Overlay + Local Confluence
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
length → s(length1)
length1 → length
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
length → s(length1)
length1 → length
length
length1
LENGTH → LENGTH1
LENGTH1 → LENGTH
length → s(length1)
length1 → length
length
length1
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ UsableRulesProof
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
LENGTH → LENGTH1
LENGTH1 → LENGTH
length → s(length1)
length1 → length
length
length1
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
LENGTH → LENGTH1
LENGTH1 → LENGTH
length
length1
length
length1
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonTerminationProof
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
LENGTH → LENGTH1
LENGTH1 → LENGTH
LENGTH → LENGTH1
LENGTH1 → LENGTH
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ Incomplete Giesl Middeldorp-Transformation
from(X) → cons(X, fromInact(s(X)))
length(nilInact) → 0
length(consInact(X, Y)) → s(length1(a(Y)))
length1(X) → length(a(X))
a(x) → x
from(x1) → fromInact(x1)
a(fromInact(x1)) → from(x1)
nil → nilInact
a(nilInact) → nil
cons(x1, x2) → consInact(x1, x2)
a(consInact(x1, x2)) → cons(x1, x2)
LENGTH(consInact(X, Y)) → A(Y)
A(fromInact(x1)) → FROM(x1)
LENGTH1(X) → LENGTH(a(X))
A(consInact(x1, x2)) → CONS(x1, x2)
LENGTH(consInact(X, Y)) → LENGTH1(a(Y))
LENGTH1(X) → A(X)
A(nilInact) → NIL
FROM(X) → CONS(X, fromInact(s(X)))
from(X) → cons(X, fromInact(s(X)))
length(nilInact) → 0
length(consInact(X, Y)) → s(length1(a(Y)))
length1(X) → length(a(X))
a(x) → x
from(x1) → fromInact(x1)
a(fromInact(x1)) → from(x1)
nil → nilInact
a(nilInact) → nil
cons(x1, x2) → consInact(x1, x2)
a(consInact(x1, x2)) → cons(x1, x2)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ Incomplete Giesl Middeldorp-Transformation
LENGTH(consInact(X, Y)) → A(Y)
A(fromInact(x1)) → FROM(x1)
LENGTH1(X) → LENGTH(a(X))
A(consInact(x1, x2)) → CONS(x1, x2)
LENGTH(consInact(X, Y)) → LENGTH1(a(Y))
LENGTH1(X) → A(X)
A(nilInact) → NIL
FROM(X) → CONS(X, fromInact(s(X)))
from(X) → cons(X, fromInact(s(X)))
length(nilInact) → 0
length(consInact(X, Y)) → s(length1(a(Y)))
length1(X) → length(a(X))
a(x) → x
from(x1) → fromInact(x1)
a(fromInact(x1)) → from(x1)
nil → nilInact
a(nilInact) → nil
cons(x1, x2) → consInact(x1, x2)
a(consInact(x1, x2)) → cons(x1, x2)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ Incomplete Giesl Middeldorp-Transformation
LENGTH1(X) → LENGTH(a(X))
LENGTH(consInact(X, Y)) → LENGTH1(a(Y))
from(X) → cons(X, fromInact(s(X)))
length(nilInact) → 0
length(consInact(X, Y)) → s(length1(a(Y)))
length1(X) → length(a(X))
a(x) → x
from(x1) → fromInact(x1)
a(fromInact(x1)) → from(x1)
nil → nilInact
a(nilInact) → nil
cons(x1, x2) → consInact(x1, x2)
a(consInact(x1, x2)) → cons(x1, x2)
LENGTH1(consInact(x0, x1)) → LENGTH(cons(x0, x1))
LENGTH1(nilInact) → LENGTH(nil)
LENGTH1(x0) → LENGTH(x0)
LENGTH1(fromInact(x0)) → LENGTH(from(x0))
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ Incomplete Giesl Middeldorp-Transformation
LENGTH1(nilInact) → LENGTH(nil)
LENGTH(consInact(X, Y)) → LENGTH1(a(Y))
LENGTH1(consInact(x0, x1)) → LENGTH(cons(x0, x1))
LENGTH1(x0) → LENGTH(x0)
LENGTH1(fromInact(x0)) → LENGTH(from(x0))
from(X) → cons(X, fromInact(s(X)))
length(nilInact) → 0
length(consInact(X, Y)) → s(length1(a(Y)))
length1(X) → length(a(X))
a(x) → x
from(x1) → fromInact(x1)
a(fromInact(x1)) → from(x1)
nil → nilInact
a(nilInact) → nil
cons(x1, x2) → consInact(x1, x2)
a(consInact(x1, x2)) → cons(x1, x2)
LENGTH1(nilInact) → LENGTH(nilInact)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ Incomplete Giesl Middeldorp-Transformation
LENGTH1(nilInact) → LENGTH(nilInact)
LENGTH(consInact(X, Y)) → LENGTH1(a(Y))
LENGTH1(consInact(x0, x1)) → LENGTH(cons(x0, x1))
LENGTH1(x0) → LENGTH(x0)
LENGTH1(fromInact(x0)) → LENGTH(from(x0))
from(X) → cons(X, fromInact(s(X)))
length(nilInact) → 0
length(consInact(X, Y)) → s(length1(a(Y)))
length1(X) → length(a(X))
a(x) → x
from(x1) → fromInact(x1)
a(fromInact(x1)) → from(x1)
nil → nilInact
a(nilInact) → nil
cons(x1, x2) → consInact(x1, x2)
a(consInact(x1, x2)) → cons(x1, x2)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ NonTerminationProof
↳ Incomplete Giesl Middeldorp-Transformation
LENGTH(consInact(X, Y)) → LENGTH1(a(Y))
LENGTH1(consInact(x0, x1)) → LENGTH(cons(x0, x1))
LENGTH1(x0) → LENGTH(x0)
LENGTH1(fromInact(x0)) → LENGTH(from(x0))
from(X) → cons(X, fromInact(s(X)))
length(nilInact) → 0
length(consInact(X, Y)) → s(length1(a(Y)))
length1(X) → length(a(X))
a(x) → x
from(x1) → fromInact(x1)
a(fromInact(x1)) → from(x1)
nil → nilInact
a(nilInact) → nil
cons(x1, x2) → consInact(x1, x2)
a(consInact(x1, x2)) → cons(x1, x2)
LENGTH(consInact(X, Y)) → LENGTH1(a(Y))
LENGTH1(consInact(x0, x1)) → LENGTH(cons(x0, x1))
LENGTH1(x0) → LENGTH(x0)
LENGTH1(fromInact(x0)) → LENGTH(from(x0))
from(X) → cons(X, fromInact(s(X)))
length(nilInact) → 0
length(consInact(X, Y)) → s(length1(a(Y)))
length1(X) → length(a(X))
a(x) → x
from(x1) → fromInact(x1)
a(fromInact(x1)) → from(x1)
nil → nilInact
a(nilInact) → nil
cons(x1, x2) → consInact(x1, x2)
a(consInact(x1, x2)) → cons(x1, x2)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
↳ QTRS
↳ DependencyPairsProof
mark(from(x1)) → fromActive(mark(x1))
fromActive(x1) → from(x1)
mark(length(x1)) → lengthActive(x1)
lengthActive(x1) → length(x1)
mark(length1(x1)) → length1Active(x1)
length1Active(x1) → length1(x1)
mark(cons(x1, x2)) → cons(mark(x1), x2)
mark(s(x1)) → s(mark(x1))
mark(nil) → nil
mark(0) → 0
fromActive(X) → cons(mark(X), from(s(X)))
lengthActive(nil) → 0
lengthActive(cons(X, Y)) → s(length1Active(Y))
length1Active(X) → lengthActive(X)
LENGTHACTIVE(cons(X, Y)) → LENGTH1ACTIVE(Y)
MARK(s(x1)) → MARK(x1)
MARK(length1(x1)) → LENGTH1ACTIVE(x1)
MARK(from(x1)) → FROMACTIVE(mark(x1))
LENGTH1ACTIVE(X) → LENGTHACTIVE(X)
MARK(length(x1)) → LENGTHACTIVE(x1)
MARK(from(x1)) → MARK(x1)
FROMACTIVE(X) → MARK(X)
MARK(cons(x1, x2)) → MARK(x1)
mark(from(x1)) → fromActive(mark(x1))
fromActive(x1) → from(x1)
mark(length(x1)) → lengthActive(x1)
lengthActive(x1) → length(x1)
mark(length1(x1)) → length1Active(x1)
length1Active(x1) → length1(x1)
mark(cons(x1, x2)) → cons(mark(x1), x2)
mark(s(x1)) → s(mark(x1))
mark(nil) → nil
mark(0) → 0
fromActive(X) → cons(mark(X), from(s(X)))
lengthActive(nil) → 0
lengthActive(cons(X, Y)) → s(length1Active(Y))
length1Active(X) → lengthActive(X)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
LENGTHACTIVE(cons(X, Y)) → LENGTH1ACTIVE(Y)
MARK(s(x1)) → MARK(x1)
MARK(length1(x1)) → LENGTH1ACTIVE(x1)
MARK(from(x1)) → FROMACTIVE(mark(x1))
LENGTH1ACTIVE(X) → LENGTHACTIVE(X)
MARK(length(x1)) → LENGTHACTIVE(x1)
MARK(from(x1)) → MARK(x1)
FROMACTIVE(X) → MARK(X)
MARK(cons(x1, x2)) → MARK(x1)
mark(from(x1)) → fromActive(mark(x1))
fromActive(x1) → from(x1)
mark(length(x1)) → lengthActive(x1)
lengthActive(x1) → length(x1)
mark(length1(x1)) → length1Active(x1)
length1Active(x1) → length1(x1)
mark(cons(x1, x2)) → cons(mark(x1), x2)
mark(s(x1)) → s(mark(x1))
mark(nil) → nil
mark(0) → 0
fromActive(X) → cons(mark(X), from(s(X)))
lengthActive(nil) → 0
lengthActive(cons(X, Y)) → s(length1Active(Y))
length1Active(X) → lengthActive(X)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
LENGTHACTIVE(cons(X, Y)) → LENGTH1ACTIVE(Y)
LENGTH1ACTIVE(X) → LENGTHACTIVE(X)
mark(from(x1)) → fromActive(mark(x1))
fromActive(x1) → from(x1)
mark(length(x1)) → lengthActive(x1)
lengthActive(x1) → length(x1)
mark(length1(x1)) → length1Active(x1)
length1Active(x1) → length1(x1)
mark(cons(x1, x2)) → cons(mark(x1), x2)
mark(s(x1)) → s(mark(x1))
mark(nil) → nil
mark(0) → 0
fromActive(X) → cons(mark(X), from(s(X)))
lengthActive(nil) → 0
lengthActive(cons(X, Y)) → s(length1Active(Y))
length1Active(X) → lengthActive(X)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
LENGTHACTIVE(cons(X, Y)) → LENGTH1ACTIVE(Y)
LENGTH1ACTIVE(X) → LENGTHACTIVE(X)
From the DPs we obtained the following set of size-change graphs:
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
MARK(s(x1)) → MARK(x1)
MARK(from(x1)) → FROMACTIVE(mark(x1))
MARK(from(x1)) → MARK(x1)
FROMACTIVE(X) → MARK(X)
MARK(cons(x1, x2)) → MARK(x1)
mark(from(x1)) → fromActive(mark(x1))
fromActive(x1) → from(x1)
mark(length(x1)) → lengthActive(x1)
lengthActive(x1) → length(x1)
mark(length1(x1)) → length1Active(x1)
length1Active(x1) → length1(x1)
mark(cons(x1, x2)) → cons(mark(x1), x2)
mark(s(x1)) → s(mark(x1))
mark(nil) → nil
mark(0) → 0
fromActive(X) → cons(mark(X), from(s(X)))
lengthActive(nil) → 0
lengthActive(cons(X, Y)) → s(length1Active(Y))
length1Active(X) → lengthActive(X)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
MARK(from(x1)) → FROMACTIVE(mark(x1))
MARK(from(x1)) → MARK(x1)
Used ordering: Polynomial interpretation [25]:
MARK(s(x1)) → MARK(x1)
FROMACTIVE(X) → MARK(X)
MARK(cons(x1, x2)) → MARK(x1)
POL(0) = 0
POL(FROMACTIVE(x1)) = x1
POL(MARK(x1)) = x1
POL(cons(x1, x2)) = x1
POL(from(x1)) = 1 + x1
POL(fromActive(x1)) = 1 + x1
POL(length(x1)) = 0
POL(length1(x1)) = 0
POL(length1Active(x1)) = 0
POL(lengthActive(x1)) = 0
POL(mark(x1)) = x1
POL(nil) = 0
POL(s(x1)) = x1
lengthActive(cons(X, Y)) → s(length1Active(Y))
mark(from(x1)) → fromActive(mark(x1))
mark(s(x1)) → s(mark(x1))
lengthActive(x1) → length(x1)
lengthActive(nil) → 0
mark(length1(x1)) → length1Active(x1)
mark(nil) → nil
fromActive(X) → cons(mark(X), from(s(X)))
length1Active(x1) → length1(x1)
mark(0) → 0
mark(cons(x1, x2)) → cons(mark(x1), x2)
length1Active(X) → lengthActive(X)
fromActive(x1) → from(x1)
mark(length(x1)) → lengthActive(x1)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
MARK(s(x1)) → MARK(x1)
FROMACTIVE(X) → MARK(X)
MARK(cons(x1, x2)) → MARK(x1)
mark(from(x1)) → fromActive(mark(x1))
fromActive(x1) → from(x1)
mark(length(x1)) → lengthActive(x1)
lengthActive(x1) → length(x1)
mark(length1(x1)) → length1Active(x1)
length1Active(x1) → length1(x1)
mark(cons(x1, x2)) → cons(mark(x1), x2)
mark(s(x1)) → s(mark(x1))
mark(nil) → nil
mark(0) → 0
fromActive(X) → cons(mark(X), from(s(X)))
lengthActive(nil) → 0
lengthActive(cons(X, Y)) → s(length1Active(Y))
length1Active(X) → lengthActive(X)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
MARK(s(x1)) → MARK(x1)
MARK(cons(x1, x2)) → MARK(x1)
mark(from(x1)) → fromActive(mark(x1))
fromActive(x1) → from(x1)
mark(length(x1)) → lengthActive(x1)
lengthActive(x1) → length(x1)
mark(length1(x1)) → length1Active(x1)
length1Active(x1) → length1(x1)
mark(cons(x1, x2)) → cons(mark(x1), x2)
mark(s(x1)) → s(mark(x1))
mark(nil) → nil
mark(0) → 0
fromActive(X) → cons(mark(X), from(s(X)))
lengthActive(nil) → 0
lengthActive(cons(X, Y)) → s(length1Active(Y))
length1Active(X) → lengthActive(X)
↳ CSR
↳ Lucas-Transformation
↳ Zantema-Transformation
↳ Incomplete Giesl Middeldorp-Transformation
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDPSizeChangeProof
MARK(s(x1)) → MARK(x1)
MARK(cons(x1, x2)) → MARK(x1)
From the DPs we obtained the following set of size-change graphs: