抽象によるソフトウェア設計 付録A 練習問題 その1

今日から付録Aを読みます。

  • A.1.1 二項関係の性質
    • 「推移的」と「非反射的」はそれぞれ削ると他の性質を満たすことができる
  • A.1.2 関係計算・述語論理式
    • 「非空的」は例として挙がっているとおり some x, y: univ | x -> y in r
    • 推移的 (r.r in r)は以下の述語論理式で表現できる
all x, y, z:  univ | x -> y in r and y -> z in r => x->z in r
    • 非反射的 (no iden & r) は以下の述語論理式で表現できる
no x:  univ | x -> x in r
    • 対称的 (~r in r) は以下の述語論理式で表現できる
all x, y:  univ | x -> y in r => y -> x in r
    • 関数的 (~r.r in iden) は以下の述語論理式で表現できる(もうちょっとうまく書けそうな気もする)
all x, y:  univ | no z: univ | x -> y in r and z != y and x -> z in r

今日はここまで。 A.1.2 はあと「単射的」「全域」「全射的」の述語論理式での書き換えが残ってます。結構時間がかかってしまいました。