我有以下三个前提:
P or Q
P => R
Q => R
符号 => 代表'暗示'操作。我理解这些前提是一个两难的问题,但它们如何组合成一个逻辑表达式呢?
答案 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