YES

We show the termination of the TRS R:

  +(x,|0|()) -> x
  +(|0|(),x) -> x
  +(s(x),s(y)) -> s(s(+(x,y)))
  *(x,|0|()) -> |0|()
  *(|0|(),x) -> |0|()
  *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
  sum(nil()) -> |0|()
  sum(cons(x,l)) -> +(x,sum(l))
  prod(nil()) -> s(|0|())
  prod(cons(x,l)) -> *(x,prod(l))

-- SCC decomposition.

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

p1: +#(s(x),s(y)) -> +#(x,y)
p2: *#(s(x),s(y)) -> +#(*(x,y),+(x,y))
p3: *#(s(x),s(y)) -> *#(x,y)
p4: *#(s(x),s(y)) -> +#(x,y)
p5: sum#(cons(x,l)) -> +#(x,sum(l))
p6: sum#(cons(x,l)) -> sum#(l)
p7: prod#(cons(x,l)) -> *#(x,prod(l))
p8: prod#(cons(x,l)) -> prod#(l)

and R consists of:

r1: +(x,|0|()) -> x
r2: +(|0|(),x) -> x
r3: +(s(x),s(y)) -> s(s(+(x,y)))
r4: *(x,|0|()) -> |0|()
r5: *(|0|(),x) -> |0|()
r6: *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
r7: sum(nil()) -> |0|()
r8: sum(cons(x,l)) -> +(x,sum(l))
r9: prod(nil()) -> s(|0|())
r10: prod(cons(x,l)) -> *(x,prod(l))

The estimated dependency graph contains the following SCCs:

  {p6}
  {p8}
  {p3}
  {p1}


-- Reduction pair.

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

p1: sum#(cons(x,l)) -> sum#(l)

and R consists of:

r1: +(x,|0|()) -> x
r2: +(|0|(),x) -> x
r3: +(s(x),s(y)) -> s(s(+(x,y)))
r4: *(x,|0|()) -> |0|()
r5: *(|0|(),x) -> |0|()
r6: *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
r7: sum(nil()) -> |0|()
r8: sum(cons(x,l)) -> +(x,sum(l))
r9: prod(nil()) -> s(|0|())
r10: prod(cons(x,l)) -> *(x,prod(l))

The set of usable rules consists of

  (no rules)

Take the reduction pair:

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

The next rules are strictly ordered:

  p1

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: prod#(cons(x,l)) -> prod#(l)

and R consists of:

r1: +(x,|0|()) -> x
r2: +(|0|(),x) -> x
r3: +(s(x),s(y)) -> s(s(+(x,y)))
r4: *(x,|0|()) -> |0|()
r5: *(|0|(),x) -> |0|()
r6: *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
r7: sum(nil()) -> |0|()
r8: sum(cons(x,l)) -> +(x,sum(l))
r9: prod(nil()) -> s(|0|())
r10: prod(cons(x,l)) -> *(x,prod(l))

The set of usable rules consists of

  (no rules)

Take the reduction pair:

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

The next rules are strictly ordered:

  p1

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: *#(s(x),s(y)) -> *#(x,y)

and R consists of:

r1: +(x,|0|()) -> x
r2: +(|0|(),x) -> x
r3: +(s(x),s(y)) -> s(s(+(x,y)))
r4: *(x,|0|()) -> |0|()
r5: *(|0|(),x) -> |0|()
r6: *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
r7: sum(nil()) -> |0|()
r8: sum(cons(x,l)) -> +(x,sum(l))
r9: prod(nil()) -> s(|0|())
r10: prod(cons(x,l)) -> *(x,prod(l))

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
      s_A(x1) = x1 + 1

The next rules are strictly ordered:

  p1

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: +#(s(x),s(y)) -> +#(x,y)

and R consists of:

r1: +(x,|0|()) -> x
r2: +(|0|(),x) -> x
r3: +(s(x),s(y)) -> s(s(+(x,y)))
r4: *(x,|0|()) -> |0|()
r5: *(|0|(),x) -> |0|()
r6: *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
r7: sum(nil()) -> |0|()
r8: sum(cons(x,l)) -> +(x,sum(l))
r9: prod(nil()) -> s(|0|())
r10: prod(cons(x,l)) -> *(x,prod(l))

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
      s_A(x1) = x1 + 1

The next rules are strictly ordered:

  p1

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