%% ---- define rules. ----
can_marrige(M) :-
spec(M, annual_income(I), height(H), class_curve(_), wealthy_parents(_)),
I >= 1000,
H >= 180.
can_marrige(M) :-
spec(M, annual_income(I), height(_), class_curve(S), wealthy_parents(_)),
I >= 1000,
S >= 65.
can_marrige(M) :-
spec(M, annual_income(_), height(H), class_curve(_), wealthy_parents(yes)),
H >= 180.
can_marrige(M) :-
spec(M, annual_income(_), height(_), class_curve(S), wealthy_parents(yes)),
S >= 65.
%% ---- define spec of men. ----
spec(john, annual_income(680), height(172), class_curve(72), wealthy_parents(yes)).
spec(mike, annual_income(1500), height(182), class_curve(42), wealthy_parents(no)).
spec(mark, annual_income(970), height(178), class_curve(63), wealthy_parents(yes)).
%% ---- show list of men who can marrige. ----