如何获得"间接含义"在命题逻辑中

时间:2014-05-28 04:36:31

标签: algorithm logic boolean-logic

我正试图解决命题逻辑中的一个问题,我认为我从未见过任何地方所描述过的问题。我在这里发帖,看看是否有人有一个希望的标准解决方案。

问题:给定F中出现命题可满足的逻辑公式p和命题F,确定是否存在不包含的可满足的命题公式 phi p这样

phi => (F => p)

如果是的话,请提供这样的phi。

为了直觉,我会将phi称为"对于F"的间接含义,因为它需要暗示p而不提p。相反,它提到了通过F影响p的其他命题。

以下是一个例子,其中包括法国' lyon'' paris'和柏林'都是命题:

F is "paris => france and lyon => france and berlin => not france"

p is "france"

然后解决方案phi为paris or lyon,因为这意味着(F => france)

(更新:实际上精确的解决方案是(paris or lyon) and not berlin因为我们没有说明这些命题是互斥的,所以parisberlin(或lyon和{ {1}})两者可能同时成立,并且意味着矛盾。在适当的背景知识的现状下,解决方案将简化为berlin)。

它类似于找到公式paris or lyon的含义的问题,但它不相同,因为一个简单的含义可以包含(F => p)(实际上,主要含义只是p })。

再一次,我在这里发帖,希望有经验丰富的人看到它并说:"啊,但这只是问题的变体,如此"。这将是理想的,因为它将允许我利用现有算法(特别是可满足性)和概念。

另外,仅仅为了获得额外的信息,我实际上是在尝试用平等逻辑来解决这个问题,即命题是等式的命题逻辑。这当然更复杂,但命题案例可能是一个很好的踩踏石。

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

给出你的例子

F is "paris => france and lyon => france and berlin => not france"

p is "france"

F有4个陈述:

F1 = paris
F2 = france and lyon
F3 = france and berlin
F4 = not france

F可以通过简化含义=>

进行分解
F1-2: "paris => france and lyon" = "(not paris) or (france and lyon)"

F2-3: "france and lyon => france and berlin" = "(not france or not lyon) or (france and berlin)"

F3-4: "france and berlin => not france" = "(not france or not berlin) and (not france)"

如果我们通过F影响前进,我们将做推理:

Reason(F): not (not (not F1 or F2) or F3) or F4

not (not (not paris or (france and lyon)) or (france and berlin)) or (not france)

因此,我们有以下解决方案:

S1: not france

S2: not (not (not F1 or F2) or F3):
     not (not (not paris or (france and lyon)) or (france and berlin))

接下来,我们可以评估p其中:

p: france => france = TRUE

S1 = not france = not TRUE = FALSE ~ not applicable

S2 = not (not (not paris or (france and lyon)) or (france and berlin))

   = not (not (not paris or (TRUE and lyon)) or (TRUE and berlin))

   = not (not (not paris or lyon) or berlin)

   = not ((paris AND not lyon) or berlin)

   = not (paris AND not lyon) AND not berlin

   = not (paris AND not lyon) AND not berlin

   = (not paris OR lyon) AND not berlin

因此,要使p中的F为真,您需要这些条件为TRUE

pF1 AND pF2:

pF1 = (not paris OR lyon) = (paris,lyon) in { (F,F), (F,T), (T,T) }

pF2 = not berlin => berlin = FALSE

答案 1 :(得分:1)

这是我自己的解决方案。我发布了一个希望了解标准解决方案的问题,但也许没有一个。

  1. F转换为等效的DNF公式(析取范式),即连词F1 or ... or Fn的分离,其中每个Fi是一个连接子句。联合条款是文字的结合,其中文字是命题或其否定。将公式转换为DNF是一种标准程序。

  2. 对于每个分离Fi。它有以下三种形式之一:

    • L1 and ... and Lmi and p
    • L1 and ... and Lmi and not p
    • L1 and ... and Lmip未出现在其中)。

    inputs(Fi)成为联合L1 and ... and Lmioutput(Fi)分别为truefalseneutral

    直觉是,如果FiF的DNF中唯一的不相符,那么如果inputs(Fi)成立,我们需要p才能获得真值{{ 1}}(output(Fi)意味着可以采用任何一种方式)neutral来保持。

  3. 当然,问题是F通常不会是唯一的分离。对于没有输出Fi的给定的析取Fi,可能会有一个具有不同输出的析取true,以便Fj可以满足,也就是说,有一个分配给ìnputs(Fj) and inputs(Fi)的输入也满足Fi,因此在满足Fj的同时允许p为假。 因此,我们将结果命名为输出F true和与产出G1, ..., Gkfalse neutral分离,并将H1, ..., Hl定义为

    (inputs(G1) or ... or inputs(Gk)) and not (inputs(H1) or ... or inputs(Hl))
    
  4. 然后phi是解决方案,因为它不包含phi并暗示p。它不包含F => p,因为它由p构成,定义为不包含inputs。它意味着p,因为它至少满足F => p中的一个,并且不满足任何inputs(G_)。这意味着,在inputs(H_)的DNF中的所有析取中,只有F有机会保持为真(所有文字但Gi已知满意)。因为它们都包含p,如果p为真,那么F也必须如此。

    让我们看看它如何管理给定的例子。

    的DNF
    p

    paris => france and lyon => france and berlin => not france
    

    我们有

    • (not berlin and france) or (not lyon and not paris and not france) 等于G1
    • not berlin and france等于H1

    所以

    • not lyon and not paris and not france
    • inputs(G1) = not berlin

    因此inputs(H1) = not lyon and not paris

    phi

    相当于

    not berlin and not (not lyon and not paris)
    

    解决方案中(lyon or paris) and not berlin 的存在并不直观。它就在那里,因为not berlin承认Fberlinparis中不止一个同时为真。因此,虽然要求lyonparis为真,但也需要lyon,否则将隐含not berlinfrance。在存在背景知识的情况下,表明最多只有一个变量同时为真,解决方案只是not france,因为这会自动暗示lyon or paris