0 QTRS
↳1 DependencyPairsProof (⇔)
↳2 QDP
↳3 DependencyGraphProof (⇔)
↳4 AND
↳5 QDP
↳6 QDPSizeChangeProof (⇔)
↳7 TRUE
↳8 QDP
↳9 QDPSizeChangeProof (⇔)
↳10 TRUE
rev(nil) → nil
rev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))
rev1(0, nil) → 0
rev1(s(x), nil) → s(x)
rev1(x, cons(y, l)) → rev1(y, l)
rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))
REV(cons(x, l)) → REV1(x, l)
REV(cons(x, l)) → REV2(x, l)
REV1(x, cons(y, l)) → REV1(y, l)
REV2(x, cons(y, l)) → REV(cons(x, rev2(y, l)))
REV2(x, cons(y, l)) → REV2(y, l)
rev(nil) → nil
rev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))
rev1(0, nil) → 0
rev1(s(x), nil) → s(x)
rev1(x, cons(y, l)) → rev1(y, l)
rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))
REV1(x, cons(y, l)) → REV1(y, l)
rev(nil) → nil
rev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))
rev1(0, nil) → 0
rev1(s(x), nil) → s(x)
rev1(x, cons(y, l)) → rev1(y, l)
rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))
Order:Homeomorphic Embedding Order
AFS:
cons(x1, x2) = cons(x2)
From the DPs we obtained the following set of size-change graphs:
We oriented the following set of usable rules [AAECC05,FROCOS05].
none
REV(cons(x, l)) → REV2(x, l)
REV2(x, cons(y, l)) → REV(cons(x, rev2(y, l)))
REV2(x, cons(y, l)) → REV2(y, l)
rev(nil) → nil
rev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))
rev1(0, nil) → 0
rev1(s(x), nil) → s(x)
rev1(x, cons(y, l)) → rev1(y, l)
rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))
Order:Polynomial interpretation [POLO]:
POL(cons(x1, x2)) = 1 + x2
POL(nil) = 0
POL(rev(x1)) = x1
POL(rev1(x1, x2)) = 0
POL(rev2(x1, x2)) = x2
From the DPs we obtained the following set of size-change graphs:
We oriented the following set of usable rules [AAECC05,FROCOS05].
rev2(x, nil) → nil
rev2(x, cons(y, l)) → rev(cons(x, rev2(y, l)))
rev(cons(x, l)) → cons(rev1(x, l), rev2(x, l))