证明以下三个表达式是等效的
1. if x then y else z
2. if y then x or z else z > x
3. if z then x≤y else x∧y
询问一些指示从哪里开始或至少要阅读有关
的链接答案 0 :(得分:3)
一种直接的方法是通过详尽地写下真值表中的所有可能状态来证明等价。 (它只涉及三个布尔变量; - )
+---+---+---+--------------------+----------------------------+----------------------------
| x | y | z | if x then y else z | if y then x v z else z > x | if z then x ≤ y else x ∧ y
+---+---+---+--------------------+----------------------------+----------------------------
| 0 | 0 | 0 | 0 | 0 > 0 = 0 | 0 ∧ 0 = 0
| 0 | 0 | 1 | 1 | 1 > 0 = 1 | 0 <= 0 = 1
| 0 | 1 | 0 | 0 | 0 v 0 = 0 | 0 ∧ 1 = 0
| 0 | 1 | 1 | 1 | 0 v 1 = 1 | 0 <= 1 = 1
| 1 | 0 | 0 | 0 | 0 > 1 = 0 | 1 ∧ 0 = 0
| 1 | 0 | 1 | 0 | 1 > 1 = 0 | 1 <= 0 = 0
| 1 | 1 | 0 | 1 | 1 v 0 = 1 | 1 ∧ 1 = 1
| 1 | 1 | 1 | 1 | 1 v 1 = 1 | 1 <= 1 = 1
+---+---+---+--------------------+----------------------------+----------------------------
注意所有三个函数对于(x,y,z)的所有可能组合都有相同的结果。
或者,也可以直接证明。
首先是一些符号:
x + y x or y
xy x and y
x' not(x)
x = 0 x is false
x = 1 x is true
还有一些观察:
if x then y else z
相当于xy + x'z
。z > x
相当于x'z
(因为z > x
如果iff z为true且x为false,则为真。)x ≤ y
相当于x' + y
因此,要证明问题中的一个等价:
if y then x + z else z > x
= y(x + z) + y'(z > x) (if-then-else)
= y(x + z) + y'(x'z) (z > x)
= xy + yz + x'y'z (distributivity, commutativity)
= xy(z + z') + (x + x')yz + x'y'z (x + x' = z + z' = 1, and and-ing with 1 has no effect)
= xyz + xyz' + xyz + x'yz + x'y'z
= xyz + xyz' + x'yz + x'y'z (xyz + xyz = xyz, or-ing with itself has no effect)
= xy(z + z') + x'z(y + y') (regroup terms)
= xy + x'z (z + z' = y + y' = 1)
= if x then y else z
同样对于问题中的其他等价物。