• Source
    1. %% ---- define rules. ----
    2.  
    3. can_marrige(M) :-
    4. spec(M, annual_income(I), height(H), class_curve(_), wealthy_parents(_)),
    5. I >= 1000,
    6. H >= 180.
    7. can_marrige(M) :-
    8. spec(M, annual_income(I), height(_), class_curve(S), wealthy_parents(_)),
    9. I >= 1000,
    10. S >= 65.
    11. can_marrige(M) :-
    12. spec(M, annual_income(_), height(H), class_curve(_), wealthy_parents(yes)),
    13. H >= 180.
    14. can_marrige(M) :-
    15. spec(M, annual_income(_), height(_), class_curve(S), wealthy_parents(yes)),
    16. S >= 65.
    17.  
    18. %% ---- define spec of men. ----
    19. spec(john, annual_income(680), height(172), class_curve(72), wealthy_parents(yes)).
    20. spec(mike, annual_income(1500), height(182), class_curve(42), wealthy_parents(no)).
    21. spec(mark, annual_income(970), height(178), class_curve(63), wealthy_parents(yes)).
    22.  
    23. %% ---- show list of men who can marrige. ----
    24. :- can_marrige(M), write(M), nl, fail.
    25.