命题逻辑公式正确性咨询:恰有2个命题a,b,c为真的公式验证
关于“命题a、b、c中恰好有2个为真”的命题逻辑公式判断
嗨,自学命题逻辑确实得慢慢摸索,别着急,咱们一点点来分析你的解法~
首先很遗憾地告诉你,你写的公式(a <-> b) -> c是不正确的,咱们通过具体例子和公式含义拆解就能看出来问题:
a <-> b的意思是a和b“同真同假”,整个公式(a <-> b) -> c翻译过来是“如果a和b真假一致,那么c为真”。- 举个反例:当a真、b真、c假时,这正好是“恰好两个命题为真”的情况,但此时
a<->b为真,真->假的结果是假,和咱们要的“真”结果矛盾。 - 再看另一种错误情况:当a假、b假、c真时,只有c一个命题为真,不符合“恰好两个”,但
a<->b为真,真->真的结果是真,公式返回了错误的真值。
那正确的公式应该怎么构建呢?“恰好两个为真”本质是三种互斥情况的析取:三个命题里刚好任意一对为真,剩下的一个为假。咱们可以把这三种情况分别写出来,再用逻辑或(∨)连接:
- 情况1:a真、b真、c假 →
a ∧ b ∧ ¬c - 情况2:a真、b假、c真 →
a ∧ ¬b ∧ c - 情况3:a假、b真、c真 →
¬a ∧ b ∧ c
组合起来就是完整的公式:
(a ∧ b ∧ ¬c) ∨ (a ∧ ¬b ∧ c) ∨ (¬a ∧ b ∧ c)
另外还有一种等价的写法:先表示“至少两个命题为真”,再排除“三个都为真”的情况。
- “至少两个为真”的公式是
(a∧b)∨(a∧c)∨(b∧c) - 排除“三个都真”就是加上
¬(a∧b∧c)的约束,所以公式可以写成:
[(a∧b)∨(a∧c)∨(b∧c)] ∧ ¬(a∧b∧c)
你可以自己列个真值表验证一下,这两种公式都会在“恰好两个命题为真”时返回真,其他情况返回假,完全符合需求~
内容的提问来源于stack exchange,提问作者Nuki
相关产品推荐
相关产品推荐

