%List of females

 female(alice).
 female(aoife).
 female(adel). 
 female(ada).  
 female(aileen).
 female(aingeal).

 female(barbara).
 female(bella).
 female(bevin).
 female(blaithin).
 female(breda).
 female(brid).
 female(betty).
 female(bridget).
 
 female(cathy). 
 female(christina).
 female(carmel).
 female(carla).
 female(celine).
 female(catherine).

 female(deirdre).
 female(dorothy).
 female(danielle).
 female(dawn).
 female(dana).
 female(daphne).
 female(daria).

 female(edel).
 female(emer).

 female(fiona).
 female(fidelma).

%list of males
 male(adam).
 male(arthur).
 male(abraham).
 male(aaron).
 male(aengus).
 male(aidan).
    
 male(barry).
 male(bob).
 male(billy).
 male(bernard).
 male(brendan).
 male(brian).

 male(colm).
 male(charlie).
 male(calvin).
 male(calum).
 male(cait).
 male(christopher).
 male(carl).
     
 male(des).
 male(donal).
 male(david).   
 male(daniel).
 male(diarmuid).
 male(derek).

 male(frank).
 male(francis).

 male(eamon).

%The families
%family takes the form family(P, C). 
%where P is a list of parents
%and C is a list of children
%Newest Generation
   
  family([calvin, carmel], [diarmuid, dorothy]). 				 
  family([christina, charlie], [des, donal]). 					
  family([colm, cathy], [danielle, dawn, dana, daphne, david, daniel]).
  family([christopher, catherine], [derek, deirdre, daria]).
  family([carl, clodagh], []).  

%middle generation

  family([bob,barbara], [calvin, christina, calum]). 
  family([bernard, betty], [carmel, charlie, colm]).
  family([brendan, bella], [cathy, carla, celine, cait]).
  family([billy, bridget], [christopher, carl]).

%earliest generation

  family([adam, alice],[bob, billy]).
  family([arthur, aoife],[barbara]).
  family([abraham,adel], [barry, bernard]).
  family([aaron, ada], [betty]).
  family([aengus, aileen], [brendan, breda, brian, brid]).
  family([aidan, aingeal], [bella, bevin, blaithin]).

%half-siblings
  parent(fiona, eamon).
  parent(fiona, edel).
  parent(frank, eamon).
  parent(francis, edel).
  parent(frank, emer).
  parent(fidelma, emer).

% the rules
parent(X,Y) :- family([X,_], L), member(Y,L).
parent(X,Y) :- family([_,X], L), member(Y,L).
married_to(X,Y) :- family([X,Y], _) ; family([Y,X], _).

