为什么统一对推理引擎如此重要?


Answers:


11

统一是计算机科学中的一个基本概念,也许有时我们甚至认为它是理所当然的。每当我们有一条规则,方程式或模式并想将其应用于某些数据时,就会使用统一将规则专门用于数据。或者,如果我们要组合两个通用但重叠的规则,则统一为我们提供了最通用的组合规则。统一是核心

  • 定理证明和证明助手,包括一些基于高阶统一的证明。
  • Prolog实施(作为解决方案)。
  • 类型推断算法。
  • 计算语言学/自然语言处理。
  • 术语重写系统(例如Maude)可以用作编程语言语义的基础。
  • 演绎数据库。
  • 专家系统或更笼统的人工智能。
  • 计算机代数系统。
  • 功能语言中的模式匹配(至少部分...仅匹配)。
  • 一些解析方法。
  • 一些查询语言,尤其是涉及语义网的查询语言。

8

诸如Isabelle / HOL之类的证明助手在逻辑演算的句法层面上工作。假设您有惯用的规则(MP)

PP  

和证明目标

一种bCd一种b Cd

我们人类立即看到这是惯用的尾随,但是机器必须匹配目标以句法统治(无论您是apply rule mp还是apply simp),而这就是统一所做的。算法找到φ P = 一个bφ Q = c ^ d,实例化规则和应用它。φφP=一种bφ=Cd

simp现在这样的助手方法的好处是,如果您的目标是

一种bCd一种 d

他们将发现的MP,规则应用合适的序列P P Q兼容unifications的各个步骤,解决的目标。PPPP


符号:随着一组逻辑公式中,符号Γ={φ1φñ}

Γψ

表示以下内容:

Γψ

Γψψ

Pφ


3

2

我认为推理引擎并不重要。但是,统一算法对于类型推断非常有帮助。这是两种截然不同的推论。

类型推断对计算机科学很重要,因为类型在编程语言理论中很重要,而编程语言是计算机科学的重要组成部分。类型也接近逻辑,并且在自动定理证明中得到了广泛使用。在很多(如果不是全部)证明助手和SMT求解器中,有统一算法的实现。

推理引擎与人工智能有关,这也很重要,但又有很大的不同。(我已经看到了学习和逻辑之间的联系,但这似乎很可取。)


我认为第一句话无效。看我的答案。
拉斐尔

1
我也不同意第一句话。解析(统一的专业化)是Prolog的核心,Prolog是专家系统和其他推理引擎最常用的实现语言之一。
戴夫·克拉克

@Raphael和Dave:那么您说统一算法直接用于推理引擎吗?
jmad 2012年

@jmad:我不知道有统一的算法,我也不能确定什么样的系统被称为“推理引擎”。我知道,只要出现逻辑和/或形式语义,统一就会被广泛使用。请参阅Dave的答案以获取列表。
拉斐尔

@Raphael:这几乎是我要解决的问题:似乎推理引擎与我所了解的关于类型和逻辑的推理无关
jmad 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.