(0) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
+(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))
Q is empty.
(1) QTRSRRRProof (EQUIVALENT transformation)
Used ordering:
Combined order from the following AFS and order.
+(
x1,
x2) =
+(
x1,
x2)
0 =
0
s(
x1) =
s(
x1)
*(
x1,
x2) =
*(
x1,
x2)
sum(
x1) =
x1
nil =
nil
cons(
x1,
x2) =
cons(
x1,
x2)
prod(
x1) =
x1
Recursive path order with status [RPO].
Quasi-Precedence:
[*2, cons2] > +2 > [0, s1]
nil > [0, s1]
Status:
cons2: [1,2]
*2: [1,2]
s1: multiset
0: multiset
nil: multiset
+2: [1,2]
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:
+(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)
(2) Obligation:
Q restricted rewrite system:
The TRS R consists of the following rules:
prod(cons(x, l)) → *(x, prod(l))
Q is empty.
(3) QTRSRRRProof (EQUIVALENT transformation)
Used ordering:
Polynomial interpretation [POLO]:
POL(*(x1, x2)) = x1 + x2
POL(cons(x1, x2)) = 1 + x1 + x2
POL(prod(x1)) = x1
With this ordering the following rules can be removed by the rule removal processor [LPAR04] because they are oriented strictly:
prod(cons(x, l)) → *(x, prod(l))
(4) Obligation:
Q restricted rewrite system:
R is empty.
Q is empty.
(5) RisEmptyProof (EQUIVALENT transformation)
The TRS R is empty. Hence, termination is trivially proven.
(6) TRUE
(7) RisEmptyProof (EQUIVALENT transformation)
The TRS R is empty. Hence, termination is trivially proven.
(8) TRUE
(9) RisEmptyProof (EQUIVALENT transformation)
The TRS R is empty. Hence, termination is trivially proven.
(10) TRUE