Для объединения в Прологе, мы пишем:Как определить subsumptions в Prolog списках
match(X, Y) :-
X=Y.
Вместо сопоставления (X, Y) следующего, если X = Y. Я хотел бы, чтобы добиться успеха, если каждый из элементов Х представляет собой подмножество или надмножество соответствующего элемента Y.
Это мой код категоризации:
:- op(400, yfx, <<<).
subset(X, X).
subset(X, Y) :-
X <<< Y.
subset(X, Z) :-
X <<< Y,
subset(Y, Z).
ОБНОВЛЕНИЕ:
В моем коде, у меня есть эти факты subsumptions:
man <<< human.
human <<< animal.
animal <<< living.
, что мне нужно будет изменить код соответствия выше работать следующим образом:
Если у меня есть:
[living, X] ==> [mortal, X].
и
[man, socrates].
Я хотел бы быть в состоянии доказать:
?- mortal(socrates).
yes.
Существует совпадение между человеком и живым, поскольку человек здесь является подмножеством жизни.
ли эти простые списки, или соединений (список в список) списки? И если последнее, что представляет собой подмножество? Другими словами, будет ли 'A' рассматриваться как подмножество' B', если вы сглаживаете оба из них, а 'a flattened' является подмножеством' B flattened'? – lurker
Ваш вопрос может означать много чего. Кажется, вы хотите определить свой собственный язык, но вы больше не оставляете его. Например. в чем разница между «<<<' and '==>». Кажется, что они служат аналогичной цели. – false
В моем примере я подразумеваю под (<<<) подмножество, например: man <<< human. И я подразумеваю под (==>). A ==> B. – aamls