我正试图解决命题逻辑中的一个问题,我认为我从未见过任何地方所描述过的问题。我在这里发帖,看看是否有人有一个希望的标准解决方案。
问题:给定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
因为我们没有说明这些命题是互斥的,所以paris
和berlin
(或lyon
和{ {1}})两者可能同时成立,并且意味着矛盾。在适当的背景知识的现状下,解决方案将简化为berlin
)。
它类似于找到公式paris or lyon
的含义的问题,但它不相同,因为一个简单的含义可以包含(F => p)
(实际上,主要含义只是p
})。
再一次,我在这里发帖,希望有经验丰富的人看到它并说:"啊,但这只是问题的变体,如此"。这将是理想的,因为它将允许我利用现有算法(特别是可满足性)和概念。
另外,仅仅为了获得额外的信息,我实际上是在尝试用平等逻辑来解决这个问题,即命题是等式的命题逻辑。这当然更复杂,但命题案例可能是一个很好的踩踏石。
感谢您的时间。
答案 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)
这是我自己的解决方案。我发布了一个希望了解标准解决方案的问题,但也许没有一个。
将F
转换为等效的DNF公式(析取范式),即连词F1 or ... or Fn
的分离,其中每个Fi
是一个连接子句。联合条款是文字的结合,其中文字是命题或其否定。将公式转换为DNF是一种标准程序。
对于每个分离Fi
。它有以下三种形式之一:
L1 and ... and Lmi and p
L1 and ... and Lmi and not p
L1 and ... and Lmi
(p
未出现在其中)。让inputs(Fi)
成为联合L1 and ... and Lmi
,output(Fi)
分别为true
,false
和neutral
。
直觉是,如果Fi
是F
的DNF中唯一的不相符,那么如果inputs(Fi)
成立,我们需要p
才能获得真值{{ 1}}(output(Fi)
意味着可以采用任何一种方式)neutral
来保持。
当然,问题是F
通常不会是唯一的分离。对于没有输出Fi
的给定的析取Fi
,可能会有一个具有不同输出的析取true
,以便Fj
可以满足,也就是说,有一个分配给ìnputs(Fj) and inputs(Fi)
的输入也满足Fi
,因此在满足Fj
的同时允许p
为假。
因此,我们将结果命名为输出F
true
和与产出G1, ..., Gk
或false
neutral
分离,并将H1, ..., Hl
定义为
(inputs(G1) or ... or inputs(Gk)) and not (inputs(H1) or ... or inputs(Hl))
然后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
承认F
,berlin
和paris
中不止一个同时为真。因此,虽然要求lyon
或paris
为真,但也需要lyon
,否则将隐含not berlin
和france
。在存在背景知识的情况下,表明最多只有一个变量同时为真,解决方案只是not france
,因为这会自动暗示lyon or paris
。