验证逻辑!(a == k || b == k || c == k)不等于(a!= k || b!= k || c!= k)

时间:2014-11-27 08:14:58

标签: logic conditional-statements

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

我的意图,即表示为复合逻辑语句,是说如果a,b或c等于k(a == k或b == k或c == k),那么声明应该返回false。

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

我只想验证我的更正。

2 个答案:

答案 0 :(得分:2)

(a == k || b == k || c == k)相当于!(a != k && b != k && c != k)。这是 De-Morgan定律的应用

正式证据并不容易,所以不会试图给它。 (但是,一旦你建立了一些数学公理,你可以做的第一个证据之一。)你可以通过使用反例证明你的陈述不相同:设置a != b意味着(a != k || b != k || c != k)始终为true,但!(a == k || b == k || c == k) 可能为真。

答案 1 :(得分:0)

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