0 QTRS
↳1 DependencyPairsProof (⇔)
↳2 QDP
↳3 DependencyGraphProof (⇔)
↳4 AND
↳5 QDP
↳6 QDPOrderProof (⇔)
↳7 QDP
↳8 QDPOrderProof (⇔)
↳9 QDP
↳10 PisEmptyProof (⇔)
↳11 TRUE
↳12 QDP
↳13 QDPOrderProof (⇔)
↳14 QDP
↳15 PisEmptyProof (⇔)
↳16 TRUE
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)
REV(++(x, y)) → ++1(rev(y), rev(x))
REV(++(x, y)) → REV(y)
REV(++(x, y)) → REV(x)
++1(.(x, y), z) → ++1(y, z)
++1(x, ++(y, z)) → ++1(++(x, y), z)
++1(x, ++(y, z)) → ++1(x, y)
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)
++1(x, ++(y, z)) → ++1(++(x, y), z)
++1(.(x, y), z) → ++1(y, z)
++1(x, ++(y, z)) → ++1(x, y)
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
++1(x, ++(y, z)) → ++1(++(x, y), z)
++1(x, ++(y, z)) → ++1(x, y)
++^11 > ++2 > .
rev1 > ++2 > .
rev1 > nil > .
make1 > nil > .
++^11: [1]
++2: [2,1]
.: []
rev1: multiset
nil: multiset
make1: multiset
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)
++1(.(x, y), z) → ++1(y, z)
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
++1(.(x, y), z) → ++1(y, z)
rev1 > ++2 > [.1, nil]
make1 > [.1, nil]
.1: [1]
rev1: multiset
nil: multiset
++2: [2,1]
make1: multiset
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)
REV(++(x, y)) → REV(x)
REV(++(x, y)) → REV(y)
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REV(++(x, y)) → REV(x)
REV(++(x, y)) → REV(y)
rev1 > [REV1, ++2] > .
rev1 > nil > .
make1 > nil > .
REV1: [1]
++2: [2,1]
rev1: multiset
nil: multiset
.: []
make1: multiset
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)
rev(nil) → nil
rev(rev(x)) → x
rev(++(x, y)) → ++(rev(y), rev(x))
++(nil, y) → y
++(x, nil) → x
++(.(x, y), z) → .(x, ++(y, z))
++(x, ++(y, z)) → ++(++(x, y), z)
make(x) → .(x, nil)