0 QTRS
↳1 Overlay + Local Confluence (⇔)
↳2 QTRS
↳3 DependencyPairsProof (⇔)
↳4 QDP
↳5 DependencyGraphProof (⇔)
↳6 AND
↳7 QDP
↳8 QDPOrderProof (⇔)
↳9 QDP
↳10 PisEmptyProof (⇔)
↳11 TRUE
↳12 QDP
↳13 QDPOrderProof (⇔)
↳14 QDP
↳15 DependencyGraphProof (⇔)
↳16 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(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(nil)
rev(cons(x0, x1))
rev1(0, nil)
rev1(s(x0), nil)
rev1(x0, cons(x1, x2))
rev2(x0, nil)
rev2(x0, cons(x1, x2))
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)))
rev(nil)
rev(cons(x0, x1))
rev1(0, nil)
rev1(s(x0), nil)
rev1(x0, cons(x1, x2))
rev2(x0, nil)
rev2(x0, cons(x1, x2))
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)))
rev(nil)
rev(cons(x0, x1))
rev1(0, nil)
rev1(s(x0), nil)
rev1(x0, cons(x1, x2))
rev2(x0, nil)
rev2(x0, cons(x1, x2))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REV1(x, cons(y, l)) → REV1(y, l)
trivial
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(nil)
rev(cons(x0, x1))
rev1(0, nil)
rev1(s(x0), nil)
rev1(x0, cons(x1, x2))
rev2(x0, nil)
rev2(x0, cons(x1, x2))
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)))
rev(nil)
rev(cons(x0, x1))
rev1(0, nil)
rev1(s(x0), nil)
rev1(x0, cons(x1, x2))
rev2(x0, nil)
rev2(x0, cons(x1, x2))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REV(cons(x, l)) → REV2(x, l)
REV2(x, cons(y, l)) → REV2(y, l)
[REV1, REV21] > [cons1, nil]
rev1 > [cons1, nil]
0 > [cons1, nil]
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))
REV2(x, cons(y, l)) → REV(cons(x, 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)))
rev(nil)
rev(cons(x0, x1))
rev1(0, nil)
rev1(s(x0), nil)
rev1(x0, cons(x1, x2))
rev2(x0, nil)
rev2(x0, cons(x1, x2))