練習問題 2.1.8
データ型上の(==)は,以下の3つの性質を満たすことが保証されなければならない.
- 反射律: すべての
x
に対してx == x
- 推移律:
x == y
かつy == z
ならばx == z
- 対称律:
x == y
ならばy == x
Bool値の上に定義された
(==)でこれらの性質が保持されていることを示せ.
Boolが
Eqクラスのインスタンスである宣言は以下のとおり.
instance Eq Bool where
False == False = True
False == True = False
True == False = False
False == False = True
- 反射律: 成り立つ.
False == False かつ True == True
だから. - 推移律: 成り立つ.
x == y
ならば(1)x = False かつ y = False
,または,(2)x = True かつ y = True
.(1)の場合2つめの仮定よりz = False
ゆえにx == z
.(2)の場合2つめの仮定よりz = True
ゆえにx == z
. - 対称律: 成り立つ.
x == y
ならば(1)x = False かつ y = False
,または,(2)x = True かつ y = True
.したがって,反射律よりy == x
.