TIMEOUT

The TRS could not be proven terminating. The proof attempt took 60081 ms.

The following DP Processors were used


Problem 1 was processed with processor DependencyGraph (16359ms).
 | – Problem 2 remains open; application of the following processors failed [SubtermCriterion (1ms), DependencyGraph (10ms), PolynomialLinearRange4iUR (1689ms), DependencyGraph (7ms), PolynomialLinearRange4iUR (2000ms), DependencyGraph (6ms), PolynomialLinearRange8NegiUR (6001ms), DependencyGraph (8ms), ReductionPairSAT (33281ms)].
 | – Problem 3 was processed with processor SubtermCriterion (2ms).
 | – Problem 4 was processed with processor SubtermCriterion (2ms).
 | – Problem 5 was processed with processor SubtermCriterion (3ms).
 | – Problem 6 was processed with processor SubtermCriterion (2ms).
 | – Problem 7 was processed with processor SubtermCriterion (1ms).
 |    | – Problem 18 remains open; application of the following processors failed [DependencyGraph (3ms), PolynomialLinearRange4iUR (11ms), DependencyGraph (5ms), PolynomialLinearRange4iUR (17ms), DependencyGraph (3ms), PolynomialLinearRange8NegiUR (30ms), DependencyGraph (2ms), ReductionPairSAT (timeout)].
 | – Problem 8 was processed with processor SubtermCriterion (4ms).
 | – Problem 9 was processed with processor SubtermCriterion (2ms).
 |    | – Problem 19 was processed with processor PolynomialLinearRange4iUR (115ms).
 | – Problem 10 was processed with processor SubtermCriterion (3ms).
 |    | – Problem 20 remains open; application of the following processors failed [DependencyGraph (3ms), PolynomialLinearRange4iUR (0ms), DependencyGraph (3ms), PolynomialLinearRange4iUR (11ms), DependencyGraph (2ms), PolynomialLinearRange8NegiUR (0ms), DependencyGraph (4ms)].
 | – Problem 11 was processed with processor SubtermCriterion (5ms).
 | – Problem 12 was processed with processor SubtermCriterion (1ms).
 | – Problem 13 was processed with processor SubtermCriterion (2ms).
 |    | – Problem 21 remains open; application of the following processors failed [DependencyGraph (3ms), PolynomialLinearRange4iUR (9ms), DependencyGraph (3ms), PolynomialLinearRange4iUR (1ms), DependencyGraph (3ms), PolynomialLinearRange8NegiUR (0ms), DependencyGraph (3ms)].
 | – Problem 14 was processed with processor SubtermCriterion (2ms).
 | – Problem 15 was processed with processor SubtermCriterion (4ms).
 | – Problem 16 was processed with processor SubtermCriterion (1ms).
 | – Problem 17 was processed with processor SubtermCriterion (2ms).
 |    | – Problem 22 remains open; application of the following processors failed [DependencyGraph (3ms), PolynomialLinearRange4iUR (0ms), DependencyGraph (3ms), PolynomialLinearRange4iUR (43ms), DependencyGraph (3ms), PolynomialLinearRange8NegiUR (2ms), DependencyGraph (3ms)].

The following open problems remain:



Open Dependency Pair Problem 2

Dependency Pairs

top#(mark(X))top#(proper(X))top#(ok(X))top#(active(X))

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, proper, afterNth, head, sel, top, cons, snd, nil




Open Dependency Pair Problem 18

Dependency Pairs

sel#(X1, mark(X2))sel#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top




Open Dependency Pair Problem 21

Dependency Pairs

take#(X1, mark(X2))take#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top




Open Dependency Pair Problem 20

Dependency Pairs

pair#(X1, mark(X2))pair#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top




Open Dependency Pair Problem 22

Dependency Pairs

splitAt#(X1, mark(X2))splitAt#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top


Problem 1: DependencyGraph



Dependency Pair Problem

Dependency Pairs

proper#(cons(X1, X2))proper#(X1)proper#(tail(X))proper#(X)
active#(take(N, XS))splitAt#(N, XS)proper#(snd(X))snd#(proper(X))
splitAt#(mark(X1), X2)splitAt#(X1, X2)active#(afterNth(N, XS))snd#(splitAt(N, XS))
active#(take(X1, X2))take#(active(X1), X2)tail#(ok(X))tail#(X)
active#(splitAt(X1, X2))splitAt#(active(X1), X2)active#(splitAt(X1, X2))splitAt#(X1, active(X2))
active#(splitAt(0, XS))pair#(nil, XS)top#(mark(X))proper#(X)
active#(take(X1, X2))active#(X2)pair#(X1, mark(X2))pair#(X1, X2)
splitAt#(X1, mark(X2))splitAt#(X1, X2)sel#(X1, mark(X2))sel#(X1, X2)
active#(afterNth(X1, X2))afterNth#(active(X1), X2)active#(sel(N, XS))head#(afterNth(N, XS))
head#(ok(X))head#(X)sel#(ok(X1), ok(X2))sel#(X1, X2)
active#(u(pair(YS, ZS), N, X, XS))cons#(X, YS)proper#(splitAt(X1, X2))proper#(X2)
pair#(mark(X1), X2)pair#(X1, X2)proper#(head(X))proper#(X)
active#(afterNth(N, XS))splitAt#(N, XS)natsFrom#(mark(X))natsFrom#(X)
cons#(mark(X1), X2)cons#(X1, X2)active#(afterNth(X1, X2))afterNth#(X1, active(X2))
u#(ok(X1), ok(X2), ok(X3), ok(X4))u#(X1, X2, X3, X4)top#(ok(X))active#(X)
active#(u(X1, X2, X3, X4))active#(X1)active#(snd(X))snd#(active(X))
active#(sel(X1, X2))active#(X1)active#(pair(X1, X2))active#(X1)
natsFrom#(ok(X))natsFrom#(X)proper#(sel(X1, X2))proper#(X2)
take#(ok(X1), ok(X2))take#(X1, X2)active#(sel(X1, X2))sel#(active(X1), X2)
active#(sel(X1, X2))sel#(X1, active(X2))snd#(mark(X))snd#(X)
head#(mark(X))head#(X)pair#(ok(X1), ok(X2))pair#(X1, X2)
active#(head(X))head#(active(X))active#(afterNth(X1, X2))active#(X2)
active#(s(X))s#(active(X))proper#(u(X1, X2, X3, X4))proper#(X3)
s#(ok(X))s#(X)proper#(pair(X1, X2))pair#(proper(X1), proper(X2))
u#(mark(X1), X2, X3, X4)u#(X1, X2, X3, X4)proper#(sel(X1, X2))proper#(X1)
proper#(tail(X))tail#(proper(X))active#(take(X1, X2))take#(X1, active(X2))
proper#(s(X))s#(proper(X))active#(splitAt(X1, X2))active#(X1)
active#(natsFrom(N))natsFrom#(s(N))top#(ok(X))top#(active(X))
active#(splitAt(s(N), cons(X, XS)))u#(splitAt(N, XS), N, X, XS)proper#(natsFrom(X))proper#(X)
afterNth#(X1, mark(X2))afterNth#(X1, X2)cons#(ok(X1), ok(X2))cons#(X1, X2)
active#(cons(X1, X2))cons#(active(X1), X2)active#(tail(X))tail#(active(X))
active#(sel(N, XS))afterNth#(N, XS)active#(sel(X1, X2))active#(X2)
active#(pair(X1, X2))active#(X2)snd#(ok(X))snd#(X)
active#(u(X1, X2, X3, X4))u#(active(X1), X2, X3, X4)active#(head(X))active#(X)
afterNth#(mark(X1), X2)afterNth#(X1, X2)proper#(afterNth(X1, X2))proper#(X1)
proper#(u(X1, X2, X3, X4))proper#(X4)top#(mark(X))top#(proper(X))
proper#(fst(X))fst#(proper(X))proper#(cons(X1, X2))proper#(X2)
proper#(pair(X1, X2))proper#(X2)active#(pair(X1, X2))pair#(active(X1), X2)
tail#(mark(X))tail#(X)take#(X1, mark(X2))take#(X1, X2)
proper#(afterNth(X1, X2))proper#(X2)proper#(pair(X1, X2))proper#(X1)
proper#(u(X1, X2, X3, X4))proper#(X1)proper#(s(X))proper#(X)
proper#(snd(X))proper#(X)proper#(head(X))head#(proper(X))
proper#(splitAt(X1, X2))splitAt#(proper(X1), proper(X2))proper#(natsFrom(X))natsFrom#(proper(X))
proper#(take(X1, X2))take#(proper(X1), proper(X2))active#(snd(X))active#(X)
active#(splitAt(s(N), cons(X, XS)))splitAt#(N, XS)active#(cons(X1, X2))active#(X1)
active#(u(pair(YS, ZS), N, X, XS))pair#(cons(X, YS), ZS)sel#(mark(X1), X2)sel#(X1, X2)
take#(mark(X1), X2)take#(X1, X2)active#(natsFrom(N))s#(N)
active#(pair(X1, X2))pair#(X1, active(X2))proper#(u(X1, X2, X3, X4))u#(proper(X1), proper(X2), proper(X3), proper(X4))
proper#(u(X1, X2, X3, X4))proper#(X2)active#(natsFrom(X))active#(X)
proper#(fst(X))proper#(X)proper#(sel(X1, X2))sel#(proper(X1), proper(X2))
afterNth#(ok(X1), ok(X2))afterNth#(X1, X2)active#(afterNth(X1, X2))active#(X1)
splitAt#(ok(X1), ok(X2))splitAt#(X1, X2)active#(splitAt(X1, X2))active#(X2)
proper#(take(X1, X2))proper#(X1)fst#(mark(X))fst#(X)
active#(take(N, XS))fst#(splitAt(N, XS))active#(natsFrom(X))natsFrom#(active(X))
active#(fst(X))active#(X)active#(fst(X))fst#(active(X))
active#(take(X1, X2))active#(X1)proper#(take(X1, X2))proper#(X2)
fst#(ok(X))fst#(X)s#(mark(X))s#(X)
proper#(cons(X1, X2))cons#(proper(X1), proper(X2))active#(s(X))active#(X)
active#(tail(X))active#(X)active#(natsFrom(N))cons#(N, natsFrom(s(N)))
proper#(afterNth(X1, X2))afterNth#(proper(X1), proper(X2))proper#(splitAt(X1, X2))proper#(X1)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


The following SCCs where found

sel#(mark(X1), X2) → sel#(X1, X2)sel#(ok(X1), ok(X2)) → sel#(X1, X2)
sel#(X1, mark(X2)) → sel#(X1, X2)

head#(ok(X)) → head#(X)head#(mark(X)) → head#(X)

u#(mark(X1), X2, X3, X4) → u#(X1, X2, X3, X4)u#(ok(X1), ok(X2), ok(X3), ok(X4)) → u#(X1, X2, X3, X4)

pair#(mark(X1), X2) → pair#(X1, X2)pair#(ok(X1), ok(X2)) → pair#(X1, X2)
pair#(X1, mark(X2)) → pair#(X1, X2)

take#(mark(X1), X2) → take#(X1, X2)take#(X1, mark(X2)) → take#(X1, X2)
take#(ok(X1), ok(X2)) → take#(X1, X2)

active#(take(X1, X2)) → active#(X2)active#(fst(X)) → active#(X)
active#(take(X1, X2)) → active#(X1)active#(afterNth(X1, X2)) → active#(X2)
active#(natsFrom(X)) → active#(X)active#(u(X1, X2, X3, X4)) → active#(X1)
active#(sel(X1, X2)) → active#(X2)active#(afterNth(X1, X2)) → active#(X1)
active#(splitAt(X1, X2)) → active#(X2)active#(sel(X1, X2)) → active#(X1)
active#(s(X)) → active#(X)active#(pair(X1, X2)) → active#(X2)
active#(pair(X1, X2)) → active#(X1)active#(tail(X)) → active#(X)
active#(head(X)) → active#(X)active#(splitAt(X1, X2)) → active#(X1)
active#(snd(X)) → active#(X)active#(cons(X1, X2)) → active#(X1)

s#(mark(X)) → s#(X)s#(ok(X)) → s#(X)

cons#(mark(X1), X2) → cons#(X1, X2)cons#(ok(X1), ok(X2)) → cons#(X1, X2)

natsFrom#(mark(X)) → natsFrom#(X)natsFrom#(ok(X)) → natsFrom#(X)

tail#(ok(X)) → tail#(X)tail#(mark(X)) → tail#(X)

proper#(u(X1, X2, X3, X4)) → proper#(X4)proper#(cons(X1, X2)) → proper#(X1)
proper#(head(X)) → proper#(X)proper#(cons(X1, X2)) → proper#(X2)
proper#(tail(X)) → proper#(X)proper#(natsFrom(X)) → proper#(X)
proper#(pair(X1, X2)) → proper#(X2)proper#(take(X1, X2)) → proper#(X2)
proper#(u(X1, X2, X3, X4)) → proper#(X2)proper#(fst(X)) → proper#(X)
proper#(u(X1, X2, X3, X4)) → proper#(X3)proper#(afterNth(X1, X2)) → proper#(X2)
proper#(pair(X1, X2)) → proper#(X1)proper#(u(X1, X2, X3, X4)) → proper#(X1)
proper#(sel(X1, X2)) → proper#(X1)proper#(snd(X)) → proper#(X)
proper#(s(X)) → proper#(X)proper#(take(X1, X2)) → proper#(X1)
proper#(splitAt(X1, X2)) → proper#(X2)proper#(sel(X1, X2)) → proper#(X2)
proper#(splitAt(X1, X2)) → proper#(X1)proper#(afterNth(X1, X2)) → proper#(X1)

splitAt#(ok(X1), ok(X2)) → splitAt#(X1, X2)splitAt#(X1, mark(X2)) → splitAt#(X1, X2)
splitAt#(mark(X1), X2) → splitAt#(X1, X2)

fst#(mark(X)) → fst#(X)fst#(ok(X)) → fst#(X)

snd#(mark(X)) → snd#(X)snd#(ok(X)) → snd#(X)

afterNth#(X1, mark(X2)) → afterNth#(X1, X2)afterNth#(mark(X1), X2) → afterNth#(X1, X2)
afterNth#(ok(X1), ok(X2)) → afterNth#(X1, X2)

top#(mark(X)) → top#(proper(X))top#(ok(X)) → top#(active(X))

Problem 3: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

fst#(mark(X))fst#(X)fst#(ok(X))fst#(X)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

fst#(mark(X))fst#(X)fst#(ok(X))fst#(X)

Problem 4: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

head#(ok(X))head#(X)head#(mark(X))head#(X)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

head#(ok(X))head#(X)head#(mark(X))head#(X)

Problem 5: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

natsFrom#(mark(X))natsFrom#(X)natsFrom#(ok(X))natsFrom#(X)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

natsFrom#(mark(X))natsFrom#(X)natsFrom#(ok(X))natsFrom#(X)

Problem 6: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

snd#(mark(X))snd#(X)snd#(ok(X))snd#(X)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

snd#(mark(X))snd#(X)snd#(ok(X))snd#(X)

Problem 7: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

sel#(mark(X1), X2)sel#(X1, X2)sel#(ok(X1), ok(X2))sel#(X1, X2)
sel#(X1, mark(X2))sel#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

sel#(mark(X1), X2)sel#(X1, X2)sel#(ok(X1), ok(X2))sel#(X1, X2)

Problem 8: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

active#(take(X1, X2))active#(X2)active#(fst(X))active#(X)
active#(take(X1, X2))active#(X1)active#(natsFrom(X))active#(X)
active#(afterNth(X1, X2))active#(X2)active#(u(X1, X2, X3, X4))active#(X1)
active#(afterNth(X1, X2))active#(X1)active#(sel(X1, X2))active#(X2)
active#(pair(X1, X2))active#(X2)active#(s(X))active#(X)
active#(sel(X1, X2))active#(X1)active#(splitAt(X1, X2))active#(X2)
active#(pair(X1, X2))active#(X1)active#(tail(X))active#(X)
active#(head(X))active#(X)active#(splitAt(X1, X2))active#(X1)
active#(snd(X))active#(X)active#(cons(X1, X2))active#(X1)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

active#(take(X1, X2))active#(X2)active#(fst(X))active#(X)
active#(take(X1, X2))active#(X1)active#(natsFrom(X))active#(X)
active#(afterNth(X1, X2))active#(X2)active#(u(X1, X2, X3, X4))active#(X1)
active#(afterNth(X1, X2))active#(X1)active#(sel(X1, X2))active#(X2)
active#(pair(X1, X2))active#(X2)active#(sel(X1, X2))active#(X1)
active#(splitAt(X1, X2))active#(X2)active#(s(X))active#(X)
active#(pair(X1, X2))active#(X1)active#(tail(X))active#(X)
active#(head(X))active#(X)active#(splitAt(X1, X2))active#(X1)
active#(snd(X))active#(X)active#(cons(X1, X2))active#(X1)

Problem 9: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

afterNth#(X1, mark(X2))afterNth#(X1, X2)afterNth#(mark(X1), X2)afterNth#(X1, X2)
afterNth#(ok(X1), ok(X2))afterNth#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

afterNth#(mark(X1), X2)afterNth#(X1, X2)afterNth#(ok(X1), ok(X2))afterNth#(X1, X2)

Problem 19: PolynomialLinearRange4iUR



Dependency Pair Problem

Dependency Pairs

afterNth#(X1, mark(X2))afterNth#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, proper, afterNth, head, sel, top, cons, snd, nil

Strategy


Polynomial Interpretation

There are no usable rules

The following dependency pairs are strictly oriented by an ordering on the given polynomial interpretation, thus they are removed:

afterNth#(X1, mark(X2))afterNth#(X1, X2)

Problem 10: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

pair#(mark(X1), X2)pair#(X1, X2)pair#(ok(X1), ok(X2))pair#(X1, X2)
pair#(X1, mark(X2))pair#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

pair#(mark(X1), X2)pair#(X1, X2)pair#(ok(X1), ok(X2))pair#(X1, X2)

Problem 11: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

tail#(ok(X))tail#(X)tail#(mark(X))tail#(X)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

tail#(ok(X))tail#(X)tail#(mark(X))tail#(X)

Problem 12: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

u#(mark(X1), X2, X3, X4)u#(X1, X2, X3, X4)u#(ok(X1), ok(X2), ok(X3), ok(X4))u#(X1, X2, X3, X4)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

u#(mark(X1), X2, X3, X4)u#(X1, X2, X3, X4)u#(ok(X1), ok(X2), ok(X3), ok(X4))u#(X1, X2, X3, X4)

Problem 13: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

take#(mark(X1), X2)take#(X1, X2)take#(X1, mark(X2))take#(X1, X2)
take#(ok(X1), ok(X2))take#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

take#(mark(X1), X2)take#(X1, X2)take#(ok(X1), ok(X2))take#(X1, X2)

Problem 14: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

s#(mark(X))s#(X)s#(ok(X))s#(X)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

s#(mark(X))s#(X)s#(ok(X))s#(X)

Problem 15: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

proper#(u(X1, X2, X3, X4))proper#(X4)proper#(head(X))proper#(X)
proper#(cons(X1, X2))proper#(X1)proper#(cons(X1, X2))proper#(X2)
proper#(tail(X))proper#(X)proper#(natsFrom(X))proper#(X)
proper#(pair(X1, X2))proper#(X2)proper#(take(X1, X2))proper#(X2)
proper#(u(X1, X2, X3, X4))proper#(X2)proper#(u(X1, X2, X3, X4))proper#(X3)
proper#(fst(X))proper#(X)proper#(afterNth(X1, X2))proper#(X2)
proper#(pair(X1, X2))proper#(X1)proper#(u(X1, X2, X3, X4))proper#(X1)
proper#(sel(X1, X2))proper#(X1)proper#(snd(X))proper#(X)
proper#(s(X))proper#(X)proper#(take(X1, X2))proper#(X1)
proper#(splitAt(X1, X2))proper#(X2)proper#(sel(X1, X2))proper#(X2)
proper#(splitAt(X1, X2))proper#(X1)proper#(afterNth(X1, X2))proper#(X1)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

proper#(u(X1, X2, X3, X4))proper#(X4)proper#(head(X))proper#(X)
proper#(cons(X1, X2))proper#(X1)proper#(cons(X1, X2))proper#(X2)
proper#(tail(X))proper#(X)proper#(natsFrom(X))proper#(X)
proper#(pair(X1, X2))proper#(X2)proper#(take(X1, X2))proper#(X2)
proper#(u(X1, X2, X3, X4))proper#(X2)proper#(fst(X))proper#(X)
proper#(u(X1, X2, X3, X4))proper#(X3)proper#(afterNth(X1, X2))proper#(X2)
proper#(u(X1, X2, X3, X4))proper#(X1)proper#(pair(X1, X2))proper#(X1)
proper#(sel(X1, X2))proper#(X1)proper#(s(X))proper#(X)
proper#(snd(X))proper#(X)proper#(take(X1, X2))proper#(X1)
proper#(splitAt(X1, X2))proper#(X2)proper#(sel(X1, X2))proper#(X2)
proper#(splitAt(X1, X2))proper#(X1)proper#(afterNth(X1, X2))proper#(X1)

Problem 16: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

cons#(mark(X1), X2)cons#(X1, X2)cons#(ok(X1), ok(X2))cons#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

cons#(mark(X1), X2)cons#(X1, X2)cons#(ok(X1), ok(X2))cons#(X1, X2)

Problem 17: SubtermCriterion



Dependency Pair Problem

Dependency Pairs

splitAt#(ok(X1), ok(X2))splitAt#(X1, X2)splitAt#(X1, mark(X2))splitAt#(X1, X2)
splitAt#(mark(X1), X2)splitAt#(X1, X2)

Rewrite Rules

active(natsFrom(N))mark(cons(N, natsFrom(s(N))))active(fst(pair(XS, YS)))mark(XS)
active(snd(pair(XS, YS)))mark(YS)active(splitAt(0, XS))mark(pair(nil, XS))
active(splitAt(s(N), cons(X, XS)))mark(u(splitAt(N, XS), N, X, XS))active(u(pair(YS, ZS), N, X, XS))mark(pair(cons(X, YS), ZS))
active(head(cons(N, XS)))mark(N)active(tail(cons(N, XS)))mark(XS)
active(sel(N, XS))mark(head(afterNth(N, XS)))active(take(N, XS))mark(fst(splitAt(N, XS)))
active(afterNth(N, XS))mark(snd(splitAt(N, XS)))active(natsFrom(X))natsFrom(active(X))
active(cons(X1, X2))cons(active(X1), X2)active(s(X))s(active(X))
active(fst(X))fst(active(X))active(pair(X1, X2))pair(active(X1), X2)
active(pair(X1, X2))pair(X1, active(X2))active(snd(X))snd(active(X))
active(splitAt(X1, X2))splitAt(active(X1), X2)active(splitAt(X1, X2))splitAt(X1, active(X2))
active(u(X1, X2, X3, X4))u(active(X1), X2, X3, X4)active(head(X))head(active(X))
active(tail(X))tail(active(X))active(sel(X1, X2))sel(active(X1), X2)
active(sel(X1, X2))sel(X1, active(X2))active(afterNth(X1, X2))afterNth(active(X1), X2)
active(afterNth(X1, X2))afterNth(X1, active(X2))active(take(X1, X2))take(active(X1), X2)
active(take(X1, X2))take(X1, active(X2))natsFrom(mark(X))mark(natsFrom(X))
cons(mark(X1), X2)mark(cons(X1, X2))s(mark(X))mark(s(X))
fst(mark(X))mark(fst(X))pair(mark(X1), X2)mark(pair(X1, X2))
pair(X1, mark(X2))mark(pair(X1, X2))snd(mark(X))mark(snd(X))
splitAt(mark(X1), X2)mark(splitAt(X1, X2))splitAt(X1, mark(X2))mark(splitAt(X1, X2))
u(mark(X1), X2, X3, X4)mark(u(X1, X2, X3, X4))head(mark(X))mark(head(X))
tail(mark(X))mark(tail(X))sel(mark(X1), X2)mark(sel(X1, X2))
sel(X1, mark(X2))mark(sel(X1, X2))afterNth(mark(X1), X2)mark(afterNth(X1, X2))
afterNth(X1, mark(X2))mark(afterNth(X1, X2))take(mark(X1), X2)mark(take(X1, X2))
take(X1, mark(X2))mark(take(X1, X2))proper(natsFrom(X))natsFrom(proper(X))
proper(cons(X1, X2))cons(proper(X1), proper(X2))proper(s(X))s(proper(X))
proper(fst(X))fst(proper(X))proper(pair(X1, X2))pair(proper(X1), proper(X2))
proper(snd(X))snd(proper(X))proper(splitAt(X1, X2))splitAt(proper(X1), proper(X2))
proper(0)ok(0)proper(nil)ok(nil)
proper(u(X1, X2, X3, X4))u(proper(X1), proper(X2), proper(X3), proper(X4))proper(head(X))head(proper(X))
proper(tail(X))tail(proper(X))proper(sel(X1, X2))sel(proper(X1), proper(X2))
proper(afterNth(X1, X2))afterNth(proper(X1), proper(X2))proper(take(X1, X2))take(proper(X1), proper(X2))
natsFrom(ok(X))ok(natsFrom(X))cons(ok(X1), ok(X2))ok(cons(X1, X2))
s(ok(X))ok(s(X))fst(ok(X))ok(fst(X))
pair(ok(X1), ok(X2))ok(pair(X1, X2))snd(ok(X))ok(snd(X))
splitAt(ok(X1), ok(X2))ok(splitAt(X1, X2))u(ok(X1), ok(X2), ok(X3), ok(X4))ok(u(X1, X2, X3, X4))
head(ok(X))ok(head(X))tail(ok(X))ok(tail(X))
sel(ok(X1), ok(X2))ok(sel(X1, X2))afterNth(ok(X1), ok(X2))ok(afterNth(X1, X2))
take(ok(X1), ok(X2))ok(take(X1, X2))top(mark(X))top(proper(X))
top(ok(X))top(active(X))

Original Signature

Termination of terms over the following signature is verified: pair, natsFrom, mark, tail, splitAt, fst, u, 0, s, take, active, ok, afterNth, proper, head, sel, nil, snd, cons, top

Strategy


Projection

The following projection was used:

Thus, the following dependency pairs are removed:

splitAt#(ok(X1), ok(X2))splitAt#(X1, X2)splitAt#(mark(X1), X2)splitAt#(X1, X2)