0

我有以下三个前提:

P or Q
P => R
Q => R

符号=>表示“暗示”操作。我知道这些前提构成了一个困境,但是如何将它们组合成一个逻辑表达式?

4

3 回答 3

1

由于列表中的每个命题同时为真,因此and它们之间存在隐含。

(P v Q) ^ (P => R) ^ (Q => R)

但我们知道这(P v Q)True

True ^ (P => R) ^ (Q => R)

这给我们留下了:

(P => R) ^ (Q => R)

类似的含义P => R转化为:

~(P ^ ~R)

并且可以转换为:

(~P v R)

使用它,我们有:

(~P v R) ^ (~Q v R)

如果我们分解我们得到:

(~P ^ ~Q) v R

自从:

(~P ^ ~Q) == ~(P v Q)

我们有:

~(P v Q) v R

但我们知道这(P v Q)True

~True v R

或者:

False v R

这导致了最终答案:

R
于 2013-01-31T14:30:05.630 回答
0

最初的问题展示只是自然演绎中的或消除。这是直觉逻辑的原则,这里不需要关于布尔代数的经典论证。

直观地说,P v Q 类似于 P 或 Q 的不相交和的类型(类似于某些编程语言中的联合类型)。如果您有一条从 P => R 出发的方法,另一条从 Q => R 出发——换句话说,分别是该类型的函数——您可以将它们放在一起以消除析取并获得结果 R两种情况。

这有时表现为像这样的高阶函数组合器:

case: P v Q => (P => R) => (Q => R) => R

您实际上可以将 P v Q定义 为允许对任意 R 进行这种推理的逻辑运算符。

进一步注意,这是逻辑和编程的 Curry-Howard 对应关系的关键方面之一。

于 2013-03-01T21:53:53.393 回答
-1

对于布尔代数,蕴涵 A=>B 应读作“如果 A 为真 B 不能为假”,它有一个等效公式:蕴涵 A=>B 是 (!A || B) 。

在你的情况下 P=>R ~ !P || R , Q=>R ~ !Q||R 所以我们有 !(P || Q) && R

更新:复杂表达式通常由 &-ing 简单表达式组成。很可能你应该证明一些表达式 X (假设 P == “下雨了”,Q == “下雪了”,R == “我会带一把雨伞”。你应该证明像 X = =“如果下雨下雪我会带伞”)

所以你这样做 ((P || Q) && (P=>R) && (Q => R) ) => X. 当简单表达式为真时,你应该检查它是否适用于所有情况。左边部分正好等于 P||Q && R

于 2013-01-30T19:47:13.070 回答