【雑記】可読性の高い数学の証明について

こういうツイートを見た。

 

https://twitter.com/Submersion13/status/1581294923612975105?s=20&t=FtZQHWW_2V9kpHgtoWL4_w

 

左の例が読みづらく、右のように構造を明示すればどうかというツイートである。たしかに、線状の文章ではなく入れ子状の箇条書きにすることで、よりわかりやすくはなっている。しかし、箇条書きで構造を明示しないような方法でも、もっとうまい書き方があるだろう。左側の文章は、「よくある数学の証明」にしても読みづらすぎると思う。

 

というわけで、読みづらさの原因はどこに潜んでいるかを、ちょっと考えてみる。

 

 

悪文の指摘

 

こんなことを言うのもなんだが、文中で書かれている内容はよくわからない。明らかに自分の専門でない知識について書かれている、ということくらいだ。ただ、 \text{Int}という記号が使われていることから、おそらく位相空間論に関する何かなんだと思う。まあ逆に言えば、内容がわからずとも読む側への配慮に欠けている文章であることはわかる。

 

場合分けには小見出し

 

... and it remains to consider the case  p \in S.

 

前の部分が切れていてわからない。しかし何かしらの場合分けがあって、場合分けされたうちのひとつのケースが  p \in S ということはわかる。このような場合分けが起こる場合には、記号なり番号なりを振って小見出しをつけたほうがいい。たとえその場合分けが2ケースしかなかったとしても、である。

 

こう書きたい:

(ii) The case  p \in S.

 

背理法を明示せよ

 

If  p \notin \text{Int}D(S) then ...

 

右側の写真によるメモによれば、この  p \notin \text{Int}D(S)背理法の仮定になるらしい。ただ、これだと背理法を使っていることがわかりにくい。この書き方では、直接証明に向かうのか背理法を使うのかがはっきりしない。

特に背理法である命題  P を証明する場合には、その否定命題は単独で Suppose not  P. というように書いておくとわかりやすい。あとで ..., which is a contradiction. と書かれたときに参照しやすいからだ。ほかに、 Suppose otherwise. という表現もよく使う。「そうでない方を仮定する」とすれば、背理法を使うことが明確になる。

 

こう書きたい:

We show  p \in \text{Int}D(S). Supposee otherwise. Then ...

 

加えて、この証明では、示したい小命題として  p \in \text{Int}D(S) が登場している。しかし、おなじ段落中にそれがぬるっと出てくると、読者は「なんの証明をしているのだろう?」となってしまう。そのため、小命題が出てくる場合には、小命題の記述とその証明にひとつの段落を割いてやったほうがよい。

 

指示語の対象を明確に

 

Thus by the argument used above ...

 

「上の議論と同じように」とあるが above がどこを指しているかが不明瞭。どの定理の証明にあるどの部分を使っているかを明確に記すべき。右のノートによれば「場合分けの1番目の議論」と同様に行っていることがわかる。はじめから (i), (ii) と小見出しをつけておけばこんな書き方をせずに済む。

 

こう書きたい

Thus by the argument used in case (i) ...

 

 

写真で見えている範囲(と、メモで参照できる範囲)で、証明を書きなおしてみた。もとの文章よりも断然可読性が向上しているはずである。

 

(ii) The case  p \in S.

First, we show  p \in \text{Int} D(S). Suppose otherwise. Then there is a sequence of points  p_n \notin D(S) such that  p_n \rightarrow p. Since  p \in \text{Int} \tilde{D}(S), for sufficiently large  n,  p_n \in \text{Int} \tilde{D}(S). Thus by argument used in case (i), we cannot have  p_n \in I^+(S) \cup I^-(S) as one would get  p_n \in \text{Int} D(S). Since  \tilde{D}(S) \subset S \cup I^+(S) \cup I^-(S), we have  p_n \in S \subset D(S) a contradiction.

Thus, we have proved ...

 

書いていて気付いたが、 \text{Int} D(S) \text{Int} (D(S)) が混在していて、記法の統一がされていない。ここを読む限り意味は同じと見える。しっかりしてほしい。

 

「読みやすい証明」のために

 

これを反面教師にすると、読みやすい証明の書き方について、ある程度のヒントを得ることができる。今回は次の3つ:

  • 条件分岐、場合分けが発生する場合は、小見出しを作ってケースごとに証明を書くと、いま自分がどのケースについての話をしているのかがわかりやすい。
  • 証明中に示しておきたい小命題が出てきたときには、まずそれを命題の形で述べ、直後に「なぜなら、」と続けるのがよい。可能であれば、一連の「小命題→証明」の部分はひとつの段落として設けておくとより読みやすくなる。
  • 証明技法を事前に明示する。背理法や対偶による証明がとくにそうだが、こうした場合は頭に「背理法で示す」「対偶を示す」と書いたほうが、読む側に混乱を与えなくて済む。

 

右側のノートではこの3つの部分が見やすい形にまとまっている。ただ、このような形にまとめずとも、ふだんからこれらの部分を意識して証明を書けば、十分可読性の高いものになるはずである。