Как правильно обратиться к функции в Пролог, чтобы она вернула ответ?

Как правильно обратиться к этой функции купил_путёвку(x,y), чтобы она вернула ответ, например отвела точно на такой вопрос, где Иван или Петя купили путёвку, я пытаюсь обратится следующем образом купил_путёвку(X,Y), но мне выдаёт сообщение false, хотя должен выдать ответ, например , оптисофт или авиатор.

деньги('Ivan',есть).%есть деньги
деньги('Petya',есть).%есть деньги
паспорт('Ivan',есть).%у Ивана есть паспорт
паспорт('Petya',есть).%у Пети есть паспорт
ближе(авиатор,оптисофт).%Оптисофт ближе, чем авиатор

купил_путёвку(x,y):-ближе(x,y),деньги(x,y),паспорт(x,y).

Ответы (1 шт):

Автор решения: Anton Danilov

Как правильно обратиться к этой функции купил_путёвку(x,y), чтобы она вернула ответ, например отвела точно на такой вопрос, где Иван или Петя купили путёвку...

Решение:

 имеет(иван, деньги).
    имеет(иван, паспорт).
    
    имеет(петя, деньги).
    имеет(петя, паспорт).
    
    ближе(авиатор, оптисофт).% Оптисофт ближе, чем авиатор
    
    купил_путёвку(Person, TourOp):-
         ближе(_, TourOp),
         имеет(Person, деньги),
         имеет(Person, паспорт).
        
        
        Запрос:
        ?- купил_путёвку(Person, TourOp).
    
        Person = иван,
        TourOp = оптисофт
Next:       
        Person = петя,
        TourOp = оптисофт
→ Ссылка