Как мне найти все вещи, которые есть в p1, но не в p2 (ie. Red)
В этом конкретном простом случае достаточно спросить:
?- p1(X), \+ p2(X).
X = red
; false.
Однако эта схема не может быть легко расширена для более сложных программ. Многие семантические c проблемы должны быть решены. Как ...
... немонотонность. При добавлении факта p2(red)
запрос не будет выполнен. Так что эта программа по своей сути немонотонная c.
... недостаточная реализация. Это происходит, когда термины являются более сложными и не основаны.
... несоответствие. Это происходит, когда вы хотите одновременно использовать ограничения, такие как CLP (FD), в вашей программе. Неожиданный сбой \+ p2(X)
может быть следствием.