Termination w.r.t. Q of the following Term Rewriting System could be proven:
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.
↳ QTRS
↳ AAECC Innermost
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.
We have applied [19,8] 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}
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
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)
Using Dependency Pairs [1,15] we result in the following initial DP problem:
Q DP problem:
The TRS P consists of the following rules:
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_5(st_1, in_2, st_2, in_3, st_3, m, true) → TAIL(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)
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) → 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))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → FSTSPLIT(m, st_3)
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_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) → HEAD(in_2)
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → TAIL(in_3)
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(three, head(in_3))
LENGTH(cons(h, t)) → LENGTH(t)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(three, head(in_3))
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_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) → LENGTH(st_3)
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_4(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(two, head(in_2)), st_2)
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_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))))
MAP_F(pid, cons(h, t)) → APP(f(pid, h), map_f(pid, t))
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_8(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(three, head(in_3)), st_3)
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)))
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, false) → FSTSPLIT(m, app(map_f(three, head(in_3)), st_3))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_2)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(three, head(in_3)), st_3)
RING(st_1, in_2, st_2, in_3, st_3, m) → EMPTY(map_f(three, head(in_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_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_3(st_1, in_2, st_2, in_3, st_3, m, false) → FSTSPLIT(m, st_2)
APP(cons(h, t), x) → APP(t, x)
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_2)
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → FSTSPLIT(m, 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) → APP(map_f(two, head(in_2)), st_2)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, st_1)
LEQ(s(n), s(m)) → LEQ(n, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → LEQ(m, length(st_3))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → TAIL(in_2)
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)))
RING(st_1, in_2, st_2, in_3, st_3, m) → FSTSPLIT(m, st_1)
RING(st_1, in_2, st_2, in_3, st_3, m) → MAP_F(two, head(in_2))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → EMPTY(fstsplit(m, st_3))
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_3(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, st_2)
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → TAIL(in_3)
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_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) → LENGTH(st_2)
RING(st_1, in_2, st_2, in_3, st_3, m) → EMPTY(fstsplit(m, st_1))
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))))
RING(st_1, in_2, st_2, in_3, st_3, m) → MAP_F(three, head(in_3))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_3)
FSTSPLIT(s(n), cons(h, t)) → FSTSPLIT(n, t)
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_2(st_1, in_2, st_2, in_3, st_3, m, true) → EMPTY(fstsplit(m, st_2))
MAP_F(pid, cons(h, t)) → MAP_F(pid, t)
RING(st_1, in_2, st_2, in_3, st_3, m) → HEAD(in_3)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_3)
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(two, head(in_2))
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_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)
SNDSPLIT(s(n), cons(h, t)) → SNDSPLIT(n, t)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, st_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.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
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_5(st_1, in_2, st_2, in_3, st_3, m, true) → TAIL(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)
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) → 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))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → FSTSPLIT(m, st_3)
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_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) → HEAD(in_2)
IF_9(st_1, in_2, st_2, in_3, st_3, m, true) → TAIL(in_3)
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(three, head(in_3))
LENGTH(cons(h, t)) → LENGTH(t)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(three, head(in_3))
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_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) → LENGTH(st_3)
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_4(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(two, head(in_2)), st_2)
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_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))))
MAP_F(pid, cons(h, t)) → APP(f(pid, h), map_f(pid, t))
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_8(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(three, head(in_3)), st_3)
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)))
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, false) → FSTSPLIT(m, app(map_f(three, head(in_3)), st_3))
IF_2(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_2)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → APP(map_f(three, head(in_3)), st_3)
RING(st_1, in_2, st_2, in_3, st_3, m) → EMPTY(map_f(three, head(in_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_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_3(st_1, in_2, st_2, in_3, st_3, m, false) → FSTSPLIT(m, st_2)
APP(cons(h, t), x) → APP(t, x)
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_2)
IF_2(st_1, in_2, st_2, in_3, st_3, m, true) → FSTSPLIT(m, 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) → APP(map_f(two, head(in_2)), st_2)
IF_1(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, st_1)
LEQ(s(n), s(m)) → LEQ(n, m)
RING(st_1, in_2, st_2, in_3, st_3, m) → LEQ(m, length(st_3))
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → TAIL(in_2)
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)))
RING(st_1, in_2, st_2, in_3, st_3, m) → FSTSPLIT(m, st_1)
RING(st_1, in_2, st_2, in_3, st_3, m) → MAP_F(two, head(in_2))
IF_6(st_1, in_2, st_2, in_3, st_3, m, true) → EMPTY(fstsplit(m, st_3))
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_3(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, st_2)
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → TAIL(in_3)
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_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) → LENGTH(st_2)
RING(st_1, in_2, st_2, in_3, st_3, m) → EMPTY(fstsplit(m, st_1))
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))))
RING(st_1, in_2, st_2, in_3, st_3, m) → MAP_F(three, head(in_3))
IF_8(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_3)
FSTSPLIT(s(n), cons(h, t)) → FSTSPLIT(n, t)
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_2(st_1, in_2, st_2, in_3, st_3, m, true) → EMPTY(fstsplit(m, st_2))
MAP_F(pid, cons(h, t)) → MAP_F(pid, t)
RING(st_1, in_2, st_2, in_3, st_3, m) → HEAD(in_3)
IF_6(st_1, in_2, st_2, in_3, st_3, m, false) → HEAD(in_3)
IF_4(st_1, in_2, st_2, in_3, st_3, m, false) → MAP_F(two, head(in_2))
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_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)
SNDSPLIT(s(n), cons(h, t)) → SNDSPLIT(n, t)
IF_7(st_1, in_2, st_2, in_3, st_3, m, false) → SNDSPLIT(m, st_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.
The approximation of the Dependency Graph [15,17,22] contains 7 SCCs with 45 less nodes.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
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.
By using the subterm criterion [20] together with the size-change analysis [32] 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
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
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.
By using the subterm criterion [20] together with the size-change analysis [32] 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
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
↳ QDP
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.
By using the subterm criterion [20] together with the size-change analysis [32] 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
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
↳ QDP
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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
↳ QDP
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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
↳ QDP
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.
By using the subterm criterion [20] together with the size-change analysis [32] 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
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
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.
By using the subterm criterion [20] together with the size-change analysis [32] 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
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
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.
By using the subterm criterion [20] together with the size-change analysis [32] 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
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
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)))
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_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_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_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_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) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
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)))
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_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_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_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_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_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_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
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)
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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
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)))
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_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_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_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_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) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
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)))
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_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_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_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_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_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_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
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)
The TRS R consists of the following rules:
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)
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))
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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
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)))
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_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_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_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_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) → IF_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
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)))
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_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_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_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_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
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_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)
The TRS R consists of the following rules:
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)
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))
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.
By narrowing [15] 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:
RING(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
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_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_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_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_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_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)))
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) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
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_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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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_5(st_1, in_2, st_2, in_3, st_3, m, empty(map_f(two, head(in_2))))
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)
The TRS R consists of the following rules:
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)
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))
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.
By narrowing [15] 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:
RING(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
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)))
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_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_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_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_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
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)))
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_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_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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By narrowing [15] 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:
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, x0, y3, y4, 0, true) → IF_3(y0, y1, x0, y3, y4, 0, 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))))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
IF_2(y0, y1, x0, y3, y4, 0, true) → IF_3(y0, y1, x0, y3, y4, 0, empty(nil))
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_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_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_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_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_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)))
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) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
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_2(y0, y1, nil, y3, y4, s(x0), true) → IF_3(y0, y1, nil, y3, y4, s(x0), empty(nil))
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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 2 less nodes.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
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_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_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_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_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_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)))
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) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
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_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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By rewriting [15] 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:
IF_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
Q DP problem:
The TRS P consists of the following rules:
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(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_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_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_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_1(st_1, in_2, st_2, in_3, st_3, m, empty(fstsplit(m, st_1)))
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)))
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_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_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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By narrowing [15] 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:
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_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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
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_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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_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) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
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(y0, y1, y2, y3, nil, s(x0), true) → IF_7(y0, y1, y2, y3, nil, s(x0), empty(nil))
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(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))))
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(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
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_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_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_6(y0, y1, y2, y3, x0, 0, true) → IF_7(y0, y1, y2, y3, x0, 0, empty(nil))
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)
The TRS R consists of the following rules:
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)
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))
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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 2 less nodes.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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(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_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_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_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_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) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
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_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(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))))
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(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By rewriting [15] 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:
IF_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
Q DP problem:
The TRS P consists of the following rules:
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(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_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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_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) → IF_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
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_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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By narrowing [15] 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:
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))))
RING(nil, y1, y2, y3, y4, s(x0)) → IF_1(nil, y1, y2, y3, y4, s(x0), empty(nil))
RING(x0, y1, y2, y3, y4, 0) → IF_1(x0, y1, y2, y3, y4, 0, empty(nil))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
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(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(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_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_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_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(nil, y1, y2, y3, y4, s(x0)) → IF_1(nil, y1, y2, y3, y4, s(x0), empty(nil))
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(x0, y1, y2, y3, y4, 0) → IF_1(x0, y1, y2, y3, y4, 0, empty(nil))
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_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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 2 less nodes.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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(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(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_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_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_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_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
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_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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By rewriting [15] 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:
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
Q DP problem:
The TRS P consists of the following rules:
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(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_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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_2(st_1, in_2, st_2, in_3, st_3, m, leq(m, length(st_2)))
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))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, 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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By narrowing [15] 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:
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, 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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
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(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(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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(y0, y1, y2, y3, y4, 0) → IF_2(y0, y1, y2, y3, y4, 0, true)
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_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_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))))
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_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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 1 less node.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
Q DP problem:
The TRS P consists of the following rules:
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(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_2(y0, y1, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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_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))))
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_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, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By narrowing [15] 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:
RING(y0, y1, y2, y3, y4, 0) → IF_6(y0, y1, y2, y3, y4, 0, true)
RING(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
RING(y0, y1, y2, y3, y4, 0) → IF_6(y0, y1, y2, y3, y4, 0, true)
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_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_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_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))))
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_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))
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(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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 1 less node.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
Q DP problem:
The TRS P consists of the following rules:
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_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(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_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_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_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))))
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_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))
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(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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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))))
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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By narrowing [15] 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:
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))))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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_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_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))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_2(y0, y1, y2, y3, y4, 0, false) → IF_4(y0, y1, y2, y3, y4, 0, empty(nil))
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)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 1 less node.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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_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_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))))
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_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))
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(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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By narrowing [15] 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:
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))))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
IF_6(y0, y1, y2, y3, y4, 0, false) → IF_8(y0, y1, y2, y3, y4, 0, empty(nil))
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_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_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_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))))
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_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))
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_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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_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)
The TRS R consists of the following rules:
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)
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))
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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 1 less node.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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_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))))
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_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))
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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By instantiating [15] 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:
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, tail(cons(z3, z4)), z5, z6)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_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(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_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_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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, tail(cons(z3, z4)), z5, 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_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))
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_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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_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)
The TRS R consists of the following rules:
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)
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))
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.
By rewriting [15] 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:
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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))))
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_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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By instantiating [15] 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:
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, tail(cons(z1, z2)), z3, z4, z5, z6)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, tail(cons(z1, z2)), z3, z4, z5, 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_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))
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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_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)
The TRS R consists of the following rules:
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)
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))
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.
By rewriting [15] 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:
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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))))
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_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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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)
The TRS R consists of the following rules:
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)
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))
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.
By instantiating [15] 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:
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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))))
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_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_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))
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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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:
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)
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))
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.
By rewriting [15] 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:
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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))))
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_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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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))
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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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))))
The TRS R consists of the following rules:
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)
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))
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.
By rewriting [15] 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:
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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))))
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_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_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(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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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:
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)
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))
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.
By instantiating [15] 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:
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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))))
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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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))
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_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))))
The TRS R consists of the following rules:
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)
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))
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.
By rewriting [15] 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:
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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))))
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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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))
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_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:
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)
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))
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.
By rewriting [15] 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:
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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))))
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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
IF_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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:
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)
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))
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.
By instantiating [15] 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:
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)))))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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)))))
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), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_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:
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)
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))
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.
By instantiating [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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)))))
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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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_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_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:
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)
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))
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_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_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)))))
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), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_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_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:
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)
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))
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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)))))
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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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_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:
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)
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))
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_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_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_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)))))
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_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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_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:
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)
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))
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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)))))
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_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)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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:
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)
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))
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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)))))
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), nil, z2, z3, z4, false) → IF_4(z0, cons(x1, x2), nil, z2, z3, z4, empty(fstsplit(z4, app(map_f(two, x1), nil))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_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:
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)
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))
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_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_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:
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)
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))
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.
By instantiating [15] 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:
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_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_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_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)))))
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_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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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))))
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(s(z6), cons(z4, z5)), s(z6))
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_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_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:
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)
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))
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.
By rewriting [15] 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:
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
IF_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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_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))))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, 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_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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:
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)
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))
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.
By instantiating [15] 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:
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)))))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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)))))
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_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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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:
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)
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))
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.
By instantiating [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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))))
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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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(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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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)
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(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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:
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)
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))
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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_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)
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_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_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_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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
RING(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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:
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)
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))
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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))))
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, head(cons(z3, z4))), nil)), z5)
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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_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(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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, 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_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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:
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)
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))
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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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))))
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_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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, 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_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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:
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))
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
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
head(cons(h, t)) → h
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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
tail(cons(x0, x1))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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))))
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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 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_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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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:
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))
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
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
head(cons(h, t)) → h
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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)
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_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_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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, 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_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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_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:
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))
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
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
head(cons(h, t)) → h
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.
By rewriting [15] 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:
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)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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))))
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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 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_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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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_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))
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
sndsplit(0, x) → x
sndsplit(s(n), nil) → nil
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
head(cons(h, t)) → h
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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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))))
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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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_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:
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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
head(cons(x0, x1))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_5(z0, cons(z1, z2), z3, z4, z5, z6, true) → RING(z0, z2, z3, z4, z5, z6)
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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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))))
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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(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))
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, 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_7(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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_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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
By forward instantiating [14] 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:
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(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(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, 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), 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, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, x4, x5, x6)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_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_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(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
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_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(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(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
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_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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
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_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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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_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_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))))
RING(y0, y1, y2, y3, nil, y5) → IF_6(y0, y1, y2, y3, nil, y5, leq(y5, 0))
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(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
By forward instantiating [14] 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:
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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(y0, y1, cons(x0, x1), y3, y4, y5) → IF_2(y0, y1, cons(x0, x1), y3, y4, y5, leq(y5, s(length(x1))))
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_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(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(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, 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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, x4, x5, x6)
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_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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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_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_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_9(z0, z1, z2, cons(z3, z4), z5, z6, true) → RING(z0, z1, z2, z4, z5, z6)
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(y0, y1, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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(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_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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
By forward instantiating [14] 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:
IF_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, 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, 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, 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, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
IF_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, x4, 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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_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_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_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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, 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)
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_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_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(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(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
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_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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, 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_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_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_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_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(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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_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_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))))
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(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, nil, y3, y4, y5) → IF_2(y0, y1, nil, y3, y4, y5, leq(y5, 0))
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(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
By forward instantiating [14] 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:
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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_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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, 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)
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_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_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(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(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(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, 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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, 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_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_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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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_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_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, 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_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))))
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(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
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(y_3, y_4), nil, x4) → IF_6(x0, x1, x2, cons(y_3, y_4), nil, x4, leq(x4, 0))
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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
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 remaining pairs can at least be oriented weakly.
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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_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_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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, 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)
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_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_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(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(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, 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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, 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_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_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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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_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_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, 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_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))))
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(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
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_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)
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(IF_1(x1, x2, x3, x4, x5, x6, x7)) = 1
POL(IF_2(x1, x2, x3, x4, x5, x6, x7)) = x3
POL(IF_3(x1, x2, x3, x4, x5, x6, x7)) = x7
POL(IF_4(x1, x2, x3, x4, x5, x6, x7)) = x7
POL(IF_5(x1, x2, x3, x4, x5, x6, x7)) = 1
POL(IF_6(x1, x2, x3, x4, x5, x6, x7)) = x5
POL(IF_7(x1, x2, x3, x4, x5, x6, x7)) = 1
POL(IF_8(x1, x2, x3, x4, x5, x6, x7)) = x7
POL(IF_9(x1, x2, x3, x4, x5, x6, x7)) = 1
POL(RING(x1, x2, x3, x4, x5, x6)) = 1
POL(app(x1, x2)) = x1 + x2
POL(cons(x1, x2)) = 1
POL(empty(x1)) = x1
POL(f(x1, x2)) = 0
POL(false) = 1
POL(fstsplit(x1, x2)) = x2
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)) = 0
POL(three) = 0
POL(true) = 0
POL(two) = 0
The following usable rules [17] were oriented:
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
map_f(pid, nil) → nil
app(cons(h, t), x) → cons(h, app(t, x))
app(nil, x) → x
fstsplit(0, x) → nil
empty(cons(h, t)) → false
fstsplit(s(n), nil) → nil
fstsplit(s(n), cons(h, t)) → cons(h, fstsplit(n, t))
empty(nil) → true
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_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_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_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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, 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)
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_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_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(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(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, 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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, 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_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_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_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)))))
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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_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_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))))
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(y0, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
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_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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 4 less nodes.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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, 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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, 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)
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_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(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(z0, z1, z2, z3, cons(z4, z5), s(z6), false) → RING(z0, z1, z2, z3, sndsplit(z6, z5), s(z6))
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_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, 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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, 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_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_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_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(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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_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(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
We use the reduction pair processor [15].
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.
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, cons(x1, x2), y3, y4, s(x0), true) → IF_3(y0, y1, cons(x1, x2), y3, y4, s(x0), false)
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_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, 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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, 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)
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_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(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, 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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, 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_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_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_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(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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_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(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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)
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(IF_1(x1, x2, x3, x4, x5, x6, x7)) = x5
POL(IF_2(x1, x2, x3, x4, x5, x6, x7)) = x5
POL(IF_3(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 [17] were oriented:
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
map_f(pid, nil) → nil
app(cons(h, t), x) → cons(h, app(t, x))
app(nil, x) → x
sndsplit(s(n), nil) → nil
sndsplit(0, x) → x
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
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_6(y0, y1, y2, y3, cons(x1, x2), s(x0), true) → IF_7(y0, y1, y2, y3, cons(x1, x2), s(x0), false)
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_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, 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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, 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)
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_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(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, x4, x5, x6)
IF_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
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_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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, 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_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_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_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(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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_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(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 1 less node.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
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_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_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, 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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, 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)
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_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(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, 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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, 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_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_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_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(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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_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(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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_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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
We use the reduction pair processor [15].
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))
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, cons(x0, x1), y2, y3, y4, y5) → IF_5(y0, cons(x0, x1), y2, y3, y4, y5, empty(map_f(two, x0)))
The remaining pairs can at least be oriented weakly.
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_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_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, 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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, 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)
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_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(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
IF_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, 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)), x3, x4, x5, x6, true) → RING(x0, cons(y_1, y_2), x3, 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_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_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_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(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
IF_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, 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))
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(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_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)
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(IF_1(x1, x2, x3, x4, x5, x6, x7)) = 1 + x1 + x2 + x3
POL(IF_2(x1, x2, x3, x4, x5, x6, x7)) = 1 + x1 + x2 + x3
POL(IF_3(x1, x2, x3, x4, x5, x6, x7)) = 1 + x1 + x2 + x3
POL(IF_4(x1, x2, x3, x4, x5, x6, x7)) = 1 + x1 + x2 + x3
POL(IF_5(x1, x2, x3, x4, x5, x6, x7)) = x1 + x2 + x3
POL(IF_6(x1, x2, x3, x4, x5, x6, x7)) = 1 + x1 + x2 + x3
POL(IF_8(x1, x2, x3, x4, x5, x6, x7)) = 1 + x1 + x2 + x3
POL(IF_9(x1, x2, x3, x4, x5, x6, x7)) = 1 + x1 + x2 + x3
POL(RING(x1, x2, x3, x4, x5, x6)) = 1 + x1 + x2 + 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 [17] were oriented:
map_f(pid, cons(h, t)) → app(f(pid, h), map_f(pid, t))
map_f(pid, nil) → nil
app(cons(h, t), x) → cons(h, app(t, x))
app(nil, x) → x
sndsplit(s(n), nil) → nil
sndsplit(0, x) → x
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
Q DP problem:
The TRS P consists of the following rules:
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_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_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_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_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_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_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_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_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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, x4, x5, x6)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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_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_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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_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(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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_5(x0, cons(x1, x2), x3, x4, nil, x6, true) → RING(x0, x2, x3, x4, nil, x6)
IF_5(x0, cons(x1, x2), nil, x4, x5, x6, true) → RING(x0, x2, nil, x4, x5, 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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 10 less nodes.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
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_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, 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, 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(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, x4, x5, x6)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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_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_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(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
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, x1, x2, cons(x3, cons(y_3, y_4)), x5, x6, true) → RING(x0, x1, x2, cons(y_3, y_4), x5, x6)
The remaining pairs can at least be oriented weakly.
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_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), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, x4, x5, x6)
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
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, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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_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_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(y0, y1, y2, y3, cons(x0, x1), y5) → IF_6(y0, y1, y2, y3, cons(x0, x1), y5, leq(y5, s(length(x1))))
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)
Used ordering: Matrix interpretation [3]:
Non-tuple symbols:
M( f(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( map_f(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( sndsplit(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( cons(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( fstsplit(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( app(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
M( leq(x1, x2) ) = | | + | | · | x1 | + | | · | x2 |
Tuple symbols:
M( IF_8(x1, ..., x7) ) = | 0 | + | | · | x1 | + | | · | x2 | + | | · | x3 | + | | · | x4 | + | | · | x5 | + | | · | x6 | + | | · | x7 |
M( RING(x1, ..., x6) ) = | 0 | + | | · | x1 | + | | · | x2 | + | | · | x3 | + | | · | x4 | + | | · | x5 | + | | · | x6 |
M( IF_9(x1, ..., x7) ) = | 0 | + | | · | x1 | + | | · | x2 | + | | · | x3 | + | | · | x4 | + | | · | x5 | + | | · | x6 | + | | · | x7 |
M( IF_6(x1, ..., x7) ) = | 0 | + | | · | x1 | + | | · | x2 | + | | · | x3 | + | | · | x4 | + | | · | x5 | + | | · | x6 | + | | · | x7 |
M( IF_1(x1, ..., x7) ) = | 0 | + | | · | x1 | + | | · | x2 | + | | · | x3 | + | | · | x4 | + | | · | x5 | + | | · | x6 | + | | · | x7 |
Matrix type:
We used a basic matrix type which is not further parametrizeable.
As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order.
The following usable rules [17] were oriented:
length(nil) → 0
length(cons(h, t)) → s(length(t))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
Q DP problem:
The TRS P consists of the following rules:
IF_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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_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)
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_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, x4, x5, x6)
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_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(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:
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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
We use the reduction pair processor [15].
The following pairs can be oriented strictly and are deleted.
IF_9(x0, x1, nil, cons(x3, x4), x5, x6, true) → RING(x0, x1, nil, x4, x5, x6)
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)
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_9(x0, cons(y_1, y_2), x2, cons(x3, x4), x5, x6, true) → RING(x0, cons(y_1, y_2), x2, x4, 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))
The remaining pairs can at least be oriented weakly.
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(y0, y1, y2, cons(x0, x1), y4, y5) → IF_9(y0, y1, y2, cons(x0, x1), y4, y5, empty(map_f(three, x0)))
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(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(IF_1(x1, x2, x3, x4, x5, x6, x7)) = 1 + x4
POL(IF_6(x1, x2, x3, x4, x5, x6, x7)) = x4
POL(IF_8(x1, x2, x3, x4, x5, x6, x7)) = x4
POL(IF_9(x1, x2, x3, x4, x5, x6, x7)) = 1 + x4
POL(RING(x1, x2, x3, x4, x5, x6)) = 1 + x4
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)) = 1
POL(leq(x1, x2)) = 0
POL(map_f(x1, x2)) = 0
POL(nil) = 0
POL(s(x1)) = 0
POL(sndsplit(x1, x2)) = 0
POL(three) = 0
POL(true) = 0
The following usable rules [17] were oriented:
none
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
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)))
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_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(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:
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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 3 less nodes.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
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)
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))
leq(0, m) → true
leq(s(n), 0) → false
length(nil) → 0
length(cons(h, t)) → s(length(t))
leq(s(n), s(m)) → leq(n, m)
empty(nil) → true
empty(cons(h, t)) → 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.
As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [15] we can delete all non-usable rules [17] from R.
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
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)
The TRS R consists of the following rules:
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))
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.
We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.
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))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
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)
The TRS R consists of the following rules:
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))
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))
We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].
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.
RING(cons(x1, x2), y1, y2, y3, y4, s(x0)) → IF_1(cons(x1, x2), y1, y2, y3, y4, s(x0), false)
Used ordering: Polynomial interpretation [25]:
POL(0) = 0
POL(IF_1(x1, x2, x3, x4, x5, x6, x7)) = 1 + x1
POL(RING(x1, x2, x3, x4, x5, x6)) = x1 + x6
POL(cons(x1, x2)) = 1 + x2
POL(false) = 0
POL(fstsplit(x1, x2)) = 0
POL(nil) = 0
POL(s(x1)) = 1
POL(sndsplit(x1, x2)) = x2
The following usable rules [17] were oriented:
sndsplit(s(n), nil) → nil
sndsplit(0, x) → x
sndsplit(s(n), cons(h, t)) → sndsplit(n, t)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Narrowing
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Instantiation
↳ QDP
↳ Instantiation
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Rewriting
↳ QDP
↳ Rewriting
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ ForwardInstantiation
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
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)
The TRS R consists of the following rules:
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))
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))
We have to consider all minimal (P,Q,R)-chains.
The approximation of the Dependency Graph [15,17,22] contains 0 SCCs with 1 less node.