问题描述
对于人类来说,做出高阶陈述是很自然的。例如,您可以声明以下内容(使用伪Prolog
语法):
苏格拉底很聪明:
smart(socrates).
约翰是个男人:
man(john).
苏格拉底相信所有人都是凡人:
believes(socrates,(mortal(X) :- man(X))).
如果某人很聪明并且相信某事,那一定是真的:
Y :- smart(X),believes(X,Y).
我签出了Prolog
的几个“高阶”扩展名,但是没有一个可以接受像最后两个示例那样的语句。
是否存在允许您做出类似人类的高阶语句的正式系统?
解决方法
这称为modal logic,并用Kripke semantics进行理论化。这是some libraries in python。