% Structure of the family:
%
%                    Christine oo Heinz  Maria oo Fritz
%                      /    \               |
%                     /      \              |
%      Monika oo Herbert    Angelika oo Hubert
%       /  \                   |
%      /    \                  |
%  Susanne  Norbert          Andreas

% 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) :- mutter(susanne,monika), ehemann(monika,herbert).
%vater(susanne,herbert) :- mutter(susanne,angelika), ehemann(angelika,herbert).
%vater(susanne,herbert) :- mutter(susanne,Mutter), ehemann(Mutter,herbert).
vater(Kind,Vater) :- mutter(Kind,Mutter), ehemann(Mutter,Vater).

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

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

%geschwister(S,P) :- mutter(S,M), mutter(P,M), \+ S = P. % not S = P
%geschwister(S,P) :- \+ S=P, mutter(S,M), mutter(P,M).

% vordefinitert:
% X \= Y :- \+ X=Y.

% geschwister(S,P) :- mutter(S,M), mutter(P,M), S \= P. % not S = P

p(a,a).
p(a,b).

geschwister(S,P) :- when(ground(S=P), \+ S=P), mutter(S,M), mutter(P,M).
