0 QTRS
↳1 AAECC Innermost (⇔)
↳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 PisEmptyProof (⇔)
↳16 TRUE
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
car(.(x, y)) → x
cdr(.(x, y)) → y
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
null(nil) → true
null(.(x, y)) → false
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)
REV(.(x, y)) → ++1(rev(y), .(x, nil))
REV(.(x, y)) → REV(y)
++1(.(x, y), z) → ++1(y, z)
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)
++1(.(x, y), z) → ++1(y, z)
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)
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, ++2] > [nil, true]
rev1 > [.2, ++2] > false
null1 > [nil, true]
null1 > false
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)
REV(.(x, y)) → REV(y)
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REV(.(x, y)) → REV(y)
rev1 > [.2, ++2] > [nil, true]
null1 > [nil, true]
null1 > false
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil) → nil
rev(.(x, y)) → ++(rev(y), .(x, nil))
car(.(x, y)) → x
cdr(.(x, y)) → y
null(nil) → true
null(.(x, y)) → false
++(nil, y) → y
++(.(x, y), z) → .(x, ++(y, z))
rev(nil)
rev(.(x0, x1))
car(.(x0, x1))
cdr(.(x0, x1))
null(nil)
null(.(x0, x1))
++(nil, x0)
++(.(x0, x1), x2)