如何将这些前提转换为逻辑参数?

时间:2013-01-30 19:24:03

标签: logic expression

我有以下三个前提:

P or Q
P => R
Q => R

符号 => 代表'暗示'操作。我理解这些前提是一个两难的问题,但它们如何组合成一个逻辑表达式呢?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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逻辑与编程对应的关键方面之一。

答案 2 :(得分:-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