我认为您需要一小组简单的规则来告诉您两个表达式是否相等或完全不同。
让我们从最简单的开始:b>3 和 b<=3
检查它们是否相等很容易:b>3
并且b>3
相等,但b>3
显然b<=3
不是。
要查看它们是否完全不同,我们必须比较b>3
和NOT (b<=3)
。通过简单地在它前面添加 NOT,我们将“distinct”更改为“equal”比较。
您的软件现在应该具有转换NOT (b<=3)
为(b>3)
. 由于这些完全相等,原始的完全不同。
如果比较比较困难,你应该开始使用摩根定律。该定律规定以下表达式是相等的:
NOT (A AND B) is equal to NOT A OR NOT B
NOT (A OR B) is equal to NOT A AND NOT B
现在结合两个规则:
- 将 NOT 放在表达式之一的前面
- 使用摩根定律将 NOT 分配到表达式的最基本部分。
- 然后比较所有元素
例如,假设我们想知道以下表达式是否完全不同:
(a<3) and not (b>=7)
(b>=7) or (a>=3)
首先在第二个之前放一个大的NOT:
NOT ((b>=7) or (a>=3))
然后分发 NOT:
(NOT (b>=7)) and (NOT (a>=3))
现在使用第一条规则从两个表达式中删除 NOTS:
(a<3) and (b<7)
(b<7) and (a<3)
然后在两个表达式之间找到相同的元素。在这种情况下,第一个表达式中的所有元素都可以在第二个表达式中找到,反之亦然。这意味着原始表达式是完全不同的。