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))
  app(nil(),l) -> l
  app(cons(x,l1),l2) -> cons(x,app(l1,l2))
  sum(nil()) -> |0|()
  sum(cons(x,l)) -> +(x,sum(l))
  sum(app(l1,l2)) -> +(sum(l1),sum(l2))
  prod(nil()) -> s(|0|())
  prod(cons(x,l)) -> *(x,prod(l))
  prod(app(l1,l2)) -> *(prod(l1),prod(l2))

-- 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: app#(cons(x,l1),l2) -> app#(l1,l2)
p10: sum#(cons(x,l)) -> +#(x,sum(l))
p11: sum#(cons(x,l)) -> sum#(l)
p12: sum#(app(l1,l2)) -> +#(sum(l1),sum(l2))
p13: sum#(app(l1,l2)) -> sum#(l1)
p14: sum#(app(l1,l2)) -> sum#(l2)
p15: prod#(cons(x,l)) -> *#(x,prod(l))
p16: prod#(cons(x,l)) -> prod#(l)
p17: prod#(app(l1,l2)) -> *#(prod(l1),prod(l2))
p18: prod#(app(l1,l2)) -> prod#(l1)
p19: prod#(app(l1,l2)) -> prod#(l2)

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: app(nil(),l) -> l
r10: app(cons(x,l1),l2) -> cons(x,app(l1,l2))
r11: sum(nil()) -> |0|()
r12: sum(cons(x,l)) -> +(x,sum(l))
r13: sum(app(l1,l2)) -> +(sum(l1),sum(l2))
r14: prod(nil()) -> s(|0|())
r15: prod(cons(x,l)) -> *(x,prod(l))
r16: prod(app(l1,l2)) -> *(prod(l1),prod(l2))

The estimated dependency graph contains the following SCCs:

  {p11, p13, p14}
  {p16, p18, p19}
  {p5, p7, p8}
  {p1, p2, p3}
  {p9}


-- Reduction pair.

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

p1: sum#(app(l1,l2)) -> sum#(l2)
p2: sum#(app(l1,l2)) -> sum#(l1)
p3: 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: app(nil(),l) -> l
r10: app(cons(x,l1),l2) -> cons(x,app(l1,l2))
r11: sum(nil()) -> |0|()
r12: sum(cons(x,l)) -> +(x,sum(l))
r13: sum(app(l1,l2)) -> +(sum(l1),sum(l2))
r14: prod(nil()) -> s(|0|())
r15: prod(cons(x,l)) -> *(x,prod(l))
r16: prod(app(l1,l2)) -> *(prod(l1),prod(l2))

The set of usable rules consists of

  (no rules)

Take the monotone reduction pair:

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

The next rules are strictly ordered:

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

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#(app(l1,l2)) -> prod#(l2)
p2: prod#(app(l1,l2)) -> prod#(l1)
p3: 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: app(nil(),l) -> l
r10: app(cons(x,l1),l2) -> cons(x,app(l1,l2))
r11: sum(nil()) -> |0|()
r12: sum(cons(x,l)) -> +(x,sum(l))
r13: sum(app(l1,l2)) -> +(sum(l1),sum(l2))
r14: prod(nil()) -> s(|0|())
r15: prod(cons(x,l)) -> *(x,prod(l))
r16: prod(app(l1,l2)) -> *(prod(l1),prod(l2))

The set of usable rules consists of

  (no rules)

Take the monotone reduction pair:

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

The next rules are strictly ordered:

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

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: app(nil(),l) -> l
r10: app(cons(x,l1),l2) -> cons(x,app(l1,l2))
r11: sum(nil()) -> |0|()
r12: sum(cons(x,l)) -> +(x,sum(l))
r13: sum(app(l1,l2)) -> +(sum(l1),sum(l2))
r14: prod(nil()) -> s(|0|())
r15: prod(cons(x,l)) -> *(x,prod(l))
r16: prod(app(l1,l2)) -> *(prod(l1),prod(l2))

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, r13, r14, r15, r16

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: app(nil(),l) -> l
r10: app(cons(x,l1),l2) -> cons(x,app(l1,l2))
r11: sum(nil()) -> |0|()
r12: sum(cons(x,l)) -> +(x,sum(l))
r13: sum(app(l1,l2)) -> +(sum(l1),sum(l2))
r14: prod(nil()) -> s(|0|())
r15: prod(cons(x,l)) -> *(x,prod(l))
r16: prod(app(l1,l2)) -> *(prod(l1),prod(l2))

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.

-- Reduction pair.

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

p1: app#(cons(x,l1),l2) -> app#(l1,l2)

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: app(nil(),l) -> l
r10: app(cons(x,l1),l2) -> cons(x,app(l1,l2))
r11: sum(nil()) -> |0|()
r12: sum(cons(x,l)) -> +(x,sum(l))
r13: sum(app(l1,l2)) -> +(sum(l1),sum(l2))
r14: prod(nil()) -> s(|0|())
r15: prod(cons(x,l)) -> *(x,prod(l))
r16: prod(app(l1,l2)) -> *(prod(l1),prod(l2))

The set of usable rules consists of

  (no rules)

Take the reduction pair:

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

The next rules are strictly ordered:

  p1

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