Termination of the rewrite relation of the following TRS is considered.
a(a(plus,0),y) | → | y |
a(a(plus,a(s,x)),y) | → | a(s,a(a(plus,x),y)) |
a(a(times,a(s,x)),y) | → | a(a(plus,a(a(times,x),y)),y) |
a(a(times,0),y) | → | 0 |
a(a(map,f),a(a(cons,x),xs)) | → | a(a(cons,a(f,x)),a(a(map,f),xs)) |
a(a(map,f),nil) | → | nil |
a#(a(plus,a(s,x)),y) | → | a#(s,a(a(plus,x),y)) |
a#(a(plus,a(s,x)),y) | → | a#(a(plus,x),y) |
a#(a(plus,a(s,x)),y) | → | a#(plus,x) |
a#(a(times,a(s,x)),y) | → | a#(a(plus,a(a(times,x),y)),y) |
a#(a(times,a(s,x)),y) | → | a#(plus,a(a(times,x),y)) |
a#(a(times,a(s,x)),y) | → | a#(a(times,x),y) |
a#(a(times,a(s,x)),y) | → | a#(times,x) |
a#(a(map,f),a(a(cons,x),xs)) | → | a#(a(cons,a(f,x)),a(a(map,f),xs)) |
a#(a(map,f),a(a(cons,x),xs)) | → | a#(cons,a(f,x)) |
a#(a(map,f),a(a(cons,x),xs)) | → | a#(f,x) |
a#(a(map,f),a(a(cons,x),xs)) | → | a#(a(map,f),xs) |
The dependency pairs are split into 3 components.
a#(a(map,f),a(a(cons,x),xs)) | → | a#(f,x) |
a#(a(map,f),a(a(cons,x),xs)) | → | a#(a(map,f),xs) |
There are no pairs anymore.
a#(a(times,a(s,x)),y) | → | a#(a(times,x),y) |
We uncurry the tuple-symbol a# in combination with the following symbol map which also determines the applicative arities of these symbols.
a(x1, x2) | is mapped to | a(x1, x2), | times#(x1, x2, x3) |
s | is mapped to | s | |
0 | is mapped to | 0 | |
times | is mapped to | times | |
plus | is mapped to | plus | |
map | is mapped to | map | |
cons | is mapped to | cons | |
nil | is mapped to | nil |
times#(times,a(s,x),y) | → | times#(times,x,y) |
a#(a(x,y),z) | → | times#(x,y,z) |
a(a(map,f),a(a(cons,x),xs)) | → | a(a(cons,a(f,x)),a(a(map,f),xs)) |
a(a(map,f),nil) | → | nil |
a(a(plus,0),y) | → | y |
a(a(plus,a(s,x)),y) | → | a(s,a(a(plus,x),y)) |
a(a(times,a(s,x)),y) | → | a(a(plus,a(a(times,x),y)),y) |
a(a(times,0),y) | → | 0 |
The dependency pairs are split into 1 component.
times#(times,a(s,x),y) | → | times#(times,x,y) |
There are no pairs anymore.
a#(a(plus,a(s,x)),y) | → | a#(a(plus,x),y) |
We uncurry the binary symbol a in combination with the following symbol map which also determines the applicative arities of these symbols.
a#(x1, x2) | is mapped to | a#(x1, x2) | ||
s | is mapped to | s, | s(x1) | |
0 | is mapped to | 0 | ||
times | is mapped to | times, | times(x1), | times(x1, x2) |
plus | is mapped to | plus, | plus(x1), | plus(x1, x2) |
map | is mapped to | map, | map(x1), | map(x1, x2) |
cons | is mapped to | cons, | cons(x1), | cons(x1, x2) |
nil | is mapped to | nil |
a#(plus(s(x)),y) | → | a#(plus(x),y) |
map(f,cons(x,xs)) | → | cons(a(f,x),map(f,xs)) |
map(f,nil) | → | nil |
plus(0,y) | → | y |
plus(s(x),y) | → | s(plus(x,y)) |
times(0,y) | → | 0 |
times(s(x),y) | → | plus(times(x,y),y) |
a(s,x) | → | s(x) |
a(times,x) | → | times(x) |
a(times(x),y) | → | times(x,y) |
a(plus,x) | → | plus(x) |
a(plus(x),y) | → | plus(x,y) |
a(map,x) | → | map(x) |
a(map(x),y) | → | map(x,y) |
a(cons,x) | → | cons(x) |
a(cons(x),y) | → | cons(x,y) |
We uncurry the tuple-symbol a# in combination with the following symbol map which also determines the applicative arities of these symbols.
s | is mapped to | s | |
s(x1) | is mapped to | s(x1) | |
0 | is mapped to | 0 | |
times | is mapped to | times | |
times(x1) | is mapped to | times(x1) | |
times(x1, x2) | is mapped to | times(x1, x2) | |
plus | is mapped to | plus | |
plus(x1) | is mapped to | plus(x1), | plus#(x1, x2) |
plus(x1, x2) | is mapped to | plus(x1, x2) | |
map | is mapped to | map | |
map(x1) | is mapped to | map(x1) | |
map(x1, x2) | is mapped to | map(x1, x2) | |
cons | is mapped to | cons | |
cons(x1) | is mapped to | cons(x1) | |
cons(x1, x2) | is mapped to | cons(x1, x2) | |
a(x1, x2) | is mapped to | a(x1, x2) | |
nil | is mapped to | nil |
plus#(s(x),y) | → | plus#(x,y) |
map(f,cons(x,xs)) | → | cons(a(f,x),map(f,xs)) |
map(f,nil) | → | nil |
plus(0,y) | → | y |
plus(s(x),y) | → | s(plus(x,y)) |
times(0,y) | → | 0 |
times(s(x),y) | → | plus(times(x,y),y) |
a(s,x) | → | s(x) |
a(times,x) | → | times(x) |
a(times(x),y) | → | times(x,y) |
a(plus,x) | → | plus(x) |
a(plus(x),y) | → | plus(x,y) |
a(map,x) | → | map(x) |
a(map(x),y) | → | map(x,y) |
a(cons,x) | → | cons(x) |
a(cons(x),y) | → | cons(x,y) |
There are no pairs anymore.