
/* PANTHEON */

% comp ist bloss eine Abkuerzung 
comp:- consult('pantheon.pl').

% wird automatisch ausgefuehrt, um 'lib.pl' zu laden
:- consult('lib.pl').

% wird automatisch ausgefuehrt, damit man weiss worum es geht
:- nl,write('***********************************************************'),nl,nl,
   write('Mit diesem Programm koennen die Verwandtschaftsbeziehungen'),nl,
   write('der griechischen Goetterwelt abgefragt werden.'),nl,nl,
   write('Z.B. laesst sich mit "onkelv(Onkel,apollon)" die Onkel'),nl,
   write('vaeterlicherseits von apollon bestimmen.'),nl,nl,
   write('***********************************************************'),nl,nl.          

eltern(chronos,rhea,X):- in_list(X,[zeus,poseidon,hades,hestia,demeter,hera]).
eltern(zeus,hera,X):- in_list(X,[ares,hebe,hephaistos]).
eltern(zeus,nobody,athene).
eltern(zeus,dione,aphrodite).
eltern(zeus,leto,X):- in_list(X,[apollon,artemis]).

paar(hephaistos,aphrodite).
paar(hebe,herkules).
paar(X,Y):- eltern(X,Y,_),!.

maennlich(X):- in_list(X,[chronos,zeus,poseidon,hades,ares,
                               hephaistos,apollon,herkules]).

weiblich(X):- in_list(X,[rhea,hestia,demeter,hera,hebe,athene,
                                      dione,aphrodite,artemis]).

geschwister(X,Y):- eltern(V,M,X), eltern(V,M,Y), X\==Y.

schwester_von(X,Schwester):- geschwister(X,Schwester), weiblich(Schwester).
bruder_von(X,Bruder):- geschwister(X,Bruder), maennlich(Bruder).

halbgeschwister(X,Y):- eltern(V1,M,X), eltern(V2,M,Y), V1\==V2.
halbgeschwister(X,Y):- eltern(V,M1,X), eltern(V,M2,Y), M1\=M2.

onkel(O,N):- onkelv(O,N).
onkel(O,N):- onkelm(O,N).
onkelv(O,N):- eltern(G,_,N), !, geschwister(O,G), maennlich(O).
onkelm(O,N):- eltern(_,G,N), !, geschwister(O,G), maennlich(O).  

tante(T,N):- tantev(T,N).
tante(T,N):- tantem(T,N).
tantev(T,N):- eltern(G,_,N), !, geschwister(T,G), weiblich(T).
tantem(T,N):- eltern(_,G,N), !, geschwister(T,G), weiblich(T).  

inzucht(X,Y):- geschwister(X,Y), eltern(X,Y,_),!.

schwager_von(X,Schwager):- paar(X,Y), geschwister(Y,Schwager), 
                           maennlich(Schwager).
schwager_von(X,Schwager):- paar(Y,X), geschwister(Y,Schwager), 
                           maennlich(Schwager).

schwaegerin_von(X,Schwaegerin):- paar(X,Y), geschwister(Y,Schwaegerin), 
                                 weiblich(Schwaegerin).
schwaegerin_von(X,Schwaegerin):- paar(Y,X), geschwister(Y,Schwaegerin), 
                                 weiblich(Schwaegerin).

/* End of pantheon.pl */