【问题标题】:Verify that the logic !(a==k || b==k || c==k) is not equivalent to (a != k || b!=k || c!=k)验证逻辑 !(a==k || b==k || c==k) 不等于 (a != k || b!=k || c!=k)
【发布时间】:2014-11-27 08:14:57
【问题描述】:

我在我的程序中遇到了一个错误,我必须区分标题中所述的情况。 a、b、c 是不同的实体,但 a、b 或 c 可能等于 k。

我的意图是表示为复合逻辑语句,即如果 a、b 或 c 等于 k(a==k 或 b==k 或 c==k),则该语句应该返回假。

错误的表达式是:(a!=k || b!=k || c!=k) 我的更正是: !(a==k || b==k || c==k) 推理是前者说在 a,b,AND c 需要等于 k ​​才能使陈述为假。

我只是想验证我的更正。

【问题讨论】:

  • 您应该能够轻松观察到,如果ab 不同(即a!=b),a!=k || b!=k 将始终为真。
  • 逻辑表达式的等价性可能在math.stackexchange.com...上讨论得更好...
  • 可能,尽管我们在编写if 语句时确实经常使用它。
  • @ Damien 我明白了。如果它是假的,那么 a==k 和 b==k 但是 a!=b 所以这个陈述永远不会是假的。

标签: logic conditional-statements


【解决方案1】:

(a == k || b == k || c == k) 等价于!(a != k && b != k && c != k)。这是德摩根定律的应用。

正式的证明并不容易,所以不会尝试给出它。 (但这是一旦你建立了一些数学公理后你可以做的第一个证明。)你可以通过使用一个反例来证明你的陈述是不等价的:设置a != b将意味着(a != k || b != k || c != k)总是 是的,但!(a == k || b == k || c == k) 可能 是真的。

【讨论】:

    【解决方案2】:

    当然它们不等同。当您使用 de-morgan 时,第一个等效于不等式的合取。它们不同的示例:a=1, k=2, b=2, c=3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      • 2021-10-03
      • 2020-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多