(0) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

Q is empty.

(1) AAECC Innermost (EQUIVALENT transformation)

We have applied [NOC,AAECCNOC] to switch to innermost. The TRS R 1 is

sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The TRS R 2 is

ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The signature Sigma is {if_7, if_4, if_6, ring, if_8, if_5, if_3, if_2, if_1, if_9}

(2) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

(3) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LPAR04] we result in the following initial DP problem.

(4) Obligation:

Q DP problem:
The TRS P consists of the following rules:

FSTSPLIT(s(n), cons(h, t)) → FSTSPLIT(n, t)
SNDSPLIT(s(n), cons(h, t)) → SNDSPLIT(n, t)
LEQ(s(n), s(m)) → LEQ(n, m)
LENGTH(cons(h, t)) → LENGTH(t)
APP(cons(h, t), x) → APP(t, x)
MAP_F(pid, cons(h, t)) → APP(f(pid, h), map_f(pid, t))
MAP_F(pid, cons(h, t)) → MAP_F(pid, t)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
RING(st_1, in_2, st_2, in_3, st_3, m) → EMPTY(fstsplit(m, st_1))
RING(st_1, in_2, st_2, in_3, st_3, m) → FSTSPLIT(m, st_1)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, st_1)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → FSTSPLIT(m, st_1)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
RING(st_1, in_2, st_2, in_3, st_3, m) → LEQ(m, length(st_2))
RING(st_1, in_2, st_2, in_3, st_3, m) → LENGTH(st_2)
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → EMPTY(fstsplit(m, st_2))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → FSTSPLIT(m, st_2)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, st_2)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → FSTSPLIT(m, st_2)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → EMPTY(fstsplit(m, app(map_f(two, head(in_2)), st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → FSTSPLIT(m, app(map_f(two, head(in_2)), st_2))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(two, head(in_2)), st_2)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(two, head(in_2))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_2)
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → TAIL(in_2)
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, app(map_f(two, head(in_2)), st_2))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(two, head(in_2)), st_2)
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(two, head(in_2))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_2)
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → FSTSPLIT(m, app(map_f(two, head(in_2)), st_2))
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
RING(st_1, in_2, st_2, in_3, st_3, m) → EMPTY(map_f(two, head(in_2)))
RING(st_1, in_2, st_2, in_3, st_3, m) → MAP_F(two, head(in_2))
RING(st_1, in_2, st_2, in_3, st_3, m) → HEAD(in_2)
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → TAIL(in_2)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
RING(st_1, in_2, st_2, in_3, st_3, m) → LEQ(m, length(st_3))
RING(st_1, in_2, st_2, in_3, st_3, m) → LENGTH(st_3)
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → EMPTY(fstsplit(m, st_3))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → FSTSPLIT(m, st_3)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, st_3)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → EMPTY(fstsplit(m, app(map_f(three, head(in_3)), st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → FSTSPLIT(m, app(map_f(three, head(in_3)), st_3))
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(three, head(in_3)), st_3)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(three, head(in_3))
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_3)
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → TAIL(in_3)
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, app(map_f(three, head(in_3)), st_3))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(three, head(in_3)), st_3)
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(three, head(in_3))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_3)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
RING(st_1, in_2, st_2, in_3, st_3, m) → EMPTY(map_f(three, head(in_3)))
RING(st_1, in_2, st_2, in_3, st_3, m) → MAP_F(three, head(in_3))
RING(st_1, in_2, st_2, in_3, st_3, m) → HEAD(in_3)
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → TAIL(in_3)

The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(5) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 7 SCCs with 45 less nodes.

(6) Complex Obligation (AND)

(7) Obligation:

Q DP problem:
The TRS P consists of the following rules:

APP(cons(h, t), x) → APP(t, x)

The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(8) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(9) Obligation:

Q DP problem:
The TRS P consists of the following rules:

APP(cons(h, t), x) → APP(t, x)

R is empty.
The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(10) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

(11) Obligation:

Q DP problem:
The TRS P consists of the following rules:

APP(cons(h, t), x) → APP(t, x)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(12) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • APP(cons(h, t), x) → APP(t, x)
    The graph contains the following edges 1 > 1, 2 >= 2

(13) TRUE

(14) Obligation:

Q DP problem:
The TRS P consists of the following rules:

MAP_F(pid, cons(h, t)) → MAP_F(pid, t)

The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(15) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(16) Obligation:

Q DP problem:
The TRS P consists of the following rules:

MAP_F(pid, cons(h, t)) → MAP_F(pid, t)

R is empty.
The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(17) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

(18) Obligation:

Q DP problem:
The TRS P consists of the following rules:

MAP_F(pid, cons(h, t)) → MAP_F(pid, t)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(19) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • MAP_F(pid, cons(h, t)) → MAP_F(pid, t)
    The graph contains the following edges 1 >= 1, 2 > 2

(20) TRUE

(21) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LENGTH(cons(h, t)) → LENGTH(t)

The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(22) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(23) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LENGTH(cons(h, t)) → LENGTH(t)

R is empty.
The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(24) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

(25) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LENGTH(cons(h, t)) → LENGTH(t)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(26) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • LENGTH(cons(h, t)) → LENGTH(t)
    The graph contains the following edges 1 > 1

(27) TRUE

(28) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LEQ(s(n), s(m)) → LEQ(n, m)

The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(29) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(30) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LEQ(s(n), s(m)) → LEQ(n, m)

R is empty.
The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(31) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

(32) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LEQ(s(n), s(m)) → LEQ(n, m)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(33) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • LEQ(s(n), s(m)) → LEQ(n, m)
    The graph contains the following edges 1 > 1, 2 > 2

(34) TRUE

(35) Obligation:

Q DP problem:
The TRS P consists of the following rules:

SNDSPLIT(s(n), cons(h, t)) → SNDSPLIT(n, t)

The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(36) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(37) Obligation:

Q DP problem:
The TRS P consists of the following rules:

SNDSPLIT(s(n), cons(h, t)) → SNDSPLIT(n, t)

R is empty.
The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(38) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

(39) Obligation:

Q DP problem:
The TRS P consists of the following rules:

SNDSPLIT(s(n), cons(h, t)) → SNDSPLIT(n, t)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(40) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • SNDSPLIT(s(n), cons(h, t)) → SNDSPLIT(n, t)
    The graph contains the following edges 1 > 1, 2 > 2

(41) TRUE

(42) Obligation:

Q DP problem:
The TRS P consists of the following rules:

FSTSPLIT(s(n), cons(h, t)) → FSTSPLIT(n, t)

The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(43) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(44) Obligation:

Q DP problem:
The TRS P consists of the following rules:

FSTSPLIT(s(n), cons(h, t)) → FSTSPLIT(n, t)

R is empty.
The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(45) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

(46) Obligation:

Q DP problem:
The TRS P consists of the following rules:

FSTSPLIT(s(n), cons(h, t)) → FSTSPLIT(n, t)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(47) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • FSTSPLIT(s(n), cons(h, t)) → FSTSPLIT(n, t)
    The graph contains the following edges 1 > 1, 2 > 2

(48) TRUE

(49) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(st_1, in_2, st_2, in_3, st_3, m) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)

The TRS R consists of the following rules:

fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
empty(nil) → true
empty(cons(h, t)) → false
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)
length(nil) → 0
length(cons(h, t)) → s(length(t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
head(cons(h, t)) → h
tail(cons(h, t)) → t
ring(st_1, in_2, st_2, in_3, st_3, m) → if_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
if_1(st_1, in_2, st_2, in_3, st_3, m, false) → ring(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
if_2(st_1, in_2, st_2, in_3, st_3, m, true) → if_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
if_3(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
if_2(st_1, in_2, st_2, in_3, st_3, m, false) → if_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
if_4(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
if_5(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, tail(in_2), st_2, in_3, st_3, m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
if_6(st_1, in_2, st_2, in_3, st_3, m, true) → if_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
if_7(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
if_6(st_1, in_2, st_2, in_3, st_3, m, false) → if_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
if_8(st_1, in_2, st_2, in_3, st_3, m, false) → ring(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
ring(st_1, in_2, st_2, in_3, st_3, m) → if_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
if_9(st_1, in_2, st_2, in_3, st_3, m, true) → ring(st_1, in_2, st_2, tail(in_3), st_3, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(50) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(51) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(st_1, in_2, st_2, in_3, st_3, m) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))
ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

We have to consider all minimal (P,Q,R)-chains.

(52) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

ring(x0, x1, x2, x3, x4, x5)
if_1(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, true)
if_3(x0, x1, x2, x3, x4, x5, false)
if_2(x0, x1, x2, x3, x4, x5, false)
if_4(x0, x1, x2, x3, x4, x5, false)
if_5(x0, x1, x2, x3, x4, x5, true)
if_6(x0, x1, x2, x3, x4, x5, true)
if_7(x0, x1, x2, x3, x4, x5, false)
if_6(x0, x1, x2, x3, x4, x5, false)
if_8(x0, x1, x2, x3, x4, x5, false)
if_9(x0, x1, x2, x3, x4, x5, true)

(53) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(st_1, in_2, st_2, in_3, st_3, m) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(54) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule RING(st_1, in_2, st_2, in_3, st_3, m) → IF_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2)))) at position [6] we obtained the following new rules [LPAR04]:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))

(55) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(st_1, in_2, st_2, in_3, st_3, m) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3))))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(56) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule RING(st_1, in_2, st_2, in_3, st_3, m) → IF_9(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(three, head(in_3)))) at position [6] we obtained the following new rules [LPAR04]:

RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))

(57) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(st_1, in_2, st_2, in_3, st_3, m) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(58) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule RING(st_1, in_2, st_2, in_3, st_3, m) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1))) at position [6] we obtained the following new rules [LPAR04]:

RING(x0, y1, y2, y3, y4, 0) → IF_1(x0, y1, y2, y3, y4, 0, empty(nil))
RING(nil, y1, y2, y3, y4, s(x0)) → IF_1(nil, y1, y2, y3, y4, s(x0), empty(nil))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), empty(cons(x1, fstsplit(x0, x2))))

(59) Obligation:

Q DP problem:
The TRS P consists of the following rules:

IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(x0, y1, y2, y3, y4, 0) → IF_1(x0, y1, y2, y3, y4, 0, empty(nil))
RING(nil, y1, y2, y3, y4, s(x0)) → IF_1(nil, y1, y2, y3, y4, s(x0), empty(nil))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), empty(cons(x1, fstsplit(x0, x2))))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(60) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 2 less nodes.

(61) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), empty(cons(x1, fstsplit(x0, x2))))
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(62) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), empty(cons(x1, fstsplit(x0, x2)))) at position [6] we obtained the following new rules [LPAR04]:

RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)

(63) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(64) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule RING(st_1, in_2, st_2, in_3, st_3, m) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2))) at position [6] we obtained the following new rules [LPAR04]:

RING(y0, y1, y2, y3, y4, 0) → IF_2(y0, y1, y2, y3, y4, 0, true)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))

(65) Obligation:

Q DP problem:
The TRS P consists of the following rules:

IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2)))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, y2, y3, y4, 0) → IF_2(y0, y1, y2, y3, y4, 0, true)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(66) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → IF_3(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_2))) at position [6] we obtained the following new rules [LPAR04]:

IF_2(y0, y1, x0, y3, y4, 0, true) → IF_3(y0, y1, x0, y3, y4, 0, empty(nil))
IF_2(y0, y1, nil, y3, y4, s(x0), true) → IF_3(y0, y1, nil, y3, y4, s(x0), empty(nil))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), empty(cons(x1, fstsplit(x0, x2))))

(67) Obligation:

Q DP problem:
The TRS P consists of the following rules:

IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, y2, y3, y4, 0) → IF_2(y0, y1, y2, y3, y4, 0, true)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, x0, y3, y4, 0, true) → IF_3(y0, y1, x0, y3, y4, 0, empty(nil))
IF_2(y0, y1, nil, y3, y4, s(x0), true) → IF_3(y0, y1, nil, y3, y4, s(x0), empty(nil))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), empty(cons(x1, fstsplit(x0, x2))))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(68) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes.

(69) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), empty(cons(x1, fstsplit(x0, x2))))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(70) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), empty(cons(x1, fstsplit(x0, x2)))) at position [6] we obtained the following new rules [LPAR04]:

IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)

(71) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3)))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(72) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule RING(st_1, in_2, st_2, in_3, st_3, m) → IF_6(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_3))) at position [6] we obtained the following new rules [LPAR04]:

RING(y0, y1, y2, y3, y4, 0) → IF_6(y0, y1, y2, y3, y4, 0, true)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))

(73) Obligation:

Q DP problem:
The TRS P consists of the following rules:

IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3)))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, y4, 0) → IF_6(y0, y1, y2, y3, y4, 0, true)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(74) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → IF_7(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_3))) at position [6] we obtained the following new rules [LPAR04]:

IF_6(y0, y1, y2, y3, x0, 0, true) → IF_7(y0, y1, y2, y3, x0, 0, empty(nil))
IF_6(y0, y1, y2, y3, nil, s(x0), true) → IF_7(y0, y1, y2, y3, nil, s(x0), empty(nil))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), empty(cons(x1, fstsplit(x0, x2))))

(75) Obligation:

Q DP problem:
The TRS P consists of the following rules:

IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, y4, 0) → IF_6(y0, y1, y2, y3, y4, 0, true)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, x0, 0, true) → IF_7(y0, y1, y2, y3, x0, 0, empty(nil))
IF_6(y0, y1, y2, y3, nil, s(x0), true) → IF_7(y0, y1, y2, y3, nil, s(x0), empty(nil))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), empty(cons(x1, fstsplit(x0, x2))))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(76) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes.

(77) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), empty(cons(x1, fstsplit(x0, x2))))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(78) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), empty(cons(x1, fstsplit(x0, x2)))) at position [6] we obtained the following new rules [LPAR04]:

IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)

(79) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(80) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → IF_4(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(two, head(in_2)), st_2)))) at position [6] we obtained the following new rules [LPAR04]:

IF_2(y0, y1, y2, y3, y4, 0, false) → IF_4(y0, y1, y2, y3, y4, 0, empty(nil))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))

(81) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_2(y0, y1, y2, y3, y4, 0, false) → IF_4(y0, y1, y2, y3, y4, 0, empty(nil))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(82) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(83) Obligation:

Q DP problem:
The TRS P consists of the following rules:

IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(84) Narrowing (EQUIVALENT transformation)

By narrowing [LPAR04] the rule IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → IF_8(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, app(map_f(three, head(in_3)), st_3)))) at position [6] we obtained the following new rules [LPAR04]:

IF_6(y0, y1, y2, y3, y4, 0, false) → IF_8(y0, y1, y2, y3, y4, 0, empty(nil))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))

(85) Obligation:

Q DP problem:
The TRS P consists of the following rules:

IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_6(y0, y1, y2, y3, y4, 0, false) → IF_8(y0, y1, y2, y3, y4, 0, empty(nil))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(86) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(87) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m)
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(88) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule IF_5(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, tail(in_2), st_2, in_3, st_3, m) we obtained the following new rules [LPAR04]:

IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, tail(cons(z1, z2)), z3, z4, z5, z6)

(89) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, tail(cons(z1, z2)), z3, z4, z5, z6)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(90) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, tail(cons(z1, z2)), z3, z4, z5, z6) at position [1] we obtained the following new rules [LPAR04]:

IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)

(91) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(92) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → RING(st_1, in_2, st_2, tail(in_3), st_3, m) we obtained the following new rules [LPAR04]:

IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, tail(cons(z3, z4)), z5, z6)

(93) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, tail(cons(z3, z4)), z5, z6)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(94) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, tail(cons(z3, z4)), z5, z6) at position [3] we obtained the following new rules [LPAR04]:

IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)

(95) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(96) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → RING(sndsplit(m, st_1), cons(fstsplit(m, st_1), in_2), st_2, in_3, st_3, m) we obtained the following new rules [LPAR04]:

IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(s(z6), cons(z0, z1)), cons(fstsplit(s(z6), cons(z0, z1)), z2), z3, z4, z5, s(z6))

(97) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(s(z6), cons(z0, z1)), cons(fstsplit(s(z6), cons(z0, z1)), z2), z3, z4, z5, s(z6))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(98) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(s(z6), cons(z0, z1)), cons(fstsplit(s(z6), cons(z0, z1)), z2), z3, z4, z5, s(z6)) at position [0] we obtained the following new rules [LPAR04]:

IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(fstsplit(s(z6), cons(z0, z1)), z2), z3, z4, z5, s(z6))

(99) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(fstsplit(s(z6), cons(z0, z1)), z2), z3, z4, z5, s(z6))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(100) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(fstsplit(s(z6), cons(z0, z1)), z2), z3, z4, z5, s(z6)) at position [1,0] we obtained the following new rules [LPAR04]:

IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))

(101) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2))))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(102) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule IF_2(y0, cons(x0, x1), y2, y3, y4, y5, false) → IF_4(y0, cons(x0, x1), y2, y3, y4, y5, empty(fstsplit(y5, app(map_f(two, x0), y2)))) we obtained the following new rules [LPAR04]:

IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))

(103) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(104) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, tail(in_2), sndsplit(m, app(map_f(two, head(in_2)), st_2)), cons(fstsplit(m, app(map_f(two, head(in_2)), st_2)), in_3), st_3, m) we obtained the following new rules [LPAR04]:

IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, tail(cons(z1, z2)), sndsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, tail(cons(z1, z2)), sndsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7)

(105) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, tail(cons(z1, z2)), sndsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, tail(cons(z1, z2)), sndsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(106) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, tail(cons(z1, z2)), sndsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5) at position [1] we obtained the following new rules [LPAR04]:

IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5)

(107) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, tail(cons(z1, z2)), sndsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7)
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(108) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, tail(cons(z1, z2)), sndsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7) at position [1] we obtained the following new rules [LPAR04]:

IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7)

(109) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(110) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5) at position [2,1,0,1] we obtained the following new rules [LPAR04]:

IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5)

(111) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7)
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(112) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7) at position [2,1,0,1] we obtained the following new rules [LPAR04]:

IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7)

(113) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(114) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, head(cons(z1, z2))), nil)), z3), z4, z5) at position [3,0,1,0,1] we obtained the following new rules [LPAR04]:

IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)

(115) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7)
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(116) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, head(cons(z1, z2))), cons(z3, z4))), z5), z6, z7) at position [3,0,1,0,1] we obtained the following new rules [LPAR04]:

IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)

(117) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(118) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule IF_3(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, sndsplit(m, st_2), cons(fstsplit(m, st_2), in_3), st_3, m) we obtained the following new rules [LPAR04]:

IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(s(z6), cons(z2, z3)), cons(fstsplit(s(z6), cons(z2, z3)), z4), z5, s(z6))

(119) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(s(z6), cons(z2, z3)), cons(fstsplit(s(z6), cons(z2, z3)), z4), z5, s(z6))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(120) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(s(z6), cons(z2, z3)), cons(fstsplit(s(z6), cons(z2, z3)), z4), z5, s(z6)) at position [2] we obtained the following new rules [LPAR04]:

IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(fstsplit(s(z6), cons(z2, z3)), z4), z5, s(z6))

(121) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(fstsplit(s(z6), cons(z2, z3)), z4), z5, s(z6))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(122) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(fstsplit(s(z6), cons(z2, z3)), z4), z5, s(z6)) at position [3,0] we obtained the following new rules [LPAR04]:

IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))

(123) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4))))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(124) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule IF_6(y0, y1, y2, cons(x0, x1), y4, y5, false) → IF_8(y0, y1, y2, cons(x0, x1), y4, y5, empty(fstsplit(y5, app(map_f(three, x0), y4)))) we obtained the following new rules [LPAR04]:

IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))

(125) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(126) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, tail(in_3), sndsplit(m, app(map_f(three, head(in_3)), st_3)), m) we obtained the following new rules [LPAR04]:

IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, tail(cons(z3, z4)), sndsplit(z5, app(map_f(three, head(cons(z3, z4))), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, tail(cons(z3, z4)), sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7)

(127) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, tail(cons(z3, z4)), sndsplit(z5, app(map_f(three, head(cons(z3, z4))), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, tail(cons(z3, z4)), sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(128) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, tail(cons(z3, z4)), sndsplit(z5, app(map_f(three, head(cons(z3, z4))), nil)), z5) at position [3] we obtained the following new rules [LPAR04]:

IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, head(cons(z3, z4))), nil)), z5)

(129) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, tail(cons(z3, z4)), sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7)
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, head(cons(z3, z4))), nil)), z5)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(130) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, tail(cons(z3, z4)), sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7) at position [3] we obtained the following new rules [LPAR04]:

IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7)

(131) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, head(cons(z3, z4))), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7)

The TRS R consists of the following rules:

tail(cons(h, t)) → t
head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), 0) → false
leq(s(n), s(m)) → leq(n, m)

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(132) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(133) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, head(cons(z3, z4))), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7)

The TRS R consists of the following rules:

head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))
tail(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(134) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

tail(cons(x0, x1))

(135) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, head(cons(z3, z4))), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7)

The TRS R consists of the following rules:

head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(136) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, head(cons(z3, z4))), nil)), z5) at position [4,1,0,1] we obtained the following new rules [LPAR04]:

IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)

(137) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7)
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)

The TRS R consists of the following rules:

head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(138) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, head(cons(z3, z4))), cons(z5, z6))), z7) at position [4,1,0,1] we obtained the following new rules [LPAR04]:

IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)

(139) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)

The TRS R consists of the following rules:

head(cons(h, t)) → h
map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(140) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(141) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))
head(cons(x0, x1))

We have to consider all minimal (P,Q,R)-chains.

(142) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

head(cons(x0, x1))

(143) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(144) Instantiation (EQUIVALENT transformation)

By instantiating [LPAR04] the rule IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → RING(st_1, in_2, st_2, in_3, sndsplit(m, st_3), m) we obtained the following new rules [LPAR04]:

IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(s(z6), cons(z4, z5)), s(z6))

(145) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(s(z6), cons(z4, z5)), s(z6))

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(146) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(s(z6), cons(z4, z5)), s(z6)) at position [4] we obtained the following new rules [LPAR04]:

IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))

(147) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(148) ForwardInstantiation (EQUIVALENT transformation)

By forward instantiating [JAR06] the rule RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0)) we obtained the following new rules [LPAR04]:

RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))

(149) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(150) ForwardInstantiation (EQUIVALENT transformation)

By forward instantiating [JAR06] the rule RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0)) we obtained the following new rules [LPAR04]:

RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))

(151) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(152) ForwardInstantiation (EQUIVALENT transformation)

By forward instantiating [JAR06] the rule IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6) we obtained the following new rules [LPAR04]:

IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)

(153) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(154) ForwardInstantiation (EQUIVALENT transformation)

By forward instantiating [JAR06] the rule RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0))) we obtained the following new rules [LPAR04]:

RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))

(155) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)
RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(156) ForwardInstantiation (EQUIVALENT transformation)

By forward instantiating [JAR06] the rule IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6) we obtained the following new rules [LPAR04]:

IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)

(157) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)
RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(158) ForwardInstantiation (EQUIVALENT transformation)

By forward instantiating [JAR06] the rule RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0))) we obtained the following new rules [LPAR04]:

RING(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6) → IF_9(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6, empty(map_f(three, x3)))
RING(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7)) → IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7), empty(map_f(three, x3)))
RING(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6) → IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6) → IF_9(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6, empty(map_f(three, x3)))
RING(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8)) → IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8), empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6, empty(map_f(three, x3)))

(159) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)
RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)
RING(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6) → IF_9(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6, empty(map_f(three, x3)))
RING(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7)) → IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7), empty(map_f(three, x3)))
RING(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6) → IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6) → IF_9(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6, empty(map_f(three, x3)))
RING(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8)) → IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8), empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6, empty(map_f(three, x3)))

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(160) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


IF_3(z0, z1, cons(z2, z3), z4, z5, s(z6), false) → RING(z0, z1, sndsplit(z6, z3), cons(cons(z2, fstsplit(z6, z3)), z4), z5, s(z6))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(0) = 0   
POL(IF_1(x1, x2, x3, x4, x5, x6, x7)) = x3   
POL(IF_2(x1, x2, x3, x4, x5, x6, x7)) = x3   
POL(IF_3(x1, x2, x3, x4, x5, x6, x7)) = x3   
POL(IF_4(x1, x2, x3, x4, x5, x6, x7)) = x3   
POL(IF_5(x1, x2, x3, x4, x5, x6, x7)) = x3   
POL(IF_6(x1, x2, x3, x4, x5, x6, x7)) = x3   
POL(IF_7(x1, x2, x3, x4, x5, x6, x7)) = x3   
POL(IF_8(x1, x2, x3, x4, x5, x6, x7)) = x3   
POL(IF_9(x1, x2, x3, x4, x5, x6, x7)) = x3   
POL(RING(x1, x2, x3, x4, x5, x6)) = x3   
POL(app(x1, x2)) = x1 + x2   
POL(cons(x1, x2)) = 1 + x2   
POL(empty(x1)) = 0   
POL(f(x1, x2)) = 0   
POL(false) = 0   
POL(fstsplit(x1, x2)) = 0   
POL(length(x1)) = 0   
POL(leq(x1, x2)) = 0   
POL(map_f(x1, x2)) = 0   
POL(nil) = 0   
POL(s(x1)) = 0   
POL(sndsplit(x1, x2)) = x2   
POL(three) = 0   
POL(true) = 0   
POL(two) = 0   

The following usable rules [FROCOS05] were oriented:

app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
map_f(pid, nil) → nil
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)

(161) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)
RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)
RING(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6) → IF_9(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6, empty(map_f(three, x3)))
RING(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7)) → IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7), empty(map_f(three, x3)))
RING(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6) → IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6) → IF_9(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6, empty(map_f(three, x3)))
RING(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8)) → IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8), empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6, empty(map_f(three, x3)))

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(162) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(163) Obligation:

Q DP problem:
The TRS P consists of the following rules:

IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
RING(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6) → IF_9(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7)) → IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7), empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
RING(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6) → IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
RING(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6) → IF_9(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
RING(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
RING(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8)) → IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8), empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
RING(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(164) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


IF_1(cons(z0, z1), z2, z3, z4, z5, s(z6), false) → RING(sndsplit(z6, z1), cons(cons(z0, fstsplit(z6, z1)), z2), z3, z4, z5, s(z6))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(0) = 0   
POL(IF_1(x1, x2, x3, x4, x5, x6, x7)) = x1   
POL(IF_2(x1, x2, x3, x4, x5, x6, x7)) = x1   
POL(IF_4(x1, x2, x3, x4, x5, x6, x7)) = x1   
POL(IF_5(x1, x2, x3, x4, x5, x6, x7)) = x1   
POL(IF_6(x1, x2, x3, x4, x5, x6, x7)) = x1   
POL(IF_7(x1, x2, x3, x4, x5, x6, x7)) = x1   
POL(IF_8(x1, x2, x3, x4, x5, x6, x7)) = x1   
POL(IF_9(x1, x2, x3, x4, x5, x6, x7)) = x1   
POL(RING(x1, x2, x3, x4, x5, x6)) = x1   
POL(app(x1, x2)) = 0   
POL(cons(x1, x2)) = 1 + x2   
POL(empty(x1)) = 0   
POL(f(x1, x2)) = 0   
POL(false) = 0   
POL(fstsplit(x1, x2)) = 0   
POL(length(x1)) = 0   
POL(leq(x1, x2)) = 0   
POL(map_f(x1, x2)) = 0   
POL(nil) = 0   
POL(s(x1)) = 0   
POL(sndsplit(x1, x2)) = x2   
POL(three) = 0   
POL(true) = 0   
POL(two) = 0   

The following usable rules [FROCOS05] were oriented:

sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)

(165) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
RING(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6) → IF_9(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7)) → IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7), empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
RING(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6) → IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
RING(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6) → IF_9(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
RING(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
RING(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8)) → IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8), empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
RING(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(166) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(167) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
RING(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6) → IF_9(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7)) → IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7), empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
RING(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6) → IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
RING(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6) → IF_9(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
RING(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
RING(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8)) → IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8), empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
RING(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(168) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(0) = 0   
POL(IF_2(x1, x2, x3, x4, x5, x6, x7)) = x5   
POL(IF_4(x1, x2, x3, x4, x5, x6, x7)) = x5   
POL(IF_5(x1, x2, x3, x4, x5, x6, x7)) = x5   
POL(IF_6(x1, x2, x3, x4, x5, x6, x7)) = x5   
POL(IF_7(x1, x2, x3, x4, x5, x6, x7)) = x5   
POL(IF_8(x1, x2, x3, x4, x5, x6, x7)) = x5   
POL(IF_9(x1, x2, x3, x4, x5, x6, x7)) = x5   
POL(RING(x1, x2, x3, x4, x5, x6)) = x5   
POL(app(x1, x2)) = x1 + x2   
POL(cons(x1, x2)) = 1 + x2   
POL(empty(x1)) = 0   
POL(f(x1, x2)) = 0   
POL(false) = 0   
POL(fstsplit(x1, x2)) = 0   
POL(length(x1)) = 0   
POL(leq(x1, x2)) = 0   
POL(map_f(x1, x2)) = 0   
POL(nil) = 0   
POL(s(x1)) = 0   
POL(sndsplit(x1, x2)) = x2   
POL(three) = 0   
POL(true) = 0   
POL(two) = 0   

The following usable rules [FROCOS05] were oriented:

app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
map_f(pid, nil) → nil
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)

(169) Obligation:

Q DP problem:
The TRS P consists of the following rules:

RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
RING(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6) → IF_9(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7)) → IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7), empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
RING(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6) → IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
RING(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6) → IF_9(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
RING(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
RING(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8)) → IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8), empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
RING(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(170) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(171) Obligation:

Q DP problem:
The TRS P consists of the following rules:

IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))
IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
RING(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6) → IF_9(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
RING(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7)) → IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7), empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
RING(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6) → IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
RING(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6) → IF_9(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
RING(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
RING(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
RING(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8)) → IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8), empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
RING(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
RING(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6, empty(map_f(three, x3)))
IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)
IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)

The TRS R consists of the following rules:

map_f(pid, nil) → nil
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
app(nil, x) → x
app(cons(h, t), x) → cons(h, app(t, x))
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
fstsplit(0, x) → nil
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
empty(cons(h, t)) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(0, m) → true
leq(s(n), s(m)) → leq(n, m)
leq(s(n), 0) → false

The set Q consists of the following terms:

fstsplit(0, x0)
fstsplit(s(x0), nil)
fstsplit(s(x0), cons(x1, x2))
sndsplit(0, x0)
sndsplit(s(x0), nil)
sndsplit(s(x0), cons(x1, x2))
empty(nil)
empty(cons(x0, x1))
leq(0, x0)
leq(s(x0), 0)
leq(s(x0), s(x1))
length(nil)
length(cons(x0, x1))
app(nil, x0)
app(cons(x0, x1), x2)
map_f(x0, nil)
map_f(x0, cons(x1, x2))

We have to consider all minimal (P,Q,R)-chains.

(172) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • IF_4(z0, cons(z1, z2), cons(z3, z4), z5, z6, z7, false) → RING(z0, z2, sndsplit(z7, app(map_f(two, z1), cons(z3, z4))), cons(fstsplit(z7, app(map_f(two, z1), cons(z3, z4))), z5), z6, z7)
    The graph contains the following edges 1 >= 1, 2 > 2, 5 >= 5, 6 >= 6

  • RING(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_2(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, false) → IF_4(z0, cons(x1, x2), cons(z2, z3), z4, z5, z6, empty(fstsplit(z6, app(map_f(two, x1), cons(z2, z3)))))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_6(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, false) → IF_8(z0, z1, z2, cons(x3, x4), cons(z4, z5), z6, empty(fstsplit(z6, app(map_f(three, x3), cons(z4, z5)))))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_8(z0, z1, z2, cons(z3, z4), cons(z5, z6), z7, false) → RING(z0, z1, z2, z4, sndsplit(z7, app(map_f(three, z3), cons(z5, z6))), z7)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 6 >= 6

  • IF_2(z0, cons(x1, x2), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_6(z0, z1, z2, cons(x3, x4), nil, z4, false) → IF_8(z0, z1, z2, cons(x3, x4), nil, z4, empty(fstsplit(z4, app(map_f(three, x3), nil))))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(y_1, y_2), nil, x2, x3, x4) → IF_2(x0, cons(y_1, y_2), nil, x2, x3, x4, leq(x4, 0))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_4(z0, cons(z1, z2), nil, z3, z4, z5, false) → RING(z0, z2, sndsplit(z5, app(map_f(two, z1), nil)), cons(fstsplit(z5, app(map_f(two, z1), nil)), z3), z4, z5)
    The graph contains the following edges 1 >= 1, 2 > 2, 5 >= 5, 6 >= 6

  • RING(x0, x1, x2, cons(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_8(z0, z1, z2, cons(z3, z4), nil, z5, false) → RING(z0, z1, z2, z4, sndsplit(z5, app(map_f(three, z3), nil)), z5)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 6 >= 6

  • IF_5(x0, cons(x1, x2), x3, x4, cons(y_4, y_5), x6, true) → RING(x0, x2, x3, x4, cons(y_4, y_5), x6)
    The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_5(x0, cons(x1, x2), cons(y_2, y_3), x4, x5, x6, true) → RING(x0, x2, cons(y_2, y_3), x4, x5, x6)
    The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), nil, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), nil, x6)
    The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), nil, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), nil, x6)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • IF_5(x0, cons(x1, cons(y_1, y_2)), nil, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
    The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_9(x0, cons(y_1, y_2), nil, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), nil, x4, x5, x6)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6) → IF_5(x0, cons(x1, x2), cons(y_3, y_4), x4, x5, x6, empty(map_f(two, x1)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6) → IF_5(x0, cons(x1, x2), x3, x4, cons(y_5, y_6), x6, empty(map_f(two, x1)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6) → IF_5(x0, cons(x1, cons(y_2, y_3)), x3, x4, x5, x6, empty(map_f(two, x1)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6) → IF_5(x0, cons(x1, x2), x3, cons(y_4, y_5), x5, x6, empty(map_f(two, x1)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7)) → IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_7), empty(map_f(two, x1)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6) → IF_9(x0, x1, x2, cons(x3, cons(y_4, y_5)), x5, x6, empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7)) → IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_7), empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_5, y_6)), x5, x6, empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8)) → IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_8), empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6) → IF_9(x0, x1, x2, cons(x3, x4), cons(y_5, y_6), x6, empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6) → IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_6, y_7), x6, empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6) → IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • RING(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6) → IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, empty(map_f(three, x3)))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_5(x0, cons(x1, cons(y_1, y_2)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
    The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_5(x0, cons(x1, x2), x3, cons(y_3, y_4), x5, x6, true) → RING(x0, x2, x3, cons(y_3, y_4), x5, x6)
    The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_5(cons(y_0, y_1), cons(x1, x2), x3, x4, x5, s(y_6), true) → RING(cons(y_0, y_1), x2, x3, x4, x5, s(y_6))
    The graph contains the following edges 1 >= 1, 2 > 2, 3 >= 3, 4 >= 4, 5 >= 5, 6 >= 6

  • IF_9(x0, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • IF_9(cons(y_0, y_1), x1, x2, cons(x3, x4), x5, s(y_6), true) → RING(cons(y_0, y_1), x1, x2, x4, x5, s(y_6))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • IF_9(x0, cons(y_1, cons(y_2, y_3)), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, cons(y_2, y_3)), x2, x4, x5, x6)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • IF_9(x0, cons(y_1, y_2), x2, cons(x3, cons(y_4, y_5)), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, cons(y_4, y_5), x5, x6)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • IF_9(cons(y_0, y_1), cons(y_2, y_3), x2, cons(x3, x4), x5, s(y_7), true) → RING(cons(y_0, y_1), cons(y_2, y_3), x2, x4, x5, s(y_7))
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • IF_9(x0, x1, x2, cons(x3, x4), cons(y_4, y_5), x6, true) → RING(x0, x1, x2, x4, cons(y_4, y_5), x6)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), cons(y_5, y_6), x6, true) → RING(x0, cons(y_1, y_2), x2, x4, cons(y_5, y_6), x6)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • IF_9(x0, x1, cons(y_2, y_3), cons(x3, x4), x5, x6, true) → RING(x0, x1, cons(y_2, y_3), x4, x5, x6)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

  • IF_9(x0, cons(y_1, y_2), cons(y_3, y_4), cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), cons(y_3, y_4), x4, x5, x6)
    The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3, 4 > 4, 5 >= 5, 6 >= 6

(173) TRUE