SWI-Prolog - как получить решение с максимальным списком?
Есть предикат family(FAMILY, HUSBAND, WIFE, CHILDREN), выводящий семью. В CHILDREN записывается список из детей. Проблема в том, что сейчас выводятся все возможные решения. Как можно оставить CHILDREN только с максимальным списком, чтобы не было решений вроде CHILDREN = [] или CHILDREN = ['Alex']?
person('London', 'Jack', 'M', date(1998, 3, 20)).
person('London', 'Milla', 'F', date(1998, 9, 3)).
person('London', 'Alex', 'M', date(2008, 9, 3)).
person('London', 'Rose', 'F', date(2008, 9, 3)).
age(DATE, AGE) :-
get_time(TODAY_STAMP),
date_time_stamp(DATE, DATE_TIME_STAMP),
AGE is (TODAY_STAMP - DATE_TIME_STAMP) / 31536000.
children(_, _, []).
children(FAMILY, VISITED_CHILDREN, [NAME|CHILDREN]) :-
person(FAMILY, NAME, _, BIRTHDAY),
age(BIRTHDAY, AGE),
AGE < 18,
not(member(NAME, VISITED_CHILDREN)),
children(FAMILY, [NAME|VISITED_CHILDREN], CHILDREN).
family(FAMILY, HUSBAND, WIFE, CHILDREN) :-
person(FAMILY, HUSBAND, HUSBAND_GENDER, HUSBAND_BIRTHDAY),
person(FAMILY, WIFE, WIFE_GENDER, WIFE_BIRTHDAY),
HUSBAND \= WIFE,
HUSBAND_GENDER = 'M',
WIFE_GENDER = 'F',
age(HUSBAND_BIRTHDAY, HUSBAND_AGE),
age(WIFE_BIRTHDAY, WIFE_AGE),
HUSBAND_AGE >= 18,
WIFE_AGE >= 18,
children(FAMILY, [], CHILDREN).