YES

We show the termination of the TRS R:

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

-- SCC decomposition.

Consider the dependency pair problem (P, R), where P consists of

p1: rev#(++(x,y)) -> ++#(rev(y),rev(x))
p2: rev#(++(x,y)) -> rev#(y)
p3: rev#(++(x,y)) -> rev#(x)
p4: ++#(.(x,y),z) -> ++#(y,z)
p5: ++#(x,++(y,z)) -> ++#(++(x,y),z)
p6: ++#(x,++(y,z)) -> ++#(x,y)

and R consists of:

r1: rev(nil()) -> nil()
r2: rev(rev(x)) -> x
r3: rev(++(x,y)) -> ++(rev(y),rev(x))
r4: ++(nil(),y) -> y
r5: ++(x,nil()) -> x
r6: ++(.(x,y),z) -> .(x,++(y,z))
r7: ++(x,++(y,z)) -> ++(++(x,y),z)
r8: make(x) -> .(x,nil())

The estimated dependency graph contains the following SCCs:

  {p2, p3}
  {p4, p5, p6}


-- Reduction pair.

Consider the dependency pair problem (P, R), where P consists of

p1: rev#(++(x,y)) -> rev#(x)
p2: rev#(++(x,y)) -> rev#(y)

and R consists of:

r1: rev(nil()) -> nil()
r2: rev(rev(x)) -> x
r3: rev(++(x,y)) -> ++(rev(y),rev(x))
r4: ++(nil(),y) -> y
r5: ++(x,nil()) -> x
r6: ++(.(x,y),z) -> .(x,++(y,z))
r7: ++(x,++(y,z)) -> ++(++(x,y),z)
r8: make(x) -> .(x,nil())

The set of usable rules consists of

  (no rules)

Take the monotone reduction pair:

  matrix interpretations:
  
    carrier: N^1
    order: standard order
    interpretations:
      rev#_A(x1) = x1
      ++_A(x1,x2) = x1 + x2 + 1

The next rules are strictly ordered:

  p1, p2
  r1, r2, r3, r4, r5, r6, r7, r8

We remove them from the problem.  Then no dependency pair remains.

-- Reduction pair.

Consider the dependency pair problem (P, R), where P consists of

p1: ++#(.(x,y),z) -> ++#(y,z)
p2: ++#(x,++(y,z)) -> ++#(x,y)
p3: ++#(x,++(y,z)) -> ++#(++(x,y),z)

and R consists of:

r1: rev(nil()) -> nil()
r2: rev(rev(x)) -> x
r3: rev(++(x,y)) -> ++(rev(y),rev(x))
r4: ++(nil(),y) -> y
r5: ++(x,nil()) -> x
r6: ++(.(x,y),z) -> .(x,++(y,z))
r7: ++(x,++(y,z)) -> ++(++(x,y),z)
r8: make(x) -> .(x,nil())

The set of usable rules consists of

  r4, r5, r6, r7

Take the reduction pair:

  matrix interpretations:
  
    carrier: N^1
    order: standard order
    interpretations:
      ++#_A(x1,x2) = x2
      ._A(x1,x2) = 1
      ++_A(x1,x2) = x1 + x2 + 1
      nil_A() = 0

The next rules are strictly ordered:

  p2, p3

We remove them from the problem.

-- SCC decomposition.

Consider the dependency pair problem (P, R), where P consists of

p1: ++#(.(x,y),z) -> ++#(y,z)

and R consists of:

r1: rev(nil()) -> nil()
r2: rev(rev(x)) -> x
r3: rev(++(x,y)) -> ++(rev(y),rev(x))
r4: ++(nil(),y) -> y
r5: ++(x,nil()) -> x
r6: ++(.(x,y),z) -> .(x,++(y,z))
r7: ++(x,++(y,z)) -> ++(++(x,y),z)
r8: make(x) -> .(x,nil())

The estimated dependency graph contains the following SCCs:

  {p1}


-- Reduction pair.

Consider the dependency pair problem (P, R), where P consists of

p1: ++#(.(x,y),z) -> ++#(y,z)

and R consists of:

r1: rev(nil()) -> nil()
r2: rev(rev(x)) -> x
r3: rev(++(x,y)) -> ++(rev(y),rev(x))
r4: ++(nil(),y) -> y
r5: ++(x,nil()) -> x
r6: ++(.(x,y),z) -> .(x,++(y,z))
r7: ++(x,++(y,z)) -> ++(++(x,y),z)
r8: make(x) -> .(x,nil())

The set of usable rules consists of

  (no rules)

Take the reduction pair:

  matrix interpretations:
  
    carrier: N^1
    order: standard order
    interpretations:
      ++#_A(x1,x2) = x1
      ._A(x1,x2) = x2 + 1

The next rules are strictly ordered:

  p1

We remove them from the problem.  Then no dependency pair remains.