Programming languages 关于高阶逻辑推理形式表达能力的一个问题

Programming languages 关于高阶逻辑推理形式表达能力的一个问题,programming-languages,computer-science,logic,Programming Languages,Computer Science,Logic,我真的不知道这是否得到了科学证明,但我在一本书中读到(这是彼得·诺维格(Peter Norvig)的一本相对现代的人工智能书),二阶逻辑编程可能比现有的一阶语言更具表现力 问题是:高阶谓词逻辑在其表达能力方面是否已经统计/符号证明超过了一阶谓词?或者他们只是为您的知识库带来了模块化/便利性/可维护性 此外:如果有某种坚定的方向,我可以去寻找比我拥有的更多的表达能力(我的意思正是我用给定的语义/语法书写的符号的描述性潜力),那么我很高兴听到几乎所有的东西:) 谢谢。二阶逻辑比一阶逻辑更强大、更富有

我真的不知道这是否得到了科学证明,但我在一本书中读到(这是彼得·诺维格(Peter Norvig)的一本相对现代的人工智能书),二阶逻辑编程可能比现有的一阶语言更具表现力

问题是:高阶谓词逻辑在其表达能力方面是否已经统计/符号证明超过了一阶谓词?或者他们只是为您的知识库带来了模块化/便利性/可维护性

此外:如果有某种坚定的方向,我可以去寻找比我拥有的更多的表达能力(我的意思正是我用给定的语义/语法书写的符号的描述性潜力),那么我很高兴听到几乎所有的东西:)


谢谢。

二阶逻辑比一阶逻辑更强大、更富有表现力。二阶逻辑允许一个量化的关系,除了变量;因此,使用一个二阶逻辑句子来表达需要无限多个一阶逻辑句子的东西是可能的。这种关系类似于FOL和命题逻辑之间的关系

作为一个例子,考虑SOL语句:

\forall R \exists x \exists y (x R y)
这表明,对于任何关系R,都有x和y,这样x和y都成立。为了在FOL中表达这一点,我们需要对语言中的每个关系R都有一个语句,它显然可以是无限的

对于一个更有趣的例子,我们可以看看关系的传递闭包不能用FOL表示的证明。如果你想看,我可以把它贴出来;但为了简洁起见,除非有人想要,否则我将省略它


编辑:您可能还感兴趣——从本质上讲,它将复杂性和可表达性的概念联系在一起——如果您可以在某个逻辑片段中完整地陈述一个问题,那么您就知道它包含在相应的复杂性类中。例如,如果一个问题可以用存在二阶逻辑来表述,那么它就是NP;如果它可以用一阶逻辑+最小不动点算子表示,那么它就是P。如果你能证明存在二阶逻辑的每一个语句都可以转换成FOL(LFP),那么你已经证明了P=NP。(好的,你已经证明了NP\P子集,但是因为已经知道了另一个包含,你已经证明了等式…

你可能想研究一下。

谢谢,我知道二阶逻辑的基础知识;但仍然有一个问题——在正常人的理解中,表达关系的能力高于关系等。表达能力的提高是吗?也许我就是不明白这个概念?(我所说的“这个概念”指的是表达能力)我意识到我没有回答你所有的问题;我不知道在逻辑编程中使用SOL的任何尝试的结果,但是,从理论上讲,是的,SOL更具表现力。是的,它增加了表现力——SOL中的一些语句无法在下文中捕获。举手我想看看传递闭包证明,如果你手边有。A这是证据;对不起,这本书相当冗长,而且没有它本来应该说的那么简洁;这是数学逻辑课上的一套旧作业。