Возможно ли это в прологе?

#prolog

#пролог

Вопрос:

У меня есть простой вопрос. Я знаю, что этот пролог должен уметь извлекать уроки из основных фактов, которые я ему даю. В следующем сценарии:

2 человека могут быть друзьями, если у них есть общий язык программирования. Джон знает Cpp. Джон дружит с Майком.

Верен ли вопрос «знает ли Майк cpp»?

Это то, что я ожидал бы, но я не могу заставить его работать со следующим кодом

 lang(cpp). lang(python). dev(john). dev(mike). dev(leo). knows(john,cpp). friend(john, mike). website(app). website(stackoverflow). notWorking(app). notWorking(stackoverflow). friend(X,Y):-findall(Z,knows(X,Z),L1), findall(Z2,knows(Y,Z2),L2),common(L1,L2). common([H1|T1],[H2|T2]):- H1 == H2; H1 == T2 ; T1 == H2 ; T1 == T2.  

Я всего лишь новичок, я даже не знаю, как сформулировать поиск здесь для такого рода вопросов. Заранее спасибо.

Комментарии:

1. Пролог не строит догадок. Это неправда, что каждый друг должен знать cpp. Нейронная сеть или что-то в этом роде может иметь такое значение после получения достаточных статистических данных. Скажите: 66% уверены в этом knows(mike, cpp) .