% Definition der Ehefrau-Ehemann-Relation:
ehemann(christine, heinz).
ehemann(maria,     fritz).
ehemann(monika,    herbert).
ehemann(angelika,  hubert).

% Definition der Kind-Mutter-Relation:
mutter(herbert, christine).
mutter(angelika,christine).
mutter(hubert,  maria).
mutter(susanne, monika).
mutter(norbert, monika).
mutter(andreas, angelika).

%vater(susanne,herbert) :- ehemann(monika,herbert), mutter(susanne,monika).
%vater(Kind,Vater) :- ehemann(Mutter,Vater), mutter(Kind,Mutter).
vater(K,V) :- ehemann(M,V), mutter(K,M).

grossvater(E,G) :- vater(E,V), vater(V,G).
grossvater(E,G) :- mutter(E,M), vater(M,G).


istEhemann(Person) :- ehemann(_,Person).

muetter(Ms) :- findall(M, mutter(_,M), Ms).

grossvaeter(Gs) :- findall(G, grossvater(_,G), Gs).

kindsmuetter(KMs) :- findall((K,M), mutter(K,M), KMs).


kinder(M,Ks) :- bagof(K, mutter(K,M), Ks).


istVater(V) :- vater(_,V).

% vaeter(Vs) :- bagof(V, istVater(V), Vs).

% vaeter(Vs) :- bagof(V, K^vater(K,V), Vs).

vaeter(Vs) :- setof(V, K^vater(K,V), Vs).

