307
%% padrede('juan', 'maria'). % juan es padre de maria padrede('pablo', 'juan'). % pablo es padre de juan padrede('pablo', 'marcela'). % pablo es padre de marcela padrede('carlos', 'debora'). % carlos es padre de 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). %% padrede('juan', 'maria'). % juan es padre de maria padrede('pablo', 'juan'). % pablo es padre de juan padrede('pablo', 'marcela'). % pablo es padre de marcela padrede('carlos', 'debora'). % carlos es padre de 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

PROLOG

Embed Size (px)

DESCRIPTION

PROLOG

Citation preview

Page 1: PROLOG

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 2: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 3: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 4: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 5: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 6: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 7: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 8: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 9: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 10: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 11: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 12: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 13: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 14: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 15: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 16: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 17: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 18: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 19: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 20: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 21: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 22: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 23: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 24: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 25: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 26: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 27: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 28: PROLOG

% 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 29: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 30: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 31: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 32: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 33: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 34: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 35: PROLOG

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 36: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 37: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 38: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 39: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 40: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 41: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 42: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 43: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 44: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 45: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 46: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 47: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 48: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 49: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 50: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 51: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 52: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 53: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 54: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 55: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 56: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 57: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 58: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 59: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 60: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 61: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 62: PROLOG

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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 63: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 64: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 65: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 66: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 67: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 68: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 69: PROLOG

familiarde(A,B) :-hermanode(A,B).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 70: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 71: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 72: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 73: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 74: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 75: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 76: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 77: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 78: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 79: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 80: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 81: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 82: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 83: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 84: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 85: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 86: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 87: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 88: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 89: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 90: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 91: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 92: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 93: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 94: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 95: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 96: PROLOG

% 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 97: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 98: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 99: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 100: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 101: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 102: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 103: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 104: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 105: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 106: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 107: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 108: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 109: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 110: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 111: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 112: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 113: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 114: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 115: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 116: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 117: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 118: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 119: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 120: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 121: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 122: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 123: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 124: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 125: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 126: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 127: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 128: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 129: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 130: PROLOG

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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 131: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 132: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 133: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 134: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 135: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 136: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 137: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 138: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 139: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 140: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 141: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 142: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 143: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 144: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 145: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 146: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 147: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 148: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 149: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 150: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 151: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 152: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 153: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 154: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 155: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 156: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 157: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 158: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 159: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 160: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 161: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 162: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 163: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 164: PROLOG

% 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 165: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 166: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 167: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 168: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 169: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 170: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 171: PROLOG

% 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 172: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 173: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 174: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 175: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 176: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 177: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

Page 178: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 179: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 180: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 181: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 182: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 183: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 184: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 185: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 186: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 187: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 188: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 189: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 190: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 191: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 192: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 193: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 194: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 195: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 196: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 197: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 198: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 199: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 200: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 201: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 202: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 203: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 204: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 205: PROLOG

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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 206: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 207: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 208: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 209: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 210: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 211: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

Page 212: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 213: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 214: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 215: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 216: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 217: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 218: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 219: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 220: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 221: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 222: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 223: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 224: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 225: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 226: PROLOG

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

Page 227: PROLOG

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 228: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 229: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 230: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 231: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 232: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

Page 233: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 234: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 235: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 236: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 237: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 238: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 239: PROLOG

% 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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.

Page 240: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 241: PROLOG

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 242: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 243: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 244: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 245: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 246: PROLOG

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

Page 247: PROLOG

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 248: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 249: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 250: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 251: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 252: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

%%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

Page 253: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).

Page 254: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 255: PROLOG

familiarde(A,B) :-padrede(A,B).

familiarde(A,B) :-hijode(A,B).

familiarde(A,B) :-hermanode(A,B). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

Page 256: PROLOG

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

Page 257: PROLOG

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de debora

% A es hijo de B si B es padre de A

hijode(A,B) :- padrede(B,A).

Page 258: PROLOG

% 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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

Page 259: PROLOG

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). %%

padrede('juan', 'maria'). % juan es padre de maria

padrede('pablo', 'juan'). % pablo es padre de juan

padrede('pablo', 'marcela'). % pablo es padre de marcela

padrede('carlos', 'debora'). % carlos es padre de 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).