%%
%% declaraciones
%%
padrede('juan', 'maria'). % juan es padre de maria
padrede('pablo', 'juan'). % pablo es padre de juan
padrede('pablo', 'marcela').
padrede('carlos', 'debora').
% A es hijo de B si B es padre de A
hijode(A,B) :- padrede(B,A).
% A es abuelo de B si A es padre de C
y C es padre B
abuelode(A,B) :-
padrede(A,C),
padrede(C,B).
% A
y B son hermanos si el padre de A es tambiƩn el padre de B
y si A
y B
no son lo mismo
hermanode(A,B) :-
padrede(C,A) ,
padrede(C,B),
A \== B.
% A
y B son familiares si A es padre de B o A es hijo de B o A es hermano de B
familiarde(A,B) :-
padrede(A,B).
familiarde(A,B) :-
hijode(A,B).
familiarde(A,B) :-
hermanode(A,B).
%%
%% consultas
%%
% juan es hermano de marcela?
?- hermanode('juan', 'marcela').
JSUKJSUgZGVjbGFyYWNpb25lcwolJQpwYWRyZWRlKCdqdWFuJywgJ21hcmlhJykuICUganVhbiBlcyBwYWRyZSBkZSBtYXJpYQpwYWRyZWRlKCdwYWJsbycsICdqdWFuJykuICUgcGFibG8gZXMgcGFkcmUgZGUganVhbgpwYWRyZWRlKCdwYWJsbycsICdtYXJjZWxhJykuCnBhZHJlZGUoJ2NhcmxvcycsICdkZWJvcmEnKS4KIAolIEEgZXMgaGlqbyBkZSBCIHNpIEIgZXMgcGFkcmUgZGUgQQpoaWpvZGUoQSxCKSA6LSBwYWRyZWRlKEIsQSkuCiUgQSBlcyBhYnVlbG8gZGUgQiBzaSBBIGVzIHBhZHJlIGRlIEMgeSBDIGVzIHBhZHJlIEIKYWJ1ZWxvZGUoQSxCKSA6LSAKICAgcGFkcmVkZShBLEMpLCAKICAgcGFkcmVkZShDLEIpLgolIEEgeSBCIHNvbiBoZXJtYW5vcyBzaSBlbCBwYWRyZSBkZSBBIGVzIHRhbWJpw6luIGVsIHBhZHJlIGRlIEIgeSBzaSBBIHkgQiBubyBzb24gbG8gbWlzbW8KaGVybWFub2RlKEEsQikgOi0gCiAgIHBhZHJlZGUoQyxBKSAsIAogICBwYWRyZWRlKEMsQiksIAogICBBIFw9PSBCLiAgICAgICAgCiAKJSBBIHkgQiBzb24gZmFtaWxpYXJlcyBzaSBBIGVzIHBhZHJlIGRlIEIgbyBBIGVzIGhpam8gZGUgQiBvIEEgZXMgaGVybWFubyBkZSBCCmZhbWlsaWFyZGUoQSxCKSA6LSAKICAgcGFkcmVkZShBLEIpLgpmYW1pbGlhcmRlKEEsQikgOi0KICAgaGlqb2RlKEEsQikuIApmYW1pbGlhcmRlKEEsQikgOi0gCiAgIGhlcm1hbm9kZShBLEIpLgolJQolJSBjb25zdWx0YXMKJSUKJSBqdWFuIGVzIGhlcm1hbm8gZGUgbWFyY2VsYT8KPy0gaGVybWFub2RlKCdqdWFuJywgJ21hcmNlbGEnKS4=