NO Termination w.r.t. Q proof of /home/cern_httpd/provide/research/cycsrs/tpdb/TPDB-d9b80194f163/SRS_Standard/Secret_06_SRS/6-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(b(x))))) → begin(b(a(a(a(x)))))
rewrite(b(a(b(a(x))))) → begin(a(b(b(a(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)
b(a(a(a(rewrite(x))))) → a(a(a(b(begin(x)))))
a(b(a(b(rewrite(x))))) → a(b(b(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)
B(a(a(a(rewrite(x))))) → A(a(a(b(begin(x)))))
B(a(a(a(rewrite(x))))) → A(a(b(begin(x))))
B(a(a(a(rewrite(x))))) → A(b(begin(x)))
B(a(a(a(rewrite(x))))) → B(begin(x))
A(b(a(b(rewrite(x))))) → A(b(b(a(begin(x)))))
A(b(a(b(rewrite(x))))) → B(b(a(begin(x))))
A(b(a(b(rewrite(x))))) → B(a(begin(x)))
A(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)
b(a(a(a(rewrite(x))))) → a(a(a(b(begin(x)))))
a(b(a(b(rewrite(x))))) → a(b(b(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 18 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)
b(a(a(a(rewrite(x))))) → a(a(a(b(begin(x)))))
a(b(a(b(rewrite(x))))) → a(b(b(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) 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(Cb(x))) → BB(moveleft(x))


Used ordering: Polynomial interpretation [POLO]:

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

(11) Obligation:

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

BB(moveleft(Ca(x))) → BB(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.


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

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)
b(a(a(a(rewrite(x))))) → a(a(a(b(begin(x)))))
a(b(a(b(rewrite(x))))) → a(b(b(a(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:

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.

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

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


Used ordering: Polynomial interpretation [POLO]:

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

(20) Obligation:

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

BA(moveleft(Ca(x))) → BA(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.


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

POL(BA(x1)) = x1   
POL(Ca(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:

A(b(a(b(rewrite(x))))) → A(b(b(a(begin(x)))))
A(b(a(b(rewrite(x))))) → B(b(a(begin(x))))
B(a(a(a(rewrite(x))))) → A(a(a(b(begin(x)))))
A(b(a(b(rewrite(x))))) → B(a(begin(x)))
B(a(a(a(rewrite(x))))) → A(a(b(begin(x))))
B(a(a(a(rewrite(x))))) → A(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)
b(a(a(a(rewrite(x))))) → a(a(a(b(begin(x)))))
a(b(a(b(rewrite(x))))) → a(b(b(a(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:

A(b(a(b(rewrite(x))))) → A(b(b(a(begin(x)))))
A(b(a(b(rewrite(x))))) → B(b(a(begin(x))))
B(a(a(a(rewrite(x))))) → A(a(a(b(begin(x)))))
A(b(a(b(rewrite(x))))) → B(a(begin(x)))
B(a(a(a(rewrite(x))))) → A(a(b(begin(x))))
B(a(a(a(rewrite(x))))) → 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)))
a(b(a(b(rewrite(x))))) → a(b(b(a(begin(x)))))
b(guess(x)) → guess(Cb(x))
b(guess(x)) → wait(Bb(moveleft(x)))
b(wait(goright(x))) → wait(Bb(moveleft(x)))
b(a(a(a(rewrite(x))))) → a(a(a(b(begin(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)))
Ab(goright(x)) → goright(Cb(x))
Aa(goright(x)) → goright(Ca(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)))

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 6 less nodes.

(29) TRUE

(30) 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)
b(a(a(a(rewrite(x))))) → a(a(a(b(begin(x)))))
a(b(a(b(rewrite(x))))) → a(b(b(a(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(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.

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

(34) YES

(35) 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)
b(a(a(a(rewrite(x))))) → a(a(a(b(begin(x)))))
a(b(a(b(rewrite(x))))) → a(b(b(a(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(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.

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

(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))
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)
b(a(a(a(rewrite(x))))) → a(a(a(b(begin(x)))))
a(b(a(b(rewrite(x))))) → a(b(b(a(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(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(a(a(rewrite(x))))) → a(a(a(b(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(b(rewrite(x))))) → a(b(b(a(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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

END(wait(goright(Cb(cut(Da(Da(Da(rotate(x')))))))))END(finish(Cb(cut(Da(Da(Da(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