%---------------------------------------------------------------------------%
% vim: ts=4 sw=4 et ft=mercury
%---------------------------------------------------------------------------%
%
% The "remove" Benchmark.
% Part of the DPPD Library.
% 
% This is a rather sophisticated deforestation example, handed over to me
% by Jesper Jorgensen.

:- module remove.

:- interface.

:- pred remove is semidet.

:- implementation.

:- import_module list.
:- import_module remove_impl.
:- import_module run.

remove :-
    rr([a, a, b, b, a, a, a, a, c, d, a, b, a, a, d, d], Y),
    use(Y),
    rr([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t,
        u, v, w, x, y, z], Z),
    use(Z),
    rr([a, b, b, b, c, d, e, f, g, g, h, i, j, k, l, m, m, m, m, m, m, m, m,
                n, o, p, q, r, s, t, u, v, v, v, v, w, x, y, z, z, z], ZZ),
    use(ZZ).

% The partial deduction query
% 
% :- rr(X, Y).
% 
% The run-time queries
% 
% :- rr([a, a, b, b, a, a, a, a, c, d, a, b, a, a, d, d], Y).
% :- rr([a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r,
%     s, t, u, v, w, x, y, z], Y).
% :- rr([a, b, b, b, c, d, e, f, g, g, h, i, j, k, l, m, m, m, m, m, m, m, m,
%     n, o, p, q, r, s, t, u, v, v, v, v, w, x, y, z, z, z], Y).
% 
% Example solution
% 
% to be inserted
% 
% Michael Leuschel / K.U. Leuven / michael@cs.kuleuven.ac.be
