В этой статье описаны дополнительные предикаты для работы в языке искусственного интелекта Турбо Пролог.
bound(переменная)
Истинно,если переменная является конкретизированной.
free(переменная)
Истинно, если переменная является неконкретиаированной.
Например, предикат для сложения, который реализует конкретизации
(i,i,0), (i,0,i), (0,i,i) И (i,i,i):
predicates
plus( real, real, real)
clauses
plus(X,Y,Z):-
free(Z),bound(X),bound(Y),Z=X+Y,I. /* сложение */
plus(X,Y,Z):-
free(Y),bound(X),bound(Z),Y»Z-X,I. /* вычетание */
plus(X,Y,Z):-
free(X),bound(Y),bound(Z),X»Z-Y,l. /* вычетание */
plus(X,Y,Z):- bound(X),bound(Y),bound(Z),Z"X+Y. /* проверка */
После 'запуска можно указать внешние цели:
Goal: ответ (без количества решений)
plus(3,2,X) .X=5
plus(3,X,5) X=2
plus(X,2,5) X=3
plus(3,2,5) True
plus(3,2,6) False