(VAR K L M N X Y ) (RULES eq(0, 0) -> true eq(0, s(Y)) -> false eq(s(X), 0) -> false eq(s(X), s(Y)) -> eq(X, Y) le(0, Y) -> true le(s(X), 0) -> false le(s(X), s(Y)) -> le(X, Y) min(cons(0, nil)) -> 0 min(cons(s(N), nil)) -> s(N) min(cons(N, cons(M, L))) -> ifmin(le(N, M), cons(N, cons(M, L))) ifmin(true, cons(N, cons(M, L))) -> min(cons(N, L)) ifmin(false, cons(N, cons(M, L))) -> min(cons(M, L)) replace(N, M, nil) -> nil replace(N, M, cons(K, L)) -> ifrepl(eq(N, K), N, M, cons(K, L)) ifrepl(true, N, M, cons(K, L)) -> cons(M, L) ifrepl(false, N, M, cons(K, L)) -> cons(K, replace(N, M, L)) selsort(nil) -> nil selsort(cons(N, L)) -> ifselsort(eq(N, min(cons(N, L))), cons(N, L)) ifselsort(true, cons(N, L)) -> cons(N, selsort(L)) ifselsort(false, cons(N, L)) -> cons(min(cons(N, L)), selsort(replace(min(cons(N, L)), N, L))) )