Term Rewriting System R: [x, y, z] flatten(nil) -> nil flatten(unit(x)) -> flatten(x) flatten(++(x, y)) -> ++(flatten(x), flatten(y)) flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y)) flatten(flatten(x)) -> flatten(x) rev(nil) -> nil rev(unit(x)) -> unit(x) rev(++(x, y)) -> ++(rev(y), rev(x)) rev(rev(x)) -> x ++(x, nil) -> x ++(nil, y) -> y ++(++(x, y), z) -> ++(x, ++(y, z)) Termination of R to be shown. Removing the following rules from R which fullfill a polynomial ordering: flatten(nil) -> nil ++(x, nil) -> x ++(nil, y) -> y where the Polynomial interpretation: POL(nil) = 1 POL(++(x_1, x_2)) = x_1 + x_2 POL(flatten(x_1)) = 2*x_1 POL(rev(x_1)) = x_1 POL(unit(x_1)) = x_1 was used. Not all Rules of R can be deleted, so we still have to regard a part of R. Removing the following rules from R which fullfill a polynomial ordering: flatten(unit(x)) -> flatten(x) flatten(++(unit(x), y)) -> ++(flatten(x), flatten(y)) where the Polynomial interpretation: POL(nil) = 0 POL(++(x_1, x_2)) = x_1 + x_2 POL(flatten(x_1)) = x_1 POL(rev(x_1)) = x_1 POL(unit(x_1)) = 1 + x_1 was used. Not all Rules of R can be deleted, so we still have to regard a part of R. Removing the following rules from R which fullfill a polynomial ordering: flatten(++(x, y)) -> ++(flatten(x), flatten(y)) where the Polynomial interpretation: POL(nil) = 0 POL(++(x_1, x_2)) = 1 + x_1 + x_2 POL(flatten(x_1)) = 2*x_1 POL(rev(x_1)) = x_1 POL(unit(x_1)) = x_1 was used. Not all Rules of R can be deleted, so we still have to regard a part of R. Removing the following rules from R which fullfill a polynomial ordering: flatten(flatten(x)) -> flatten(x) where the Polynomial interpretation: POL(nil) = 0 POL(++(x_1, x_2)) = x_1 + x_2 POL(flatten(x_1)) = 1 + x_1 POL(rev(x_1)) = x_1 POL(unit(x_1)) = x_1 was used. Not all Rules of R can be deleted, so we still have to regard a part of R. Removing the following rules from R which fullfill a polynomial ordering: rev(nil) -> nil where the Polynomial interpretation: POL(nil) = 1 POL(++(x_1, x_2)) = x_1 + x_2 POL(rev(x_1)) = 2*x_1 POL(unit(x_1)) = x_1 was used. Not all Rules of R can be deleted, so we still have to regard a part of R. Removing the following rules from R which fullfill a polynomial ordering: rev(unit(x)) -> unit(x) where the Polynomial interpretation: POL(++(x_1, x_2)) = x_1 + x_2 POL(rev(x_1)) = 2*x_1 POL(unit(x_1)) = 1 + x_1 was used. Not all Rules of R can be deleted, so we still have to regard a part of R. Removing the following rules from R which fullfill a polynomial ordering: rev(++(x, y)) -> ++(rev(y), rev(x)) where the Polynomial interpretation: POL(++(x_1, x_2)) = 1 + x_1 + x_2 POL(rev(x_1)) = 2*x_1 was used. Not all Rules of R can be deleted, so we still have to regard a part of R. Removing the following rules from R which fullfill a polynomial ordering: ++(++(x, y), z) -> ++(x, ++(y, z)) rev(rev(x)) -> x where the Polynomial interpretation: POL(++(x_1, x_2)) = 1 + 2*x_1 + x_2 POL(rev(x_1)) = 2 + x_1 was used. All Rules of R can be deleted. Termination of R successfully shown. Duration: 0.517 seconds.