У меня есть эта база знаний:
implements(expression, funcall).
implements(expression, identifier).
implements(specialForm, conditional).
implements(literal, boole).
extends(expression, specialForm).
extends(expression, literal).
extends(value, literal).
has(conditional, condition, expression).
has(conditional, consequent, expression).
has(conditional, alternative, expression).
has(funcall, operator, identifier).
has(funcall, operands, expression).
%if class/interface X depends on class/interface Y.
%dep(X,Y):- X=Y.
dep(X,Y):- extends(Y,X).
dep(X,Y):- has(X,_,Y).
dep(X,Y):- implements(X,Y).
depends(X,Y):- X = Y.
depends(X, Y) :- dep(X,Y).
depends(X, Y) :- dif(Z,Y), dep(X,Z),depends(Z,Y).
![image](https://i.stack.imgur.com/yZWPP.jpg)
метод deps просто проверяет, расширяются ли эти значения, реализуют или имеют одно другое.Метод зависимости заключается в проверке зависимостей, где требуется более 1 ссылки.Например, логическое выражение должно зависеть от выражения, но если я вызываю зависимую функцию (логическое выражение, выражение), я получаю значение false.Почему?