Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. % Some simple test Prolog programs
  2. % --------------------------------
  3.  
  4. % Knowledge bases
  5.  
  6. male('Haakon VII').
  7. male('Olav V').
  8. male('Harald V').
  9. male('Haakon').
  10. female('Martha').
  11. female('Mette-Marit').
  12. female('Maud').
  13. female('Sonja').
  14. parent('Haakon VII','Olav V').
  15. parent('Maud','Olav V').
  16. parent('Olav V','Harald V').
  17. parent('Martha','Harald V').
  18. parent('Harald V','Haakon').
  19. parent('Sonja','Haakon').
  20.  
  21. father(X, Y) :-
  22. parent(X, Y),
  23. male(X).
  24.  
  25. mother(X, Y) :-
  26. parent(X, Y),
  27. female(X).
  28.  
  29. sibling(X, Y) :-
  30. parent(Z, X),
  31. parent(Z, Y).
  32.  
  33. brother(X, Y) :-
  34. sibling(X, Y),
  35. male(X).
  36.  
  37. sister(X, Y) :-
  38. sibling(X, Y),
  39. female(X).
  40.  
  41. spouse(X, Y) :-
  42. parent(X, Z),
  43. parent(Y, Z).
  44.  
  45. % X is the brother-in-law of Y
  46. brother_in_law(X, Y) :-
  47. male(X),
  48. sibling(X, A),
  49. spouse(A, Y).
  50.  
  51. sister_in_law(X, Y) :-
  52. female(X),
  53. sibling(X, A),
  54. spouse(A, Y).
  55.  
  56. uncle(X, Y) :-
  57. male(X),
  58. sibling(X, A),
  59. parent(A, Y).
  60.  
  61. aunt(X, Y) :-
  62. female(X),
  63. sibling(X, A),
  64. parent(A, Y).
  65.  
  66. grandmother(X, Y) :-
  67. female(X),
  68. parent(X, A),
  69. parent(A, Y).
  70.  
  71. grandfather(X, Y) :-
  72. male(X),
  73. parent(X, A),
  74. parent(A, Y).
  75.  
  76. cousin(X, Y) :-
  77. uncle(A, X),
  78. aunt(A, X),
  79. parent(A, Y).
  80.  
  81. ancestor(X, Y) :-
  82. parent(X, Y).
  83.  
  84. ancestor(X, Y) :-
  85. parent(X, Z),
  86. ancestor(Z, Y).
  87.  
  88. descendant(X, Y) :-
  89. parent(Y, X).
  90.  
  91. descendant(X, Y) :-
  92. parent(Z, X),
  93. descendant(Z, Y).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement