YES

We show the termination of the TRS R:

  +(x,|0|()) -> x
  +(|0|(),x) -> x
  +(s(x),s(y)) -> s(s(+(x,y)))
  +(+(x,y),z) -> +(x,+(y,z))
  *(x,|0|()) -> |0|()
  *(|0|(),x) -> |0|()
  *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
  *(*(x,y),z) -> *(x,*(y,z))
  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: +#(+(x,y),z) -> +#(x,+(y,z))
p3: +#(+(x,y),z) -> +#(y,z)
p4: *#(s(x),s(y)) -> +#(*(x,y),+(x,y))
p5: *#(s(x),s(y)) -> *#(x,y)
p6: *#(s(x),s(y)) -> +#(x,y)
p7: *#(*(x,y),z) -> *#(x,*(y,z))
p8: *#(*(x,y),z) -> *#(y,z)
p9: sum#(cons(x,l)) -> +#(x,sum(l))
p10: sum#(cons(x,l)) -> sum#(l)
p11: prod#(cons(x,l)) -> *#(x,prod(l))
p12: 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,y),z) -> +(x,+(y,z))
r5: *(x,|0|()) -> |0|()
r6: *(|0|(),x) -> |0|()
r7: *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
r8: *(*(x,y),z) -> *(x,*(y,z))
r9: sum(nil()) -> |0|()
r10: sum(cons(x,l)) -> +(x,sum(l))
r11: prod(nil()) -> s(|0|())
r12: prod(cons(x,l)) -> *(x,prod(l))

The estimated dependency graph contains the following SCCs:

  {p10}
  {p12}
  {p5, p7, p8}
  {p1, p2, p3}


-- 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,y),z) -> +(x,+(y,z))
r5: *(x,|0|()) -> |0|()
r6: *(|0|(),x) -> |0|()
r7: *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
r8: *(*(x,y),z) -> *(x,*(y,z))
r9: sum(nil()) -> |0|()
r10: sum(cons(x,l)) -> +(x,sum(l))
r11: prod(nil()) -> s(|0|())
r12: prod(cons(x,l)) -> *(x,prod(l))

The set of usable rules consists of

  (no rules)

Take the reduction pair:

  lexicographic path order with precedence:
  
    precedence:
    
      cons > sum#
    
    argument filter:
  
      pi(sum#) = [1]
      pi(cons) = [2]

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,y),z) -> +(x,+(y,z))
r5: *(x,|0|()) -> |0|()
r6: *(|0|(),x) -> |0|()
r7: *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
r8: *(*(x,y),z) -> *(x,*(y,z))
r9: sum(nil()) -> |0|()
r10: sum(cons(x,l)) -> +(x,sum(l))
r11: prod(nil()) -> s(|0|())
r12: prod(cons(x,l)) -> *(x,prod(l))

The set of usable rules consists of

  (no rules)

Take the reduction pair:

  lexicographic path order with precedence:
  
    precedence:
    
      cons > prod#
    
    argument filter:
  
      pi(prod#) = [1]
      pi(cons) = [2]

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: *#(*(x,y),z) -> *#(y,z)
p2: *#(*(x,y),z) -> *#(x,*(y,z))
p3: *#(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,y),z) -> +(x,+(y,z))
r5: *(x,|0|()) -> |0|()
r6: *(|0|(),x) -> |0|()
r7: *(s(x),s(y)) -> s(+(*(x,y),+(x,y)))
r8: *(*(x,y),z) -> *(x,*(y,z))
r9: sum(nil()) -> |0|()
r10: sum(cons(x,l)) -> +(x,sum(l))
r11: prod(nil()) -> s(|0|())
r12: prod(cons(x,l)) -> *(x,prod(l))

The set of usable rules consists of

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

Take the monotone reduction pair:

  lexicographic path order with precedence:
  
    precedence:
    
      |0| > *# > * > + > s
    
    argument filter:
  
      pi(*#) = [1, 2]
      pi(*) = [1, 2]
      pi(s) = [1]
      pi(+) = [1, 2]
      pi(|0|) = []

The next rules are strictly ordered:

  p1, p2, p3
  r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12

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

and R consists of:

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

The set of usable rules consists of

  r1, r2, r3, r4

Take the reduction pair:

  lexicographic path order with precedence:
  
    precedence:
    
      |0| > +# > + > s
    
    argument filter:
  
      pi(+#) = [1]
      pi(s) = [1]
      pi(+) = [1, 2]
      pi(|0|) = []

The next rules are strictly ordered:

  p1, p2, p3

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