(0) Obligation:

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

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

Q is empty.

(1) DependencyPairsProof (EQUIVALENT transformation)

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

(2) Obligation:

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

APPEND(l1_2, l2_1) → MATCH_0(l1_2, l2_1, l1_2)
MATCH_0(l1_2, l2_1, Cons(x, l)) → APPEND(l, l2_1)
PART(a_4, l_3) → MATCH_1(a_4, l_3, l_3)
MATCH_1(a_4, l_3, Cons(x, l')) → MATCH_2(x, l', a_4, l_3, part(a_4, l'))
MATCH_1(a_4, l_3, Cons(x, l')) → PART(a_4, l')
MATCH_2(x, l', a_4, l_3, Pair(l1, l2)) → MATCH_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
MATCH_2(x, l', a_4, l_3, Pair(l1, l2)) → TEST(a_4, x)
QUICK(l_5) → MATCH_4(l_5, l_5)
MATCH_4(l_5, Cons(a, l')) → MATCH_5(a, l', l_5, part(a, l'))
MATCH_4(l_5, Cons(a, l')) → PART(a, l')
MATCH_5(a, l', l_5, Pair(l1, l2)) → APPEND(quick(l1), Cons(a, quick(l2)))
MATCH_5(a, l', l_5, Pair(l1, l2)) → QUICK(l1)
MATCH_5(a, l', l_5, Pair(l1, l2)) → QUICK(l2)

The TRS R consists of the following rules:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

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

(3) DependencyGraphProof (EQUIVALENT transformation)

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

(4) Complex Obligation (AND)

(5) Obligation:

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

MATCH_1(a_4, l_3, Cons(x, l')) → PART(a_4, l')
PART(a_4, l_3) → MATCH_1(a_4, l_3, l_3)

The TRS R consists of the following rules:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

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

(6) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


PART(a_4, l_3) → MATCH_1(a_4, l_3, l_3)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
MATCH_1(x1, x2, x3)  =  x3
Cons(x1, x2)  =  Cons(x2)
PART(x1, x2)  =  PART(x2)
test(x1, x2)  =  test(x1)
True  =  True
False  =  False
append(x1, x2)  =  append(x1, x2)
match_0(x1, x2, x3)  =  match_0(x2, x3)
Nil  =  Nil
part(x1, x2)  =  part(x2)
match_1(x1, x2, x3)  =  match_1(x3)
Pair(x1, x2)  =  Pair(x1, x2)
match_2(x1, x2, x3, x4, x5)  =  match_2(x5)
match_3(x1, x2, x3, x4, x5, x6, x7)  =  match_3(x1, x2)
quick(x1)  =  quick(x1)
match_4(x1, x2)  =  match_4(x2)
match_5(x1, x2, x3, x4)  =  match_5(x4)

Recursive Path Order [RPO].
Precedence:
Nil > Pair2 > [test1, True] > False
[quick1, match41, match51] > [append2, match02] > [Cons1, PART1, part1, match11, match21, match32] > Pair2 > [test1, True] > False


The following usable rules [FROCOS05] were oriented:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

(7) Obligation:

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

MATCH_1(a_4, l_3, Cons(x, l')) → PART(a_4, l')

The TRS R consists of the following rules:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

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

(8) DependencyGraphProof (EQUIVALENT transformation)

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

(9) TRUE

(10) Obligation:

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

MATCH_0(l1_2, l2_1, Cons(x, l)) → APPEND(l, l2_1)
APPEND(l1_2, l2_1) → MATCH_0(l1_2, l2_1, l1_2)

The TRS R consists of the following rules:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

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

(11) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


MATCH_0(l1_2, l2_1, Cons(x, l)) → APPEND(l, l2_1)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
MATCH_0(x1, x2, x3)  =  x3
Cons(x1, x2)  =  Cons(x1, x2)
APPEND(x1, x2)  =  x1
test(x1, x2)  =  test
True  =  True
False  =  False
append(x1, x2)  =  append(x1, x2)
match_0(x1, x2, x3)  =  match_0(x2, x3)
Nil  =  Nil
part(x1, x2)  =  part(x2)
match_1(x1, x2, x3)  =  match_1(x3)
Pair(x1, x2)  =  Pair(x1, x2)
match_2(x1, x2, x3, x4, x5)  =  match_2(x1, x2, x5)
match_3(x1, x2, x3, x4, x5, x6, x7)  =  match_3(x1, x2, x3, x4)
quick(x1)  =  quick(x1)
match_4(x1, x2)  =  match_4(x2)
match_5(x1, x2, x3, x4)  =  match_5(x1, x4)

Recursive Path Order [RPO].
Precedence:
[test, True] > False > [Cons2, part1, match11, match23, match34] > Pair2 > Nil
[quick1, match41, match52] > [append2, match02] > [Cons2, part1, match11, match23, match34] > Pair2 > Nil


The following usable rules [FROCOS05] were oriented:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

(12) Obligation:

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

APPEND(l1_2, l2_1) → MATCH_0(l1_2, l2_1, l1_2)

The TRS R consists of the following rules:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

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

(13) DependencyGraphProof (EQUIVALENT transformation)

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

(14) TRUE

(15) Obligation:

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

MATCH_5(a, l', l_5, Pair(l1, l2)) → QUICK(l1)
QUICK(l_5) → MATCH_4(l_5, l_5)
MATCH_4(l_5, Cons(a, l')) → MATCH_5(a, l', l_5, part(a, l'))
MATCH_5(a, l', l_5, Pair(l1, l2)) → QUICK(l2)

The TRS R consists of the following rules:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

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

(16) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


MATCH_5(a, l', l_5, Pair(l1, l2)) → QUICK(l1)
QUICK(l_5) → MATCH_4(l_5, l_5)
MATCH_4(l_5, Cons(a, l')) → MATCH_5(a, l', l_5, part(a, l'))
MATCH_5(a, l', l_5, Pair(l1, l2)) → QUICK(l2)
The remaining pairs can at least be oriented weakly.
Used ordering: Combined order from the following AFS and order.
MATCH_5(x1, x2, x3, x4)  =  MATCH_5(x4)
Pair(x1, x2)  =  Pair(x1, x2)
QUICK(x1)  =  QUICK(x1)
MATCH_4(x1, x2)  =  x2
Cons(x1, x2)  =  Cons(x1, x2)
part(x1, x2)  =  part(x2)
test(x1, x2)  =  test
True  =  True
False  =  False
append(x1, x2)  =  append(x1, x2)
match_0(x1, x2, x3)  =  match_0(x2, x3)
Nil  =  Nil
match_1(x1, x2, x3)  =  match_1(x3)
match_2(x1, x2, x3, x4, x5)  =  match_2(x1, x2, x5)
match_3(x1, x2, x3, x4, x5, x6, x7)  =  match_3(x1, x2, x3, x7)
quick(x1)  =  quick(x1)
match_4(x1, x2)  =  match_4(x2)
match_5(x1, x2, x3, x4)  =  match_5(x1, x2, x4)

Recursive Path Order [RPO].
Precedence:
[quick1, match41, match53] > [append2, match02] > [Cons2, part1, match11, match23, match34] > [MATCH51, QUICK1] > [test, True, False, Nil]
[quick1, match41, match53] > [append2, match02] > [Cons2, part1, match11, match23, match34] > Pair2 > [test, True, False, Nil]


The following usable rules [FROCOS05] were oriented:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

(17) Obligation:

Q DP problem:
P is empty.
The TRS R consists of the following rules:

test(x_0, y) → True
test(x_0, y) → False
append(l1_2, l2_1) → match_0(l1_2, l2_1, l1_2)
match_0(l1_2, l2_1, Nil) → l2_1
match_0(l1_2, l2_1, Cons(x, l)) → Cons(x, append(l, l2_1))
part(a_4, l_3) → match_1(a_4, l_3, l_3)
match_1(a_4, l_3, Nil) → Pair(Nil, Nil)
match_1(a_4, l_3, Cons(x, l')) → match_2(x, l', a_4, l_3, part(a_4, l'))
match_2(x, l', a_4, l_3, Pair(l1, l2)) → match_3(l1, l2, x, l', a_4, l_3, test(a_4, x))
match_3(l1, l2, x, l', a_4, l_3, False) → Pair(Cons(x, l1), l2)
match_3(l1, l2, x, l', a_4, l_3, True) → Pair(l1, Cons(x, l2))
quick(l_5) → match_4(l_5, l_5)
match_4(l_5, Nil) → Nil
match_4(l_5, Cons(a, l')) → match_5(a, l', l_5, part(a, l'))
match_5(a, l', l_5, Pair(l1, l2)) → append(quick(l1), Cons(a, quick(l2)))

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

(18) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(19) TRUE