kind_von(sofonisba,afra). kind_von(schorsch,afra). kind_von(afra,xenia). kind_von(afra,franz). kind_von(carlos,xenia). kind_von(carlos,franz). kind_von(xenia,suleika). kind_von(arthur,suleika). weiblich(sofonisba). weiblich(afra). weiblich(xenia). weiblich(suleika). maennlich(franz). maennlich(arthur). maennlich(schorsch). maennlich(carlos). bruder_von(Bruder,Geschwister) :- vater_von(Bruder,Vater), maennlich(Bruder), vater_von(Geschwister,Vater), mutter_von(Bruder,Mutter), mutter_von(Geschwister,Mutter), Bruder \= Geschwister. ahnengalerie(unbekannt,unbekannt). ahnengalerie(ag(Person,AhnengalerieMutter,AhnengalerieVater),Person) :- Person \= unbekannt, vater_ag_von(Person,Vater), mutter_ag_von(Person,Mutter), ahnengalerie(AhnengalerieMutter,Mutter), ahnengalerie(AhnengalerieVater,Vater). /*Spezielle Definition von Mutter und Vater für die Ahnengalerie ergibt unbekannte Mutter, wenn nicht in der Datenbasis*/ mutter_ag_von(Person,Mutter):- mutter_von(Person,Mutter), !. mutter_ag_von(_,unbekannt). vater_ag_von(Person,Vater):- vater_von(Person,Vater), !. vater_ag_von(_,unbekannt). mutter_von(Person,Mutter) :- kind_von(Mutter,Person), weiblich(Mutter). vater_von(Person,Vater):- kind_von(Vater,Person), maennlich(Vater). /*Listenverarbeitung*/ vorvaeter_von(Person,[Vorvater|Rvv]) :- vater_von(Person,Vorvater), !, vorvaeter_von(Vorvater,Rvv). vorvaeter_von(_,[]).