NO Termination w.r.t. Q proof of /home/cern_httpd/provide/research/cycsrs/tpdb/TPDB-d9b80194f163/SRS_Standard/Bouchare_06/06-rotate.srs

(0) Obligation:

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

begin(end(x)) → rewrite(end(x))
begin(a(x)) → rotate(cut(Ca(guess(x))))
begin(b(x)) → rotate(cut(Cb(guess(x))))
guess(a(x)) → Ca(guess(x))
guess(b(x)) → Cb(guess(x))
guess(a(x)) → moveleft(Ba(wait(x)))
guess(b(x)) → moveleft(Bb(wait(x)))
guess(end(x)) → finish(end(x))
Ca(moveleft(Ba(x))) → moveleft(Ba(Aa(x)))
Cb(moveleft(Ba(x))) → moveleft(Ba(Ab(x)))
Ca(moveleft(Bb(x))) → moveleft(Bb(Aa(x)))
Cb(moveleft(Bb(x))) → moveleft(Bb(Ab(x)))
cut(moveleft(Ba(x))) → Da(cut(goright(x)))
cut(moveleft(Bb(x))) → Db(cut(goright(x)))
goright(Aa(x)) → Ca(goright(x))
goright(Ab(x)) → Cb(goright(x))
goright(wait(a(x))) → moveleft(Ba(wait(x)))
goright(wait(b(x))) → moveleft(Bb(wait(x)))
goright(wait(end(x))) → finish(end(x))
Ca(finish(x)) → finish(a(x))
Cb(finish(x)) → finish(b(x))
cut(finish(x)) → finish2(x)
Da(finish2(x)) → finish2(a(x))
Db(finish2(x)) → finish2(b(x))
rotate(finish2(x)) → rewrite(x)
rewrite(a(a(a(x)))) → begin(b(b(a(x))))
rewrite(a(b(a(x)))) → begin(b(b(a(x))))
rewrite(b(a(b(x)))) → begin(a(a(b(x))))

Q is empty.

(1) QTRS Reverse (EQUIVALENT transformation)

We applied the QTRS Reverse Processor [REVERSE].

(2) Obligation:

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

end(begin(x)) → end(rewrite(x))
a(begin(x)) → guess(Ca(cut(rotate(x))))
b(begin(x)) → guess(Cb(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
b(guess(x)) → guess(Cb(x))
a(guess(x)) → wait(Ba(moveleft(x)))
b(guess(x)) → wait(Bb(moveleft(x)))
end(guess(x)) → end(finish(x))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))
Aa(goright(x)) → goright(Ca(x))
Ab(goright(x)) → goright(Cb(x))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
end(wait(goright(x))) → end(finish(x))
finish(Ca(x)) → a(finish(x))
finish(Cb(x)) → b(finish(x))
finish(cut(x)) → finish2(x)
finish2(Da(x)) → a(finish2(x))
finish2(Db(x)) → b(finish2(x))
finish2(rotate(x)) → rewrite(x)
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
b(a(b(rewrite(x)))) → b(a(a(begin(x))))

Q is empty.

(3) DependencyPairsProof (EQUIVALENT transformation)

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

(4) Obligation:

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

END(begin(x)) → END(rewrite(x))
A(guess(x)) → BA(moveleft(x))
B(guess(x)) → BB(moveleft(x))
END(guess(x)) → END(finish(x))
END(guess(x)) → FINISH(x)
BA(moveleft(Ca(x))) → AA(Ba(moveleft(x)))
BA(moveleft(Ca(x))) → BA(moveleft(x))
BA(moveleft(Cb(x))) → AB(Ba(moveleft(x)))
BA(moveleft(Cb(x))) → BA(moveleft(x))
BB(moveleft(Ca(x))) → AA(Bb(moveleft(x)))
BB(moveleft(Ca(x))) → BB(moveleft(x))
BB(moveleft(Cb(x))) → AB(Bb(moveleft(x)))
BB(moveleft(Cb(x))) → BB(moveleft(x))
A(wait(goright(x))) → BA(moveleft(x))
B(wait(goright(x))) → BB(moveleft(x))
END(wait(goright(x))) → END(finish(x))
END(wait(goright(x))) → FINISH(x)
FINISH(Ca(x)) → A(finish(x))
FINISH(Ca(x)) → FINISH(x)
FINISH(Cb(x)) → B(finish(x))
FINISH(Cb(x)) → FINISH(x)
FINISH(cut(x)) → FINISH2(x)
FINISH2(Da(x)) → A(finish2(x))
FINISH2(Da(x)) → FINISH2(x)
FINISH2(Db(x)) → B(finish2(x))
FINISH2(Db(x)) → FINISH2(x)
A(a(a(rewrite(x)))) → A(b(b(begin(x))))
A(a(a(rewrite(x)))) → B(b(begin(x)))
A(a(a(rewrite(x)))) → B(begin(x))
A(b(a(rewrite(x)))) → A(b(b(begin(x))))
A(b(a(rewrite(x)))) → B(b(begin(x)))
A(b(a(rewrite(x)))) → B(begin(x))
B(a(b(rewrite(x)))) → B(a(a(begin(x))))
B(a(b(rewrite(x)))) → A(a(begin(x)))
B(a(b(rewrite(x)))) → A(begin(x))

The TRS R consists of the following rules:

end(begin(x)) → end(rewrite(x))
a(begin(x)) → guess(Ca(cut(rotate(x))))
b(begin(x)) → guess(Cb(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
b(guess(x)) → guess(Cb(x))
a(guess(x)) → wait(Ba(moveleft(x)))
b(guess(x)) → wait(Bb(moveleft(x)))
end(guess(x)) → end(finish(x))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))
Aa(goright(x)) → goright(Ca(x))
Ab(goright(x)) → goright(Cb(x))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
end(wait(goright(x))) → end(finish(x))
finish(Ca(x)) → a(finish(x))
finish(Cb(x)) → b(finish(x))
finish(cut(x)) → finish2(x)
finish2(Da(x)) → a(finish2(x))
finish2(Db(x)) → b(finish2(x))
finish2(rotate(x)) → rewrite(x)
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
b(a(b(rewrite(x)))) → b(a(a(begin(x))))

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

(5) DependencyGraphProof (EQUIVALENT transformation)

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

(6) Complex Obligation (AND)

(7) Obligation:

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

BB(moveleft(Cb(x))) → BB(moveleft(x))
BB(moveleft(Ca(x))) → BB(moveleft(x))

The TRS R consists of the following rules:

end(begin(x)) → end(rewrite(x))
a(begin(x)) → guess(Ca(cut(rotate(x))))
b(begin(x)) → guess(Cb(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
b(guess(x)) → guess(Cb(x))
a(guess(x)) → wait(Ba(moveleft(x)))
b(guess(x)) → wait(Bb(moveleft(x)))
end(guess(x)) → end(finish(x))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))
Aa(goright(x)) → goright(Ca(x))
Ab(goright(x)) → goright(Cb(x))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
end(wait(goright(x))) → end(finish(x))
finish(Ca(x)) → a(finish(x))
finish(Cb(x)) → b(finish(x))
finish(cut(x)) → finish2(x)
finish2(Da(x)) → a(finish2(x))
finish2(Db(x)) → b(finish2(x))
finish2(rotate(x)) → rewrite(x)
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
b(a(b(rewrite(x)))) → b(a(a(begin(x))))

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

(8) 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.

(9) Obligation:

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

BB(moveleft(Cb(x))) → BB(moveleft(x))
BB(moveleft(Ca(x))) → BB(moveleft(x))

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

(10) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


BB(moveleft(Cb(x))) → BB(moveleft(x))
BB(moveleft(Ca(x))) → BB(moveleft(x))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(BB(x1)) = x1   
POL(Ca(x1)) = 1 + x1   
POL(Cb(x1)) = 1 + x1   
POL(moveleft(x1)) = x1   

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
none

(11) Obligation:

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

(12) PisEmptyProof (EQUIVALENT transformation)

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

(13) YES

(14) Obligation:

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

BA(moveleft(Cb(x))) → BA(moveleft(x))
BA(moveleft(Ca(x))) → BA(moveleft(x))

The TRS R consists of the following rules:

end(begin(x)) → end(rewrite(x))
a(begin(x)) → guess(Ca(cut(rotate(x))))
b(begin(x)) → guess(Cb(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
b(guess(x)) → guess(Cb(x))
a(guess(x)) → wait(Ba(moveleft(x)))
b(guess(x)) → wait(Bb(moveleft(x)))
end(guess(x)) → end(finish(x))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))
Aa(goright(x)) → goright(Ca(x))
Ab(goright(x)) → goright(Cb(x))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
end(wait(goright(x))) → end(finish(x))
finish(Ca(x)) → a(finish(x))
finish(Cb(x)) → b(finish(x))
finish(cut(x)) → finish2(x)
finish2(Da(x)) → a(finish2(x))
finish2(Db(x)) → b(finish2(x))
finish2(rotate(x)) → rewrite(x)
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
b(a(b(rewrite(x)))) → b(a(a(begin(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:

BA(moveleft(Cb(x))) → BA(moveleft(x))
BA(moveleft(Ca(x))) → BA(moveleft(x))

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

(17) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


BA(moveleft(Ca(x))) → BA(moveleft(x))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(BA(x1)) = 4·x1   
POL(Ca(x1)) = 5 + 2·x1   
POL(Cb(x1)) = 2·x1   
POL(moveleft(x1)) = 5·x1   

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
none

(18) Obligation:

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

BA(moveleft(Cb(x))) → BA(moveleft(x))

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

(19) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


BA(moveleft(Cb(x))) → BA(moveleft(x))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(BA(x1)) = x1   
POL(Cb(x1)) = 1 + x1   
POL(moveleft(x1)) = x1   

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
none

(20) Obligation:

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

(21) PisEmptyProof (EQUIVALENT transformation)

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

(22) YES

(23) Obligation:

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

A(a(a(rewrite(x)))) → B(b(begin(x)))
B(a(b(rewrite(x)))) → B(a(a(begin(x))))
B(a(b(rewrite(x)))) → A(a(begin(x)))
A(a(a(rewrite(x)))) → A(b(b(begin(x))))
A(b(a(rewrite(x)))) → A(b(b(begin(x))))
A(b(a(rewrite(x)))) → B(b(begin(x)))

The TRS R consists of the following rules:

end(begin(x)) → end(rewrite(x))
a(begin(x)) → guess(Ca(cut(rotate(x))))
b(begin(x)) → guess(Cb(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
b(guess(x)) → guess(Cb(x))
a(guess(x)) → wait(Ba(moveleft(x)))
b(guess(x)) → wait(Bb(moveleft(x)))
end(guess(x)) → end(finish(x))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))
Aa(goright(x)) → goright(Ca(x))
Ab(goright(x)) → goright(Cb(x))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
end(wait(goright(x))) → end(finish(x))
finish(Ca(x)) → a(finish(x))
finish(Cb(x)) → b(finish(x))
finish(cut(x)) → finish2(x)
finish2(Da(x)) → a(finish2(x))
finish2(Db(x)) → b(finish2(x))
finish2(rotate(x)) → rewrite(x)
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
b(a(b(rewrite(x)))) → b(a(a(begin(x))))

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

(24) 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.

(25) Obligation:

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

A(a(a(rewrite(x)))) → B(b(begin(x)))
B(a(b(rewrite(x)))) → B(a(a(begin(x))))
B(a(b(rewrite(x)))) → A(a(begin(x)))
A(a(a(rewrite(x)))) → A(b(b(begin(x))))
A(b(a(rewrite(x)))) → A(b(b(begin(x))))
A(b(a(rewrite(x)))) → B(b(begin(x)))

The TRS R consists of the following rules:

b(begin(x)) → guess(Cb(cut(rotate(x))))
b(guess(x)) → guess(Cb(x))
b(guess(x)) → wait(Bb(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
b(a(b(rewrite(x)))) → b(a(a(begin(x))))
a(begin(x)) → guess(Ca(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
a(guess(x)) → wait(Ba(moveleft(x)))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Ab(goright(x)) → goright(Cb(x))
Aa(goright(x)) → goright(Ca(x))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))

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

(26) DependencyGraphProof (EQUIVALENT transformation)

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

(27) TRUE

(28) Obligation:

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

FINISH2(Db(x)) → FINISH2(x)
FINISH2(Da(x)) → FINISH2(x)

The TRS R consists of the following rules:

end(begin(x)) → end(rewrite(x))
a(begin(x)) → guess(Ca(cut(rotate(x))))
b(begin(x)) → guess(Cb(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
b(guess(x)) → guess(Cb(x))
a(guess(x)) → wait(Ba(moveleft(x)))
b(guess(x)) → wait(Bb(moveleft(x)))
end(guess(x)) → end(finish(x))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))
Aa(goright(x)) → goright(Ca(x))
Ab(goright(x)) → goright(Cb(x))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
end(wait(goright(x))) → end(finish(x))
finish(Ca(x)) → a(finish(x))
finish(Cb(x)) → b(finish(x))
finish(cut(x)) → finish2(x)
finish2(Da(x)) → a(finish2(x))
finish2(Db(x)) → b(finish2(x))
finish2(rotate(x)) → rewrite(x)
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
b(a(b(rewrite(x)))) → b(a(a(begin(x))))

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

(29) 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.

(30) Obligation:

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

FINISH2(Db(x)) → FINISH2(x)
FINISH2(Da(x)) → FINISH2(x)

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

(31) 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:

  • FINISH2(Db(x)) → FINISH2(x)
    The graph contains the following edges 1 > 1

  • FINISH2(Da(x)) → FINISH2(x)
    The graph contains the following edges 1 > 1

(32) YES

(33) Obligation:

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

FINISH(Cb(x)) → FINISH(x)
FINISH(Ca(x)) → FINISH(x)

The TRS R consists of the following rules:

end(begin(x)) → end(rewrite(x))
a(begin(x)) → guess(Ca(cut(rotate(x))))
b(begin(x)) → guess(Cb(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
b(guess(x)) → guess(Cb(x))
a(guess(x)) → wait(Ba(moveleft(x)))
b(guess(x)) → wait(Bb(moveleft(x)))
end(guess(x)) → end(finish(x))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))
Aa(goright(x)) → goright(Ca(x))
Ab(goright(x)) → goright(Cb(x))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
end(wait(goright(x))) → end(finish(x))
finish(Ca(x)) → a(finish(x))
finish(Cb(x)) → b(finish(x))
finish(cut(x)) → finish2(x)
finish2(Da(x)) → a(finish2(x))
finish2(Db(x)) → b(finish2(x))
finish2(rotate(x)) → rewrite(x)
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
b(a(b(rewrite(x)))) → b(a(a(begin(x))))

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

(34) 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.

(35) Obligation:

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

FINISH(Cb(x)) → FINISH(x)
FINISH(Ca(x)) → FINISH(x)

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

(36) 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:

  • FINISH(Cb(x)) → FINISH(x)
    The graph contains the following edges 1 > 1

  • FINISH(Ca(x)) → FINISH(x)
    The graph contains the following edges 1 > 1

(37) YES

(38) Obligation:

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

END(wait(goright(x))) → END(finish(x))
END(guess(x)) → END(finish(x))

The TRS R consists of the following rules:

end(begin(x)) → end(rewrite(x))
a(begin(x)) → guess(Ca(cut(rotate(x))))
b(begin(x)) → guess(Cb(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
b(guess(x)) → guess(Cb(x))
a(guess(x)) → wait(Ba(moveleft(x)))
b(guess(x)) → wait(Bb(moveleft(x)))
end(guess(x)) → end(finish(x))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))
Aa(goright(x)) → goright(Ca(x))
Ab(goright(x)) → goright(Cb(x))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
end(wait(goright(x))) → end(finish(x))
finish(Ca(x)) → a(finish(x))
finish(Cb(x)) → b(finish(x))
finish(cut(x)) → finish2(x)
finish2(Da(x)) → a(finish2(x))
finish2(Db(x)) → b(finish2(x))
finish2(rotate(x)) → rewrite(x)
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
b(a(b(rewrite(x)))) → b(a(a(begin(x))))

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

(39) 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.

(40) Obligation:

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

END(wait(goright(x))) → END(finish(x))
END(guess(x)) → END(finish(x))

The TRS R consists of the following rules:

finish(Ca(x)) → a(finish(x))
finish(Cb(x)) → b(finish(x))
finish(cut(x)) → finish2(x)
finish2(Da(x)) → a(finish2(x))
finish2(Db(x)) → b(finish2(x))
finish2(rotate(x)) → rewrite(x)
b(begin(x)) → guess(Cb(cut(rotate(x))))
b(guess(x)) → guess(Cb(x))
b(guess(x)) → wait(Bb(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
b(a(b(rewrite(x)))) → b(a(a(begin(x))))
a(begin(x)) → guess(Ca(cut(rotate(x))))
a(guess(x)) → guess(Ca(x))
a(guess(x)) → wait(Ba(moveleft(x)))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
a(b(a(rewrite(x)))) → a(b(b(begin(x))))
a(a(a(rewrite(x)))) → a(b(b(begin(x))))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Ab(goright(x)) → goright(Cb(x))
Aa(goright(x)) → goright(Ca(x))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))

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

(41) NonTerminationLoopProof (COMPLETE transformation)

We used the non-termination processor [FROCOS05] to show that the DP problem is infinite.
Found a loop by narrowing to the left:

s = END(finish(Cb(cut(Da(Db(rotate(x'))))))) evaluates to t =END(finish(Cb(cut(Da(Db(rotate(x')))))))

Thus s starts an infinite chain as s semiunifies with t with the following substitutions:
  • Matcher: [ ]
  • Semiunifier: [ ]




Rewriting sequence

END(finish(Cb(cut(Da(Db(rotate(x')))))))END(b(finish(cut(Da(Db(rotate(x')))))))
with rule finish(Cb(x)) → b(finish(x)) at position [0] and matcher [x / cut(Da(Db(rotate(x'))))]

END(b(finish(cut(Da(Db(rotate(x')))))))END(b(finish2(Da(Db(rotate(x'))))))
with rule finish(cut(x)) → finish2(x) at position [0,0] and matcher [x / Da(Db(rotate(x')))]

END(b(finish2(Da(Db(rotate(x'))))))END(b(a(finish2(Db(rotate(x'))))))
with rule finish2(Da(x)) → a(finish2(x)) at position [0,0] and matcher [x / Db(rotate(x'))]

END(b(a(finish2(Db(rotate(x'))))))END(b(a(b(finish2(rotate(x'))))))
with rule finish2(Db(x)) → b(finish2(x)) at position [0,0,0] and matcher [x / rotate(x')]

END(b(a(b(finish2(rotate(x'))))))END(b(a(b(rewrite(x')))))
with rule finish2(rotate(x'')) → rewrite(x'') at position [0,0,0,0] and matcher [x'' / x']

END(b(a(b(rewrite(x')))))END(b(a(a(begin(x')))))
with rule b(a(b(rewrite(x)))) → b(a(a(begin(x)))) at position [0] and matcher [x / x']

END(b(a(a(begin(x')))))END(b(a(guess(Ca(cut(rotate(x')))))))
with rule a(begin(x'')) → guess(Ca(cut(rotate(x'')))) at position [0,0,0] and matcher [x'' / x']

END(b(a(guess(Ca(cut(rotate(x')))))))END(b(wait(Ba(moveleft(Ca(cut(rotate(x'))))))))
with rule a(guess(x'')) → wait(Ba(moveleft(x''))) at position [0,0] and matcher [x'' / Ca(cut(rotate(x')))]

END(b(wait(Ba(moveleft(Ca(cut(rotate(x'))))))))END(b(wait(Aa(Ba(moveleft(cut(rotate(x'))))))))
with rule Ba(moveleft(Ca(x''))) → Aa(Ba(moveleft(x''))) at position [0,0,0] and matcher [x'' / cut(rotate(x'))]

END(b(wait(Aa(Ba(moveleft(cut(rotate(x'))))))))END(b(wait(Aa(goright(cut(Da(rotate(x'))))))))
with rule Ba(moveleft(cut(x''))) → goright(cut(Da(x''))) at position [0,0,0,0] and matcher [x'' / rotate(x')]

END(b(wait(Aa(goright(cut(Da(rotate(x'))))))))END(b(wait(goright(Ca(cut(Da(rotate(x'))))))))
with rule Aa(goright(x'')) → goright(Ca(x'')) at position [0,0,0] and matcher [x'' / cut(Da(rotate(x')))]

END(b(wait(goright(Ca(cut(Da(rotate(x'))))))))END(wait(Bb(moveleft(Ca(cut(Da(rotate(x'))))))))
with rule b(wait(goright(x''))) → wait(Bb(moveleft(x''))) at position [0] and matcher [x'' / Ca(cut(Da(rotate(x'))))]

END(wait(Bb(moveleft(Ca(cut(Da(rotate(x'))))))))END(wait(Aa(Bb(moveleft(cut(Da(rotate(x'))))))))
with rule Bb(moveleft(Ca(x''))) → Aa(Bb(moveleft(x''))) at position [0,0] and matcher [x'' / cut(Da(rotate(x')))]

END(wait(Aa(Bb(moveleft(cut(Da(rotate(x'))))))))END(wait(Aa(goright(cut(Db(Da(rotate(x'))))))))
with rule Bb(moveleft(cut(x''))) → goright(cut(Db(x''))) at position [0,0,0] and matcher [x'' / Da(rotate(x'))]

END(wait(Aa(goright(cut(Db(Da(rotate(x'))))))))END(wait(goright(Ca(cut(Db(Da(rotate(x'))))))))
with rule Aa(goright(x'')) → goright(Ca(x'')) at position [0,0] and matcher [x'' / cut(Db(Da(rotate(x'))))]

END(wait(goright(Ca(cut(Db(Da(rotate(x'))))))))END(finish(Ca(cut(Db(Da(rotate(x')))))))
with rule END(wait(goright(x''))) → END(finish(x'')) at position [] and matcher [x'' / Ca(cut(Db(Da(rotate(x')))))]

END(finish(Ca(cut(Db(Da(rotate(x')))))))END(a(finish(cut(Db(Da(rotate(x')))))))
with rule finish(Ca(x'')) → a(finish(x'')) at position [0] and matcher [x'' / cut(Db(Da(rotate(x'))))]

END(a(finish(cut(Db(Da(rotate(x')))))))END(a(finish2(Db(Da(rotate(x'))))))
with rule finish(cut(x'')) → finish2(x'') at position [0,0] and matcher [x'' / Db(Da(rotate(x')))]

END(a(finish2(Db(Da(rotate(x'))))))END(a(b(finish2(Da(rotate(x'))))))
with rule finish2(Db(x'')) → b(finish2(x'')) at position [0,0] and matcher [x'' / Da(rotate(x'))]

END(a(b(finish2(Da(rotate(x'))))))END(a(b(a(finish2(rotate(x'))))))
with rule finish2(Da(x'')) → a(finish2(x'')) at position [0,0,0] and matcher [x'' / rotate(x')]

END(a(b(a(finish2(rotate(x'))))))END(a(b(a(rewrite(x')))))
with rule finish2(rotate(x)) → rewrite(x) at position [0,0,0,0] and matcher [x / x']

END(a(b(a(rewrite(x')))))END(a(b(b(begin(x')))))
with rule a(b(a(rewrite(x'')))) → a(b(b(begin(x'')))) at position [0] and matcher [x'' / x']

END(a(b(b(begin(x')))))END(a(b(guess(Cb(cut(rotate(x')))))))
with rule b(begin(x)) → guess(Cb(cut(rotate(x)))) at position [0,0,0] and matcher [x / x']

END(a(b(guess(Cb(cut(rotate(x')))))))END(a(wait(Bb(moveleft(Cb(cut(rotate(x'))))))))
with rule b(guess(x)) → wait(Bb(moveleft(x))) at position [0,0] and matcher [x / Cb(cut(rotate(x')))]

END(a(wait(Bb(moveleft(Cb(cut(rotate(x'))))))))END(a(wait(Ab(Bb(moveleft(cut(rotate(x'))))))))
with rule Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x))) at position [0,0,0] and matcher [x / cut(rotate(x'))]

END(a(wait(Ab(Bb(moveleft(cut(rotate(x'))))))))END(a(wait(Ab(goright(cut(Db(rotate(x'))))))))
with rule Bb(moveleft(cut(x''))) → goright(cut(Db(x''))) at position [0,0,0,0] and matcher [x'' / rotate(x')]

END(a(wait(Ab(goright(cut(Db(rotate(x'))))))))END(a(wait(goright(Cb(cut(Db(rotate(x'))))))))
with rule Ab(goright(x'')) → goright(Cb(x'')) at position [0,0,0] and matcher [x'' / cut(Db(rotate(x')))]

END(a(wait(goright(Cb(cut(Db(rotate(x'))))))))END(wait(Ba(moveleft(Cb(cut(Db(rotate(x'))))))))
with rule a(wait(goright(x''))) → wait(Ba(moveleft(x''))) at position [0] and matcher [x'' / Cb(cut(Db(rotate(x'))))]

END(wait(Ba(moveleft(Cb(cut(Db(rotate(x'))))))))END(wait(Ab(Ba(moveleft(cut(Db(rotate(x'))))))))
with rule Ba(moveleft(Cb(x''))) → Ab(Ba(moveleft(x''))) at position [0,0] and matcher [x'' / cut(Db(rotate(x')))]

END(wait(Ab(Ba(moveleft(cut(Db(rotate(x'))))))))END(wait(Ab(goright(cut(Da(Db(rotate(x'))))))))
with rule Ba(moveleft(cut(x))) → goright(cut(Da(x))) at position [0,0,0] and matcher [x / Db(rotate(x'))]

END(wait(Ab(goright(cut(Da(Db(rotate(x'))))))))END(wait(goright(Cb(cut(Da(Db(rotate(x'))))))))
with rule Ab(goright(x'')) → goright(Cb(x'')) at position [0,0] and matcher [x'' / cut(Da(Db(rotate(x'))))]

END(wait(goright(Cb(cut(Da(Db(rotate(x'))))))))END(finish(Cb(cut(Da(Db(rotate(x')))))))
with rule END(wait(goright(x))) → END(finish(x))

Now applying the matcher to the start term leads to a term which is equal to the last term in the rewriting sequence


All these steps are and every following step will be a correct step w.r.t to Q.



(42) NO