我正试图弄清楚如何将"[agent A]want to[verb]to[agent B]"编码为一阶逻辑(例如"John want to bite Sara")。
将"John bites Sara"编码为FOL应该是:bites(John, Sara)
或者如果你喜欢John(x) ^ Sara(y) ^ bites(x,y)
。
此外,我注意到这种关系可能是递归的。例如:
-
"约翰想咬萨拉"(约翰想有咬萨拉的欲望)
-
"约翰想咬萨拉"(约翰想处于这样的状态,他想咬萨拉)。
有人知道我该怎么处理吗,尤其是"约翰想咬萨拉"这句话。
小把戏!
让我们先把句子的结构弄清楚:"约翰想咬萨拉"。"他"当然指的是约翰,所以我们可以简化为:
- "约翰想让约翰咬萨拉"
现在,我们可以尝试使用谓词来表达这一点,就像以前一样:
- 想要(约翰,"约翰咬萨拉")
但第二个论点将是一个句子,而不是一个表示"John"或"Sara"之类对象的术语。事实证明,你的句子不能只使用FOL中的谓词来形式化,因为"wants that"不是个体之间的关系(比如"bites(x,y)"),而是个体(John)和句子/命题之间的关系。
"John希望A
"是一个句子运算符:它取一些句子A
并与之形成一个新句子。取句子并形成新句子的运算符的其他例子有"A
和B
"、"ìf A
,然后是B
"、"不是A
"或"A
是必要的"。
因此,"John希望A
"与FOL中的逻辑运算符"处于同一级别"。如果我们想形式化"x
想要A
"形式的句子,我们需要通过添加一个额外的运算符(对于每个x
)来扩展逻辑。这需要向内涵语义(例如可能的世界语义)迈出一步,因为"x
希望A
"的含义不能单独使用真值表来指定(就像"非A
"或"A
和B
"一样)。
例如,认知逻辑(点击)是命题逻辑,由表示"x
相信A
"one_answers"x
知道A
"的句子运算符B_x(A)
、K_x(A)
扩展。