「わかりやすい」全射・単射の定義とは何か: ある定義とそれへの応答

最初にまとめ

結局そもそも「わかりやすい」の定義が問題になってくる話だと思っている.

発端は次のツイート.

元の記事の引用と批判

いくつか引用する.

普通の全射の定義はわかりやすいのに対し、単射の定義は初心者には不自然に見えます。また、全射と単射は互いに密接な関係があるのですが、定義を眺めているだけではそのように感じれられません。今回提案する方法はこれらを解消する利点があるような気がします。

まず全射の定義が本当にわかりやすいのかという気分がある. 単射が (初心者にとって?) 不自然かどうかもわからない. 少なくともはじめて触れたときに私はそうした違和感は感じなかった.

[今回思いついた定義] (写像fが)全射:任意のBの要素yに対し,f(x)=yとなるAの要素xの個数は1以上 つまり, ∀y∈B, *({x∈A|f(x)=y})≧1. ただし,「*( )」は集合の濃度(個数)を表しています.

(写像fが)単射:任意のBの要素yに対し,f(x)=yとなるAの要素xの個数は1以下.

つまり,

∀y∈B, *({x∈A|f(x)=y})≦1.

この定義を思いつくまではこれらの関連性にもやもやしていましたが、今は

・全射 ~ (定義域の要素の個数が)1以上 ~ 「存在」

・単射 ~ (定義域の要素の個数が)1以下 ~ 「一意」

と明快なイメージを持てるようになりました。

全射との比較でいうなら単射は非存在または一意だろうから, これだとおかしいのではないだろうか. 当人はわかっているかもしれないが, 少なくともこう書いてしまった時点でミスリーディングを誘発するような表現という意味であとで引用する私のリプライにもあるように, わかりにくく教育的でもないのではないかという気分がある.

改めて「証明」とやらを見てみたが, そこでもこの非存在ケースを書いていないから, この人, 本当にそれに気付いていないようだ.

追記・注意: ここについて私の指摘が不当であるという指摘が入り, もっともな指摘だったので上のコメントは撤回する. ただしかえってこの記事がよけいに気に入らないという感を深めるやり取りになった. そのやりとりはリプライツリーに追加している.

思いついた定義⇒一般的な定義 x1≠x2 とおく。このときf(x1)=f(x2)とであると仮定すると

#( { x∈A| f(x)=f(x1) } ) ≧ *( { x1 , x2 } ) = 2

となって前提条件と矛盾する. (∵集合S, TがS⊃Tならば*(S)≧*(T).) ゆえにf(x1)≠f(x2)といえる.

こう思うと全射の定義のシンプルさは場合分けがいらないことによっていて, 単射の定義の難しさは本質的に場合分けが必要な点で, それを回避していて, しかも意識さえさせない点が優れていて教育的と言えるだろう. ふつうの単射の定義で「全射から見た定義域に対応する元がない場合の対処」が書かれていたら上記の証明のミスもないはずだ.

追記・注意: ここについて私の指摘が不当であるという指摘が入り, もっともな指摘だったので上のコメントは撤回する. ただしかえってこの記事がよけいに気に入らないという感を深めるやり取りになった. そのやりとりはリプライツリーに追加している.

(おそらく)証明で使い辛いという欠点はありますが、初学者用にいかがでしょうか。

あとのリプライツリーにあるように, むしろ入念な注意をしないと初学者殺しになるのではないか. 「非存在または一意」のような場合分けを見逃していくような不注意さは後々, 真綿で首を絞めるように効いてくる.

リプライツリー

大元

私のコメント

川井新さんのコメント

空集合とシングルトンについては次の嘉田さんのコメントを見よう.

嘉田勝さんのコメント

これ, 自由なのか?

追記

追記: 私のコメントに対するぼんてんぴょんさんのコメント

本筋ではないがこの「0 個または 1 個で一意を表す」というの, 用例あるだろうか. いまだに気になっているが思い浮かばない. ぼんてんぴょんさんは細かい用語の定義にうるさい人なので, そういう人が言っているということは何かしらそういう用例なりそう書いてある本があるのではないかと思っている. 何か情報を持っている方は教えてほしい.