不同子句的不同变量


10

在解析定理证明中,通常假设不同子句中的变量是不同的。这不是自动发生的事情。它需要大量额外的代码和计算才能实现。鉴于此,我正在寻找一个测试用例。

问题是,到目前为止,在我已经尝试过的所有测试用例中,它没有区别。大概只有在异常情况下才重要。正如Wikipedia所说,“不同子句中的变量是不同的...现在,将第一子句中的Q(X)与第二子句中的Q(Y)统一意味着X和Y始终成为相同的变量。”

如果不同的子句使用相同的变量,是否有任何已知的测试用例会给出错误的答案?

Answers:


6

编辑:我找到了一个更好的例子。请考虑以下条款: 显然,这组子句是矛盾的。但是如果不重命名变量,则唯一可能的解析度是并且不可能再有解析度-所有这些都导致将替换为,这是不可能的。 P˚FX˚FXX

¬PXPFXPX¬PFFX
PFXFXX

编辑:考虑条款的含义。每个子句都被隐式地普遍量化。因此,其变量的含义并不固定。现在假设您有两个子句都包含。如果不重命名进行分辨率在其中的一个,然后添加一个含义,它没有:你说手段在这两个条款一样的东西,这是不正确的。如果您的子句中没有不同的变量,那么解析将给您太弱的结论。X X XXXXX


(原始答案。)例如,让我们有4个子句:

  1. 一个X
  2. ¬一个CX
  3. ¬C
  4. ¬Cd

其中是变量,而常数。如果我们对前两个执行解析而不重命名,则将得到。我们可以继续使用来获得但是现在我们无法使用来解决它。XÿCdXXCX¬CCC¬Cd

另一方面,如果在第二个变量中将重命名为,以获得不相交的变量集,则将从第一个解析步骤中得到,并且可以使用派生一个空子句和。XÿXCÿ¬C¬d


当我在证明者中尝试使用禁用的不同变量来尝试此操作时,它将使用解析以给出,类似地获得并因此获得空子句,因此最终结果是相同的。我想念什么吗?X¬C一个¬一个
rwallace 2012年

@rwallace没有唯一变量并不意味着您不能派生空子句,只是方法不完整。如果始终重命名变量,则选择子句的顺序无关紧要,如果原始集不令人满意-方法已完成,则将始终派生空子句。但是,如果您不重命名变量,那么(如示例所示)顺序突然变得很重要-某些派生序列将找不到空子句。并且,证明者不能事先“告诉”哪个推导序列是正确的。
PetrPudlák2012年

但是不是不是一个完整的方法最终必须尝试所有可能的派生方法(除非它首先找到空子句)?为确保不能保证它会尝试我在提到的变量之前提到的推导,但是当您提到的变量由于缺少独特的变量而失败时,我提到的变量仍然是开放的,因此必须返回完整的方法并尝试那些早晚?
rwallace 2012年

您关于摘要中子句含义的附录是有道理的,但在我看来,如果是这样,那么应该可以找到一个测试用例,我可以将其提供给证明者并使其给出错误的答案,如果独特变量功能已禁用。到目前为止,我只是找不到这种测试用例。
rwallace 2012年

@rwallace为什么要这么做?解析是一种完整的方法,您知道在任何情况下都仅需对每对子句执行一次解析。您建议最终尝试所有可能的顺序,以进行回溯。这将大大增加算法的复杂度,甚至与在每个步骤中仅重命名变量也无法遥不可及。
PetrPudlák2012年
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.