練習問題 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