% nas_seznam(?PL, ?NL) :- NL je naše reprezentace seznamu PL.
nas_seznam([], l).
nas_seznam([X | Xs], l(X, Ys)) :- nas_seznam(Xs, Ys).

% prvek(?X, ?L) :- L je seznam obsahující prvek X.
prvek(X, [X | _]).
prvek(X, [_ | L]) :- prvek(X, L).

prvek_nas(X, l(X, _)).
prvek_nas(X, l(_, L)) :- prvek_nas(X, L).

% pridej_zacatek(?P, ?L, ?PL) :- PL je seznam L navíc s P na začátku.
pridej_zacatek(P, L, [P|L]).

% pridej_konec(?P, ?L, ?PL) :- PL je seznam L navíc s P na konci.
pridej_konec(X, [], [X]).
pridej_konec(X, [L|Ls], [L|PLs]) :- pridej_konec(X, Ls, PLs).

% spoj(?A, ?B, ?L) :- L je seznam vzniklý spojením A a B.
spoj([], X, X).
spoj([L|Ls], X, [L|PLs]) :- spoj(Ls, X, PLs).

pridej_zacatek_alt(P, L, PL) :- spoj([P], L, PL).
pridej_konec_alt(P, L, PL) :- spoj(L, [P], PL).
