% Oliver Kutter kutter@in.tum.de 08/12/02 % Familienbeziehungen mit Prolog % weibliche Personen der Familie Simpson weiblich(maggie). weiblich(lisa). weiblich(maggie). weiblich(selma). weiblich(patty). weiblich(grandmaB). weiblich(grandmaS). % maennliche Personen der Familie Simpson maennlich(homer). maennlich(bart). maennlich(grandpaS). maennlich(joe). maennlich(sidejoebob). % mutter Beziehungen mutter(lisa,marge). mutter(bart,marge). mutter(maggie,marge). mutter(marge,grandmaB). mutter(patty,grandmaB). mutter(selma,grandmaB). mutter(homer,grandmaS). % Vater Beziehungen vater(lisa,homer). vater(bart,homer). vater(maggie,homer). vater(homer,grandpaS). vater(joe,grandpaS). verheiratet(grandmaS,grandpaS). verheiratet(selma,sidejoebob). verheiratet(marge,homer). % Grossvater % fuer alle X,Y ist X Grossvater von Y wenn es ein Z gibt, % das Mutter/Vater von X ist und Y vater von Z ehepaar(X,Y):-verheiratet(X,Y);verheiratet(Y,X). issame(X,X). is_not_same(X,Y):- not(issame(X,Y)). opa(Y,X):-vater(X,Z),vater(Z,Y),is_not_same(Y,X);mutter(X,Z),vater(Z,Y),is_not_same(Y,X). % Grossmutter oma(X,Y):-vater(X,Z),mutter(Z,Y),is_not_same(X,Y). oma(X,Y):-mutter(X,Z),mutter(Z,Y),is_not_same(X,Y). % Eltern eltern(X,Y,Z):-mutter(Z,X),vater(Z,Y),ehepaar(X,Y). eltern(X,Y,Z):-mutter(Z,Y),vater(Z,X),ehepaar(X,Y). geschwister(X,Y):-mutter(X,Z),mutter(Y,Z),is_not_same(X,Y). geschwister(X,Y):-vater(X,Z),mutter(Y,Z),is_not_same(X,Y). geschwister(X,Y):-mutter(X,Z),vater(Y,Z),is_not_same(X,Y). geschwister(X,Y):-vater(X,Z),vater(Y,Z),is_not_same(X,Y). % Onkel % Y ist Onkel von X wenn Y maennlich und ein Geschwister zu dem Vater oder Mutter von X ist onkel(Y,X):-vater(X,Z),geschwister(Y,Z),maennlich(Y). onkel(Y,X):-mutter(X,Z),geschwister(Y,Z),maennlich(Y). %onkel(Y,X):-tante(Z,X),verheiratet(Z,Y);verheiratet(Y,Z). tante(Y,X):-vater(X,Z),geschwister(Y,Z),weiblich(Y);mutter(X,Z),geschwister(Y,Z),weiblich(Y). %tante(Y,X):-onkel(Z,X),verheiratet(Z,Y);verheiratet(Y,Z). % fuer alle X,Y,Z gilt X,Y sind ein Grosselternpaar % g.d.w. es X und Y Grossmutter und Grossvater von Z sind und wenn X,Y verheiratet sind grossElternPaar(X,Y,Z):-opa(X,Z),oma(Y,Z),verheiratet(X,Y);verheiratet(Y,X). grossElternPaar(X,Y,Z):-opa(Y,Z),oma(X,Z),verheiratet(X,Y);verheiratet(Y,X). nichte(X,Y):-tante(Y,X),weiblich(X);onkel(Y,X),weiblich(X). neffe(X,Y):-tante(Y,X),maennlich(X);onkel(Y,X),maennlich(X).