YES
terms(N) → cons(recip(sqr(N)), terms(s(N)))
sqr(0) → 0
sqr(s(X)) → s(add(sqr(X), dbl(X)))
dbl(0) → 0
dbl(s(X)) → s(s(dbl(X)))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
first(0, X) → nil
first(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
terms: {1}
cons: {1}
recip: {1}
sqr: {1}
s: empty set
0: empty set
add: {1, 2}
dbl: {1}
first: {1, 2}
nil: empty set
↳ CSR
↳ Lucas-Transformation
terms(N) → cons(recip(sqr(N)), terms(s(N)))
sqr(0) → 0
sqr(s(X)) → s(add(sqr(X), dbl(X)))
dbl(0) → 0
dbl(s(X)) → s(s(dbl(X)))
add(0, X) → X
add(s(X), Y) → s(add(X, Y))
first(0, X) → nil
first(s(X), cons(Y, Z)) → cons(Y, first(X, Z))
terms: {1}
cons: {1}
recip: {1}
sqr: {1}
s: empty set
0: empty set
add: {1, 2}
dbl: {1}
first: {1, 2}
nil: empty set
We applied the Lucas [26] to transform the context-sensitive TRS to an usual TRS.
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
terms(N) → cons(recip(sqr(N)))
sqr(0) → 0
sqr(s) → s
dbl(0) → 0
dbl(s) → s
add(0, X) → X
add(s, Y) → s
first(0, X) → nil
first(s, cons(Y)) → cons(Y)
terms(N) → cons(recip(sqr(N)))
sqr(0) → 0
sqr(s) → s
dbl(0) → 0
dbl(s) → s
add(0, X) → X
add(s, Y) → s
first(0, X) → nil
first(s, cons(Y)) → cons(Y)
Used ordering:
terms(N) → cons(recip(sqr(N)))
dbl(0) → 0
dbl(s) → s
add(0, X) → X
add(s, Y) → s
POL(0) = 0
POL(add(x1, x2)) = 1 + x1 + x2
POL(cons(x1)) = x1
POL(dbl(x1)) = 1 + 2·x1
POL(first(x1, x2)) = x1 + x2
POL(nil) = 0
POL(recip(x1)) = x1
POL(s) = 0
POL(sqr(x1)) = x1
POL(terms(x1)) = 1 + 2·x1
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
sqr(0) → 0
sqr(s) → s
first(0, X) → nil
first(s, cons(Y)) → cons(Y)
sqr(0) → 0
sqr(s) → s
first(0, X) → nil
first(s, cons(Y)) → cons(Y)
Used ordering:
sqr(0) → 0
sqr(s) → s
first(s, cons(Y)) → cons(Y)
POL(0) = 0
POL(cons(x1)) = 1 + 2·x1
POL(first(x1, x2)) = 2 + 2·x1 + 2·x2
POL(nil) = 2
POL(s) = 2
POL(sqr(x1)) = 1 + 2·x1
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
first(0, X) → nil
first(0, X) → nil
Used ordering:
first(0, X) → nil
POL(0) = 2
POL(first(x1, x2)) = 2·x1 + x2
POL(nil) = 2
↳ CSR
↳ Lucas-Transformation
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RRRPoloQTRSProof
↳ QTRS
↳ RisEmptyProof