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

(0) Obligation:

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

begin(end(x)) → rewrite(end(x))
begin(b(x)) → rotate(cut(Cb(guess(x))))
begin(a(x)) → rotate(cut(Ca(guess(x))))
guess(b(x)) → Cb(guess(x))
guess(a(x)) → Ca(guess(x))
guess(b(x)) → moveleft(Bb(wait(x)))
guess(a(x)) → moveleft(Ba(wait(x)))
guess(end(x)) → finish(end(x))
Cb(moveleft(Bb(x))) → moveleft(Bb(Ab(x)))
Ca(moveleft(Bb(x))) → moveleft(Bb(Aa(x)))
Cb(moveleft(Ba(x))) → moveleft(Ba(Ab(x)))
Ca(moveleft(Ba(x))) → moveleft(Ba(Aa(x)))
cut(moveleft(Bb(x))) → Db(cut(goright(x)))
cut(moveleft(Ba(x))) → Da(cut(goright(x)))
goright(Ab(x)) → Cb(goright(x))
goright(Aa(x)) → Ca(goright(x))
goright(wait(b(x))) → moveleft(Bb(wait(x)))
goright(wait(a(x))) → moveleft(Ba(wait(x)))
goright(wait(end(x))) → finish(end(x))
Cb(finish(x)) → finish(b(x))
Ca(finish(x)) → finish(a(x))
cut(finish(x)) → finish2(x)
Db(finish2(x)) → finish2(b(x))
Da(finish2(x)) → finish2(a(x))
rotate(finish2(x)) → rewrite(x)
rewrite(b(b(a(a(b(x)))))) → begin(b(a(a(b(b(x))))))
rewrite(b(a(a(a(b(b(b(x)))))))) → begin(b(b(b(a(a(a(b(x))))))))
rewrite(b(a(b(a(a(b(x))))))) → begin(b(a(b(b(a(a(a(b(x)))))))))
rewrite(b(a(a(a(b(a(b(x)))))))) → begin(b(a(a(b(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))
b(begin(x)) → guess(Cb(cut(rotate(x))))
a(begin(x)) → guess(Ca(cut(rotate(x))))
b(guess(x)) → guess(Cb(x))
a(guess(x)) → guess(Ca(x))
b(guess(x)) → wait(Bb(moveleft(x)))
a(guess(x)) → wait(Ba(moveleft(x)))
end(guess(x)) → end(finish(x))
Bb(moveleft(Cb(x))) → Ab(Bb(moveleft(x)))
Bb(moveleft(Ca(x))) → Aa(Bb(moveleft(x)))
Ba(moveleft(Cb(x))) → Ab(Ba(moveleft(x)))
Ba(moveleft(Ca(x))) → Aa(Ba(moveleft(x)))
Bb(moveleft(cut(x))) → goright(cut(Db(x)))
Ba(moveleft(cut(x))) → goright(cut(Da(x)))
Ab(goright(x)) → goright(Cb(x))
Aa(goright(x)) → goright(Ca(x))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
a(wait(goright(x))) → wait(Ba(moveleft(x)))
end(wait(goright(x))) → end(finish(x))
finish(Cb(x)) → b(finish(x))
finish(Ca(x)) → a(finish(x))
finish(cut(x)) → finish2(x)
finish2(Db(x)) → b(finish2(x))
finish2(Da(x)) → a(finish2(x))
finish2(rotate(x)) → rewrite(x)
b(a(a(b(b(rewrite(x)))))) → b(b(a(a(b(begin(x))))))
b(b(b(a(a(a(b(rewrite(x)))))))) → b(a(a(a(b(b(b(begin(x))))))))
b(a(a(b(a(b(rewrite(x))))))) → b(a(a(a(b(b(a(b(begin(x)))))))))
b(a(b(a(a(a(b(rewrite(x)))))))) → b(a(b(a(a(b(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))
B(guess(x)) → BB(moveleft(x))
A(guess(x)) → BA(moveleft(x))
END(guess(x)) → END(finish(x))
END(guess(x)) → FINISH(x)
BB(moveleft(Cb(x))) → AB(Bb(moveleft(x)))
BB(moveleft(Cb(x))) → BB(moveleft(x))
BB(moveleft(Ca(x))) → AA(Bb(moveleft(x)))
BB(moveleft(Ca(x))) → BB(moveleft(x))
BA(moveleft(Cb(x))) → AB(Ba(moveleft(x)))
BA(moveleft(Cb(x))) → BA(moveleft(x))
BA(moveleft(Ca(x))) → AA(Ba(moveleft(x)))
BA(moveleft(Ca(x))) → BA(moveleft(x))
B(wait(goright(x))) → BB(moveleft(x))
A(wait(goright(x))) → BA(moveleft(x))
END(wait(goright(x))) → END(finish(x))
END(wait(goright(x))) → FINISH(x)
FINISH(Cb(x)) → B(finish(x))
FINISH(Cb(x)) → FINISH(x)
FINISH(Ca(x)) → A(finish(x))
FINISH(Ca(x)) → FINISH(x)
FINISH(cut(x)) → FINISH2(x)
FINISH2(Db(x)) → B(finish2(x))
FINISH2(Db(x)) → FINISH2(x)
FINISH2(Da(x)) → A(finish2(x))
FINISH2(Da(x)) → FINISH2(x)
B(a(a(b(b(rewrite(x)))))) → B(b(a(a(b(begin(x))))))
B(a(a(b(b(rewrite(x)))))) → B(a(a(b(begin(x)))))
B(a(a(b(b(rewrite(x)))))) → A(a(b(begin(x))))
B(a(a(b(b(rewrite(x)))))) → A(b(begin(x)))
B(a(a(b(b(rewrite(x)))))) → B(begin(x))
B(b(b(a(a(a(b(rewrite(x)))))))) → B(a(a(a(b(b(b(begin(x))))))))
B(b(b(a(a(a(b(rewrite(x)))))))) → A(a(a(b(b(b(begin(x)))))))
B(b(b(a(a(a(b(rewrite(x)))))))) → A(a(b(b(b(begin(x))))))
B(b(b(a(a(a(b(rewrite(x)))))))) → A(b(b(b(begin(x)))))
B(b(b(a(a(a(b(rewrite(x)))))))) → B(b(b(begin(x))))
B(b(b(a(a(a(b(rewrite(x)))))))) → B(b(begin(x)))
B(b(b(a(a(a(b(rewrite(x)))))))) → B(begin(x))
B(a(a(b(a(b(rewrite(x))))))) → B(a(a(a(b(b(a(b(begin(x)))))))))
B(a(a(b(a(b(rewrite(x))))))) → A(a(a(b(b(a(b(begin(x))))))))
B(a(a(b(a(b(rewrite(x))))))) → A(a(b(b(a(b(begin(x)))))))
B(a(a(b(a(b(rewrite(x))))))) → A(b(b(a(b(begin(x))))))
B(a(a(b(a(b(rewrite(x))))))) → B(b(a(b(begin(x)))))
B(a(a(b(a(b(rewrite(x))))))) → B(a(b(begin(x))))
B(a(a(b(a(b(rewrite(x))))))) → A(b(begin(x)))
B(a(a(b(a(b(rewrite(x))))))) → B(begin(x))
B(a(b(a(a(a(b(rewrite(x)))))))) → B(a(b(a(a(b(begin(x)))))))
B(a(b(a(a(a(b(rewrite(x)))))))) → A(b(a(a(b(begin(x))))))
B(a(b(a(a(a(b(rewrite(x)))))))) → B(a(a(b(begin(x)))))
B(a(b(a(a(a(b(rewrite(x)))))))) → A(a(b(begin(x))))
B(a(b(a(a(a(b(rewrite(x)))))))) → A(b(begin(x)))
B(a(b(a(a(a(b(rewrite(x)))))))) → B(begin(x))

The TRS R consists of the following rules:

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

(6) Complex Obligation (AND)

(7) Obligation:

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

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

The TRS R consists of the following rules:

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

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

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

(10) MRRProof (EQUIVALENT transformation)

By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented.
Strictly oriented dependency pairs:

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


Used ordering: Polynomial interpretation [POLO]:

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

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

(12) 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

(13) Obligation:

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

(14) PisEmptyProof (EQUIVALENT transformation)

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

(15) YES

(16) Obligation:

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

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

The TRS R consists of the following rules:

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

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

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

(18) Obligation:

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

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

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

(19) MRRProof (EQUIVALENT transformation)

By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented.
Strictly oriented dependency pairs:

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


Used ordering: Polynomial interpretation [POLO]:

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

(20) Obligation:

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

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

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

(21) 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))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(BB(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

(22) Obligation:

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

(23) PisEmptyProof (EQUIVALENT transformation)

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

(24) YES

(25) Obligation:

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

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

The TRS R consists of the following rules:

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

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

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

(27) Obligation:

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

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

The TRS R consists of the following rules:

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

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

(28) DependencyGraphProof (EQUIVALENT transformation)

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

(29) TRUE

(30) Obligation:

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

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

The TRS R consists of the following rules:

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

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

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

(32) Obligation:

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

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

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

(33) QDPSizeChangeProof (EQUIVALENT transformation)

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

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

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

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

(34) YES

(35) Obligation:

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

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

The TRS R consists of the following rules:

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

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

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

(37) Obligation:

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

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

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

(38) 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(Ca(x)) → FINISH(x)
    The graph contains the following edges 1 > 1

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

(39) YES

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

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

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

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

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

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

(43) 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(Ca(Ca(Cb(cut(Db(rotate(x))))))))) evaluates to t =END(finish(Cb(Ca(Ca(Cb(cut(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(Ca(Ca(Cb(cut(Db(rotate(x)))))))))END(b(finish(Ca(Ca(Cb(cut(Db(rotate(x)))))))))
with rule finish(Cb(x')) → b(finish(x')) at position [0] and matcher [x' / Ca(Ca(Cb(cut(Db(rotate(x))))))]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

END(wait(goright(Cb(Ca(Ca(Cb(cut(Db(rotate(x))))))))))END(finish(Cb(Ca(Ca(Cb(cut(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.



(44) NO