集合論とか離散数学の分野で反射律・対称律・推移律・反対称律というキーワードが登場する。 大学での授業では、とても抽象的に説明がされるので、そもそも何の話をしているのか理解できない、という状態になりがち。 インターネット上を検索すると、それなりの情報が得られるものの、それでもやっぱりよくわからない。 そこで何かわかりやすい説明の方法はないものか・・と考えたものの、 これって文章で説明しようとするからいけないのではないだろうか。 そもそも扱う対象が論理の話なので、プログラミングに例えるのがいいに違いない。 というわけで、以下は「プログラミングで理解する反射律・対称律・推移律・反対称律」。 例題として「二項演算子★は反射律・対称律・推移律・反対称律をそれぞれ満たすか?」という問題を考えてみる。 ここで、演算子★は、anOperation という名前の関数で定義されるとすると、 この関数は2つの引