(0) Obligation:

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

top(sent(x)) → top(check(rest(x)))
rest(nil) → sent(nil)
rest(cons(x, y)) → sent(y)
check(sent(x)) → sent(check(x))
check(rest(x)) → rest(check(x))
check(cons(x, y)) → cons(check(x), y)
check(cons(x, y)) → cons(x, check(y))
check(cons(x, y)) → cons(x, y)

Q is empty.

(1) QTRSRRRProof (EQUIVALENT transformation)

Used ordering:
Polynomial interpretation [POLO]:

POL(check(x1)) = x1   
POL(cons(x1, x2)) = 1 + x1 + x2   
POL(nil) = 0   
POL(rest(x1)) = x1   
POL(sent(x1)) = x1   
POL(top(x1)) = x1   
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:

rest(cons(x, y)) → sent(y)


(2) Obligation:

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

top(sent(x)) → top(check(rest(x)))
rest(nil) → sent(nil)
check(sent(x)) → sent(check(x))
check(rest(x)) → rest(check(x))
check(cons(x, y)) → cons(check(x), y)
check(cons(x, y)) → cons(x, check(y))
check(cons(x, y)) → cons(x, y)

Q is empty.

(3) QTRSRRRProof (EQUIVALENT transformation)

Used ordering:
Polynomial interpretation [POLO]:

POL(check(x1)) = 2·x1   
POL(cons(x1, x2)) = 2 + x1 + 2·x2   
POL(nil) = 0   
POL(rest(x1)) = x1   
POL(sent(x1)) = 2·x1   
POL(top(x1)) = 2·x1   
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:

check(cons(x, y)) → cons(check(x), y)
check(cons(x, y)) → cons(x, check(y))
check(cons(x, y)) → cons(x, y)


(4) Obligation:

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

top(sent(x)) → top(check(rest(x)))
rest(nil) → sent(nil)
check(sent(x)) → sent(check(x))
check(rest(x)) → rest(check(x))

Q is empty.

(5) DependencyPairsProof (EQUIVALENT transformation)

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

(6) Obligation:

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

TOP(sent(x)) → TOP(check(rest(x)))
TOP(sent(x)) → CHECK(rest(x))
TOP(sent(x)) → REST(x)
CHECK(sent(x)) → CHECK(x)
CHECK(rest(x)) → REST(check(x))
CHECK(rest(x)) → CHECK(x)

The TRS R consists of the following rules:

top(sent(x)) → top(check(rest(x)))
rest(nil) → sent(nil)
check(sent(x)) → sent(check(x))
check(rest(x)) → rest(check(x))

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

(7) DependencyGraphProof (EQUIVALENT transformation)

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

(8) Complex Obligation (AND)

(9) Obligation:

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

CHECK(rest(x)) → CHECK(x)
CHECK(sent(x)) → CHECK(x)

The TRS R consists of the following rules:

top(sent(x)) → top(check(rest(x)))
rest(nil) → sent(nil)
check(sent(x)) → sent(check(x))
check(rest(x)) → rest(check(x))

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

(10) UsableRulesProof (EQUIVALENT transformation)

We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.

(11) Obligation:

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

CHECK(rest(x)) → CHECK(x)
CHECK(sent(x)) → CHECK(x)

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

(12) QDPSizeChangeProof (EQUIVALENT transformation)

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

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

  • CHECK(rest(x)) → CHECK(x)
    The graph contains the following edges 1 > 1

  • CHECK(sent(x)) → CHECK(x)
    The graph contains the following edges 1 > 1

(13) TRUE

(14) Obligation:

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

TOP(sent(x)) → TOP(check(rest(x)))

The TRS R consists of the following rules:

top(sent(x)) → top(check(rest(x)))
rest(nil) → sent(nil)
check(sent(x)) → sent(check(x))
check(rest(x)) → rest(check(x))

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

(15) UsableRulesProof (EQUIVALENT transformation)

We can use the usable rules and reduction pair processor [LPAR04] with the Ce-compatible extension of the polynomial order that maps every function symbol to the sum of its arguments. Then, we can delete all non-usable rules [FROCOS05] from R.

(16) Obligation:

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

TOP(sent(x)) → TOP(check(rest(x)))

The TRS R consists of the following rules:

rest(nil) → sent(nil)
check(sent(x)) → sent(check(x))
check(rest(x)) → rest(check(x))

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

(17) RFCMatchBoundsDPProof (EQUIVALENT transformation)

Finiteness of the DP problem can be shown by a matchbound of 2.
As the DP problem is minimal we only have to initialize the certificate graph by the rules of P:

TOP(sent(x)) → TOP(check(rest(x)))

To find matches we regarded all rules of R and P:

rest(nil) → sent(nil)
check(sent(x)) → sent(check(x))
check(rest(x)) → rest(check(x))
TOP(sent(x)) → TOP(check(rest(x)))

The certificate found is represented by the following graph.

The certificate consists of the following enumerated nodes:

9162748, 9162749, 9162751, 9162750, 9162752, 9162753, 9162754, 9162755, 9162756, 9162757

Node 9162748 is start node and node 9162749 is final node.

Those nodes are connect through the following edges:

  • 9162748 to 9162750 labelled TOP_1(0)
  • 9162748 to 9162755 labelled TOP_1(1)
  • 9162749 to 9162749 labelled #_1(0)
  • 9162751 to 9162749 labelled rest_1(0)
  • 9162751 to 9162753 labelled sent_1(1)
  • 9162750 to 9162751 labelled check_1(0)
  • 9162750 to 9162752 labelled rest_1(1)
  • 9162750 to 9162754 labelled sent_1(1)
  • 9162752 to 9162749 labelled check_1(1)
  • 9162752 to 9162752 labelled sent_1(1), rest_1(1)
  • 9162753 to 9162749 labelled nil(1)
  • 9162754 to 9162753 labelled check_1(1)
  • 9162755 to 9162756 labelled check_1(1)
  • 9162755 to 9162757 labelled rest_1(2)
  • 9162756 to 9162754 labelled rest_1(1)
  • 9162757 to 9162754 labelled check_1(2)

(18) TRUE