【发布时间】:2020-09-14 18:37:04
【问题描述】:
我的目标是在prolog中写一个小证明助手。我的第一步是定义逻辑连接词如下:
:-op(800, fx, -).
:-op(801, xfy, &).
:-op(802, xfy, v).
:-op(803, xfy, ->).
:-op(804, xfy, <->).
:-op(800, xfy, #).
最后一个运算符# 的含义是作为&、v、-> 或<-> 的占位符。我的问题是,我不知道如何在 prolog 中定义它。我尝试通过以下方式解决我的问题:
X # Y :- X v Y; X & Y; X -> Y; X <-> Y.
但以下定义:
proposition(X) :- atomicproposition(X).
proposition(X # Y) :- proposition(X), proposition(Y).
proposition(- X) :- proposition(X).
与
atomicproposition(a).
给予
?- proposition(a v -a).
false
我做错了什么?
【问题讨论】:
标签: prolog operator-keyword placeholder