% vater-Relation:
% vater(v,k) :<=> v ist Vater von k

% fritz ist vater von thomas:
vater(fritz,thomas).
vater(thomas,maria).
vater(thomas,anna).
%...

% grossvater(g,e) :<=> g ist Grossvater von e
%grossvater(fritz,maria).
%grossvater(fritz,anna).
% G ist Grossvater von E, falls G Vater von V und V Vater von E ist
grossvater(G,E) :- vater(G,V), vater(V,E).
%grossvater(G,E) :- vater(G,M), mutter(M,E).

app([]    ,Ys,Ys).
app([X|Xs],Ys,[X|Zs]) :- app(Xs,Ys,Zs).

% app []     ys = ys
% app (x:xs) ys = x : app xs ys

last(L,Y) :- app(_,[Y],L).

% Element einer Liste?
elem(E,Xs) :- app(Ys,_,Xs), last(Ys,E).
