Sie sind auf Seite 1von 6

% ESPECIFICACION DE REGLAS

%================================================
padre(X, Y) :- proge(X, Y), varon(X).
madre(X, Y) :- proge(X, Y), mujer(X).
hijo(X, Y) :- proge(Y, X), varon(X).
hija(X, Y) :- proge(Y, X), mujer(X).
abuelo(X, Y) :- padre(X, Z), proge(Z, Y).
abuela(X, Y) :- madre(X, Z), proge(Z, Y).
bisabuela(X, Y) :-madre(X, Z), abuelo(Z, Y).
bisabuela(X, Y) :-madre(X, Z), abuela(Z, Y).
bisabuelo(X, Y) :-padre(X, Z), abuelo(Z, Y).
bisabuelo(X, Y) :-padre(X, Z), abuela(Z, Y).
nieto(X, Y) :- proge(Y, Z), proge(Z, X), varon(X).
nieto(X, Y) :- abuelo(Y, X), varon(X).
nieto(X, Y) :- abuela(Y, X), varon(X).
nieta(X, Y) :- abuelo(Y, X), mujer(X).
nieta(X, Y) :- abuela(Y, X), mujer(X).
bisnieto(X, Y) :- bisabuelo(Y, X), varon(X).
bisnieto(X, Y) :- bisabuela(Y, X), varon(X).
bisnieta(X, Y) :- bisabuelo(Y, X), mujer(X).
bisnieta(X, Y) :- bisabuela(Y, X), mujer(X).
mismo(X, X).
diferente(X, Y) :- not(mismo(X, Y)).
hermanos(X, Y) :- proge(Z, X), proge(Z, Y), diferente(X, Y).
tio(X, Y) :- hermanos(X, Z), antepasado(Z, Y), varon(X).
tio(X, Y) :- primohermano(X, Z), antepasado(Z, Y), varon(X).
tia(X, Y) :- hermanos(X, Z), antepasado(Z, Y), mujer(X).
tia(X, Y) :- primahermana(X, Z), antepasado(Z, Y), mujer(X).
tioabuelo(X, Y) :-hermanos(X, Z), abuelo(Z, Y), varon(X).
tiaabuela(X, Y) :-hermanos(X, Z), abuela(Z, Y), mujer(X).
sobrino(X, Y) :- tio(Y, X), varon(X).
sobrino(X, Y) :- tia(Y, X), varon(X).
sobrina(X, Y) :- tio(Y, X), mujer(X).
sobrina(X, Y) :- tia(Y, X), mujer(X).
primohermano(X, Y) :- padre(Z, X), tio(Z, Y), varon(X).
primohermano(X, Y) :- madre(Z, X), tia(Z, Y), varon(X).
primahermana(X, Y) :- padre(Z, X), tio(Z, Y), mujer(X).
primahermana(X, Y) :- madre(Z, X), tia(Z, Y), mujer(X).
primo(X, Y) :-proge(Z, X), proge(W, Y), hermanos(Z, W), varon(X).
prima(X, Y) :-proge(Z, X), proge(W, Y), hermanos(Z, W), mujer(X).
cuado(X, Y) :- proge(Y, Z), proge(W, Z), diferente(Y, W), hermanos(X, W), varon(X).
cuado(Y, X) :- proge(Y, Z), proge(W, Z), diferente(Y, W), hermanos(X, W), varon(Y).
cuada(X, Y) :- proge(Y, Z), proge(W, Z), diferente(Y, W), hermanos(X, W), mujer(X).
cuada(Y, X) :- proge(Y, Z), proge(W, Z), diferente(Y, W), hermanos(X, W), mujer(Y).
suegro(X, Y) :- proge(Y, Z), proge(W, Z), diferente(Y, W), proge(X, W), varon(X).
suegra(X, Y) :- proge(Y, Z), proge(W, Z), diferente(Y, W), proge(X, W), mujer(X).
yerno(X, Y) :- suegro(Y, X), varon(X).
yerno(X, Y) :- suegra(Y, X), varon(X).
nuera(X, Y) :- suegro(Y, X), mujer(X).
nuera(X, Y) :- suegra(Y, X), mujer(X).
hijastro(X, Y) :- proge(Y, Z), proge(W, Z), diferente(Y, W), proge(W, X), not(proge(Y, X)),
varon(X).
hijastra(X, Y) :- proge(Y, Z), proge(W, Z), diferente(Y, W), proge(W, X), not(proge(Y, X)),
mujer(X).
hermanastro(X, Y) :- proge(Z, Y), hijastro(X, Z), varon(X).
hermanastra(X, Y) :- proge(Z, Y), hijastro(X, Z), mujer(X).
mediohermana(X, Y) :- proge(Z, Y), proge(Z, X), not(hermanos(X, Y)), mujer(X).
mediohermano(X, Y) :- proge(Z, Y), proge(Z, X), not(hermanos(X, Y)), varon(X).
%RECURSIVIDAD { antepasado(x, y) = x es antepasado de y}
antepasado(X, Y) :- proge(X, Y).
antepasado(X, Y) :- proge(X, Z), antepasado(Z, Y).
%================================================
% ESPECIFICACION DE HECHOS
%================================================
proge(enrique, vicente).
proge(enrique, cristobal).
proge(enrique, cesar).
proge(enrique, juana).
proge(genara, vicente).
proge(genara, cristobal).
proge(genara, cesar).
proge(genara, juana).
proge(juana, eddy).
proge(juana, alvaro).
proge(americo, eddy).
proge(americo, alvaro).
proge(luis, esther).
proge(luis, mirtha).
proge(luis, riquelme).
proge(luis, americo).
proge(maria, esther).
proge(maria, mirtha).
proge(maria, riquelme).
proge(maria, americo).
proge(esther, jeanette).
proge(esther, jubitsa).
proge(esther, johnny).
proge(pascual, jeanette).
proge(pascual, jubitsa).
proge(pascual, johnny).
proge(mirtha, raul).
proge(mirtha, ricardo).
proge(mirtha, omar).
proge(avelino, raul).
proge(avelino, ricardo).
proge(avelino, omar).
proge(riquelme, yesenia).
proge(riquelme, stephanie).
proge(catalina, yesenia).
proge(catalina, stephanie).
proge(ricardo, atenea).
proge(lili, atenea).
varon(enrique).
varon(luis).
varon(vicente).
varon(cristobal).
varon(americo).
varon(pascual).
varon(avelino).
varon(riquelme).
varon(alvaro).
varon(eddy).
varon(raul).
varon(ricardo).
varon(omar).
varon(johnny).
mujer(genara).
mujer(juana).
mujer(maria).
mujer(mirtha).
mujer(esther).
mujer(catalina).
mujer(yesenia).
mujer(stephanie).
mujer(jeanette).
mujer(jubitsa).
mujer(lili).
mujer(atenea).
PRUEBAS
1 ?- abuelo(luis, eddy).
true .
2 ?- abuelo(luis, X).
X = jeanette;
X = jubitsa;
X = johnny;
X = raul;
X = ricardo;
X = omar;
X = yesenia;
X = stephanie;
X = eddy;
X = alvaro.
3 ?- abuelo(X, eddy).
X = enrique;
X = luis;
4 ?- padre(luis, americo).
true.
5 ?- padre(X, eddy).
X = americo;
6 ?- bisnieta(X, luis).
X = atenea;
7 ?- nieto(eddy, enrique).
True.
8 ?- nieto(alvaro, genara).
true .
zea valdera

Das könnte Ihnen auch gefallen