has_mother(bart, marge).
has_mother(lisa, marge).
has_mother(maggie, marge).
has_mother(marge, jackie).
has_mother(homer, mona).
has_mother(patty, jackie).
has_mother(selma, jackie).
has_mother(abraham, yuma).
has_mother(yuma, theodora).

has_father(bart, homer).
has_father(lisa, homer).
has_father(maggie, homer).
has_father(marge, clancy).
has_father(homer, abraham).
has_father(herb, abraham).
has_father(patty, clancy).
has_father(selma, clancy).
has_father(abraham, orville).
has_father(yuma, willard).

are_siblings(X, Y) :- 
    has_mother(X, M),
    has_mother(Y, M),
    has_father(X, F),
    has_father(Y, F).

are_half_siblings(X, Y) :-
    (has_mother(X, M),
    has_mother(Y, M));
    (has_father(X, F),
    has_father(Y, F)).

has_child(X, Y) :-
    has_father(Y, X);
    has_mother(Y, X).
