PROLOG
informatyk:
Witam, mam mały problem z Prologiem, mam zadanie określić pokrewieństwo dla drzewa
genealogicznego, ale nie wiem jak zrobić teściową i szwagra
drzewo genealogiczne:
Maria−Piotr Ewa−Adam
| | | | | |
Robert−Agata |
Jan−Anna |
Krzysztof−Agnieszka
| | Marek | | Joanna | |
Radek Beata Darek Tomek Jacek Iwona
nie wiem czy widać dobrze, krecha [ | ] oznacza dziecko,
podkreślenie oznacza małżeństwo.
Na początku została określona funkcja
kobieta(X).,
mezczyzna(X).,
rodzic(X,Y)
moja propozycja teściowej:
tesciowa(X,Y) := kobieta(X), malzenstwo(Y,Z), matka(X,Z).
dodałbym jeszcze
X\=Y, X\=Z, Y\=Z
============================
matka(X,Y):−kobieta(X),rodzic(X,Y),X\=Y.
ojciec(X,Y):−mezczyzna(X),rodzic(X,Y),X\=Y.
dziecko(X,Y):−rodzic(Y,X),X\=Y.
brat(X,Y):−rodzic(Z,X),rodzic(Z,Y),mezczyzna(X),X\=Y,X\=Z,Y\=Z.
siostra(X,Y):−rodzic(Z,X),rodzic(Z,Y),kobieta(X),X\=Y,X\=Z,Y\=Z.
syn(X,Y):−rodzic(X,Y),mezczyzna(Y),X\=Y.
corka(X,Y):−rodzic(X,Y),kobieta(Y),X\=Y.
rodzenstwo(X,Y):−rodzic(Z,X),rodzic(Z,Y),X\=Y,X\=Z,Y\=Z.
wuj(X,Y):−matka(Z,Y),brat(X,Z),X\=Y,X\=Z,Y\=Z. //brat matki
stryj(X,Y) :− ojciec(Z,Y),brat(X,Z),X\=Y,X\=Z,Y\=Z. //brat ojca
ciotka(Y,X):−matka(Z,X),siostra(Y,Z),X\=Y,X\=Z,Y\=Z. //siostra matki
stryjenka(Y,X) :− ojciec(Z,X),siostra(Y,Z),X\=Y,X\=Z,Y\=Z. //siostra ojca
babcia(B,A):−rodzic(C,A),rodzic(B,C),kobieta(B),A\=B,A\=C,B\=C.
dziadek(B,A):−rodzic(C,A),rodzic(B,C),mezczyzna(B),A\=B,A\=C,B\=C.
malzenstwo(X,Y) :− dziecko(Z,X),dziecko(Z,Y),X\=Y,X\=Z,Y\=Z.
======================================
I jeszcze jakbym mógł prosić o sprawdzenie czy pokrewieństo np wuja itp. są poprawne, niektóre
dobrze idą niektóre źle pokazują, chciałem tylko się zapytać

a na szwagra nie mam pomysłu