私の趣味は数学の証明のリファクタリングである。教科書に書かれた数学の証明は、まずはそのまま、書かれた通りに理解すればよいのだが、自分で書き直すことによって「より深く理解できた」という満足感が得られることが多い。この作業を、プログラミングにおけるリファクタリングになぞらえて私はそう呼んでいる。 リファクタリングを行なっている間は楽しいのだが、いざ出来上がってみると完成品ばかり眺めてしまい、振り返って過程を追うのはなかなか億劫になる。今回は、あえてそれを書き記してみる。 クラトフスキの流儀による順序対の集合論的コーディング\[(a,b)=\{\{a\},\{a,b\}\}\]の妥当性に関する証明を例にとる。リファクタリング前の証明は下記の通り。 【命題】\[\{\{a\},\{a,b\}\}=\{\{a'\},\{a',b'\}\}\tag{★}\]ならば\[a=a'かつb=b'\]である。