medusa% cat rulers.pl reigns(henry7, 1485, 1509). reigns(henry8, 1509, 1547). reigns(edward4, 1547, 1553). reigns(jane_grey, 1553, 1553). reigns(mary1, 1553, 1558). reigns(elizabeth1, 1558, 1603). reigns(james1, 1603, 1625). reigns(charles1, 1625, 1642). reigns(oliver_cromwell, 1642, 1658). reigns(richard_cromwell, 1658, 1659). reigns(charles2, 1660, 1685). reigns(james2, 1685, 1688). reigns(mary2, 1688, 1694). reigns(william3, 1688, 1702). reigns(anne, 1702, 1714). reigns(george1, 1714, 1724). reigns(george2, 1727, 1760). reigns(george3, 1760, 1811). reigns(george4, 1811, 1830). reigns(william4, 1830, 1837). reigns(victoria, 1837, 1901). reigns(edward7, 1901, 1910). reigns(george5, 1910, 1936). reigns(edward8, 1936, 1936). reigns(george6, 1936, 1952). reigns(elizabeth2, 1952, 2001). house_of(henry7, tudor). house_of(henry8, tudor). house_of(edward4, tudor). house_of(jane_grey, tudor). house_of(mary1, tudor). house_of(elizabeth1, tudor). house_of(james1, stuart). house_of(charles1, stuart). house_of(oliver_cromwell, commonwealth). house_of(richard_cromwell, commonwealth). house_of(charles2, stuart). house_of(james2, stuart). house_of(mary2, orange). house_of(william3, orange). house_of(anne, stuart). house_of(george1, brunswick). house_of(george2, brunswick). house_of(george3, brunswick). house_of(george4, brunswick). house_of(william4, brunswick). house_of(victoria, brunswick). house_of(edward7, saxe_coburg_gotha). house_of(george5, windsor). house_of(edward8, windsor). house_of(george6, windsor). house_of(elizabeth2, windsor). ruler(N, Y) :- reigns(N, A, B), Y >= A, Y =< B. /* =< instead of <= */ rules(Y) :- reigns(N, A, B), Y >= A, Y =< B, write(N), write(' ruled from '), write(A), write(' to '), write(B), nl, fail. years(N, H, Y) :- reigns(N, A, B), house_of(N, H), Y >= A, Y =< B. rulers_of_house(H) :- reigns(N, A, B), house_of(N, H), write(N), write(', from '), write(A), write(' to '), write(B), nl, fail. medusa% pl Welcome to SWI-Prolog (Version 3.2.9) Copyright (c) 1993-1999 University of Amsterdam. All rights reserved. For help, use ?- help(Topic). or ?- apropos(Word). ?- consult(rulers). rulers compiled, 0.01 sec, 6,220 bytes. Yes ?- ruler(X, 1560). X = elizabeth1 ; No ?- ruler(X, 1688). X = james2 ; X = mary2 ; X = william3 ; No ?- house_of(X, stuart). X = james1 ; X = charles1 ; X = charles2 ; X = james2 ; X = anne ; No ?- rules(1570). elizabeth1 ruled from 1558 to 1603 No ?- rules(1688). james2 ruled from 1685 to 1688 mary2 ruled from 1688 to 1694 william3 ruled from 1688 to 1702 No ?- rulers_of_house(stuart). james1, from 1603 to 1625 charles1, from 1625 to 1642 charles2, from 1660 to 1685 james2, from 1685 to 1688 anne, from 1702 to 1714 No ?- halt. medusa%