boolean-logic - 为什么(A或B)和((不是A)或C)=(A或B)和((不是A)或C)和(B或C)?
问题描述
我无法证明这两个布尔公式在逻辑上是等价的。我认为需要使用分配和吸收属性,但是子句的not a
和存在让我感到困惑。c
不知道如何在同一个表达式中处理两者。
解决方案
我认为您主要必须使用分配律:
我表示!A
not A
,以使符号更短:
1.) 重构等式左边:
(A or B) and (!A or C)
应用分配律:
(A and (!A or C)) or (B and (!A or C))
稍微简化一下:
(A and !A) or (A and C) or (B and !A) or (B and C)
因为 (A and !A) 总是假的,这就变成了:
(A and C) or (B and !A) or (B and C)
2.) 重构等式右边:
(A or B) and (!A or C) and (B or C)
(A and !A) or (A and C) or (B and !A) or (B and C)
因为 (A and !A) 总是假的,这就变成了:
(A and C) or (B and !A) or (B and C)
现在你在等式两边得到相同的表达式,这告诉你,这两个布尔表达式是等价的。
推荐阅读
- r - 将 R 列表转换为 tibble() - 咕噜声还是更好的选择?
- javascript - 粘性元素在滚动条的孔上表现不同
- javascript - 在 Typescript 中,构建 Map 时出错
从数组 使用公共字符串字段作为键 - visual-studio-code - 如何在 VSCode 中退出 IntelliSense 建议和/或添加建议?
- c++ - 为什么编译器会接受这个删除的移动构造函数?
- php - PHP Imagick Resizing Gif frames 有奇怪的问题
- java - 改造和 CheckWX.com 响应
- bash - bash:将带有特殊字符的字符串回显到文件中
- java - 如何使用 Jackson 将其序列化为 xml?
- permissions - 如何删除用户的所有角色?