2000 年度集合 · 論理試験解答と講評

2000 年度集合論理は再試験は行なわない。しかし、多くの再履修者がでるのでここに丁寧な解答をつける。単位を取得したものも含め明解な理解ができるまで自分で訓練すること。この科目では、集合、写像という概念の取得と論理を正確に追う能力の取得を目標としており題材は色々なところにある。

１月の試験の採点基準は次のとおりである。

1. 「ほとんど理解ができていない」という確認ができる場合 F あるいは D

2. 「ほとんど理解ができていない」という確認ができない場合 C

3. ある程度の理解に達していると思われる場合 B あるいは A

4. 授業内容について理解に達している場合 A

このような状況であるので、単位を取得していても D の場合理解しているはずがないと私が思っている状態で、 C の人は理解していないかあやふやな理解の状態です。 C,D,F の人の論理性では、他人の真似をすることはできても自分でものを解明することは不可能であろうと思います。過去の問題をやってみるのは大変よいのですが、わからないときは正しい答えを習いなさい。正しい答えにしろ間違った答えにしろ、わからないで記憶するのは自分の思考能力を低下させる努力をしていることです。記憶するときは何らかの思考の筋をつけて記憶しなさい。この解答を読む際、皆さんは次のことに注意して下さい。「... だから... である」と書いてあることを読んで「ああそうか」と思わないことです。「... だから... である」といわれて「ああそうか」といって理解できる人はもともとそのことを大体わかっていた人なのです。「... だから... である」といわれたら「何故こうでないのか？」「何故... だからなのか？」、こういったことを考えて下さい。すぐ「ああそうか」と思うのは「わからないようになる秘訣」のようなものです。

今後、勉強する際、自分の使う記号、記法により自分が何を表しているのか気を配ってください。多くの皆さんの答案は、皆さんの頭の中の混乱、無理解を現にしています。自分の答案に責任をもてるように努力してください。私は「間違えるな」といっているのではありません。自分が後で何故そのように書いたか、何を書こうとしてそう書いたか、そのような説明のできることを書いてほしいのです。間違いや錯覚は誰にでもあります。自分が今まで修得していない概念を理解するのは決して簡単なことではありません。他人が「わかった」といったからといって自分がすぐにわからなければならない理由はありません。正確にゆっくり時間をかけてわかるようになるのが「よくわかる」ようになる早道なのです。

再履修である程度の勉強をしてなおかつ落ちている人は勉強の仕方を教えますので相談にきて下さい。

0. この問題の説明を丁寧にするのは馬鹿馬鹿しいのですが予想に反しあまりに間違いが多いので説明します。この問題で４つのうち２つも間違えている人が次の問題 1. で証明をしていても、ただ記憶したことを書いているのだろうとしか思えません。

集合 X, Y 、写像 f : X → Y 、 A ⊆ X B ⊆ Y について f^{−1}(B) = {x ∈ X : f(x) ∈ B} f[A] = {f(x) : x ∈ A} です。問題は f : [−1, ∞) → (−∞, ∞), f(x) = x^{2} について (1) f^{−1}({1}) (2) f^{−1}([−2, 4]) (3) f[ (-1, 2)] (4) f^{−1}({−1}) を求める問題です。「開区間、閉区間などの記号と写像に関する記号と混同しないように注意」と記しましたが写像や集合における ( , { , [ の区別、開区間と閉区間に関する ( , [ の区別がない人、また開区間や閉区間を実数の集合であると思っていない人などがいます。一般にカッコ ( , {, [ の使い方の中には記号として意味がない場合（補助記号などと呼ばれます）と意味がある場合があります。皆さんはそれらの明確な区別を意識する必要があります。それにより個々の対象を明確に表現することができ、詳細な考察を加えることができるのです。まず関数のグラフを書き、定義域 [−1, ∞) を書き込んでください。そして、一つ一つの記号の意味をよく考えてみてください。また開区間 (a, b) 閉区間 [a, b] がそれぞれ集合 {x | a < x < b}, {x | a ≤ x ≤ b} であるという明確な意識に欠けている人が半分位みうけられます。情報学科の多くの先生たちは諸君の理解度がもっと高いと思って授業をされています。自分のわからないことをよく先生に伝えればもう少し理解できる可能性が生まれます。「もう少し理解できる」ということは「ずっと理解できる」ようになることです。人が理解していないものを理解できるようになるのは大変なことなのです。知ったかぶりは他人にまかせて自分の理解を高める努力をして下さい。

(1): {−1, 1} は説明を要しないように見えますが、「−1, 1」あるいは「x = −1 または 1」という解答がかなりあります。これもほとんど減点していないのですが、当然のことながらこのような解答をした人には x と x だけからなる集合 {x} との区別がないはずです（その人自身に多少の整合性があった場合ですが）。集合は 1 つの対象ですが「−1, 1」や「x = −1 または 1」は集合の要素を並べたものあるいは要素の満たすべき性質を書いたもので、集合の表記ではありません。正答率は高い。

(2):[−1, 2] です。もちろん {x | − 1 ≤ x ≤ 2} と書くのもよいでしょう。 [−2, 2] という答えが非常に多い。定義域が [−1, ∞) であるということが加味されていないのです。写像の概念が明確に把握されてはいない段階と解釈します。正答率は低い。

(3): [0, 4) ですが [0, 4] の解答が多くある。減点しています。

(4): ∅ ですが {∅} が非常に多い。授業中に何度も注意していますから、この間違いは授業を聴いていないか出席していないせいであると思いたいのですがそうではないようです。やはり、難しいのです。わかるようになった人には何でもないことですが、 0 という数の、かけ算、ベキ乗などが難しいのと同じようなものです。空集合を {∅} と書いた人はたぶん空集合だけを要素とする集合も空集合だと思っているのだろうと思います。自分の考えていることを正確に表記するという心がけ、自分の書いた記号、記法に関する整合性が必要です。整合性からいえば、 {} で空集合を表すのは筋がよいと思います、昔はそのように書いてあった本もあった記憶があります。今回、そのように書いたひとはいませんでした。「{} も空集合、 ∅ も空集合、だから {∅} これは正解が２回書いてある」という解釈は世の中ではよくありますが、沢山書けばよいというものではありません。

1. 正誤の判断は命題の状況を図に書いたりしながらその命題を示そう、証明しようとするとき生まれるもので直感によるのではありません。経験をつんでいない状態で直感というのはただのあてずっぽです。反例をあげる場合の注意ですが、集合 A = {a, b} と書いた場合、 a = b が成立する場合としない場合で集合 A の個数は異なります。もし a b が文字そのものであるならもちろん a と b は異なりますが、その場合は文字 a, b と断るのが常識です。皆さんの中学校からの文字式に関する常識からしてもそうだと思いますが、皆さんのなかには違う文字は必ず異なる意味を持つというように振舞う人が多いのです。情報科学においては文字として異なるという感覚も必要ですが内容的に等しいという場合があるという中学以来の感覚がなければ話になりません。かならず a ≠ b と宣言して下さい。また、反例をあげることは反例となる必要十分条件を述べることではありません。その条件を満たすものの存在をいわなければ、反例が存在することにならないからです、当たり前ですが。

(1) 誤 A = C = {1}, B = ∅ とすれば A ∩ (B ∪ C) = {1} で (A ∩ B) ∪ (B ∩ C) = ∅。

(2) 正 f(x) = f(y) のとき A = {x}, B = {y} とおく。 f[A ∩ B] = f[A] ∩ f[B] = {f(x)} だから A ∩ B は空集合でない。よって x = y が成立する。過去の問題で f[A ∩ B] = f[A] ∩ f[B] が成立するかを問う問題がありましたがその解答のための反例を書いている人がいます。「自分が勉強した」ということを示したいのかもしれませんが、私は「自分がいかに理解していないか」ということを示したのだと理解しました。自覚をもって自分の力を伸ばすことを目指してください。

(3) 正 x ∈ f^{−1}(A ∩ B) ⟷^{1} f(x) ∈ A ∩ B ⟷^{2} f(x) ∈ A ∧ f(x) ∈ B ⟷^{3} x ∈ f^{−1}(A) ∧ x ∈ f^{−1}(B) ⟷^{4} x ∈ f^{−1}(A) ∩ f^{−1}(B) 同値であることの理由は順番に 1 は f^{−1} の定義、 2 は ∩ の定義、 3 は f^{−1} の定義、 4

は ∩ の定義です。この問題は定義を追えばできるもので考える要素はありません。ものの本には

f^{−1}(A ∩ B) = {x ∈ X : f(x) ∈ A ∩ B} = {x ∈ X : f(x) ∈ A ∧ f(x) ∈ B} = {x ∈ X : f(x) ∈ A} ∩ {x ∈ X : f(x) ∈ B} = f^{−1}(A) ∩ f^{−1}(B)

と書いてあります。内容は同じですが、集合が等しいというのは前者のように要素ととって示しますから後者の表記には無駄があります。ともかく、集合で統一するなら =、 ⊆ 命題を追って述べるなら ↔、 → を使います。授業で何度もいっていますが、記法が混ぜこぜになっている人がいます、理解していなくなおかつ授業にでていない人なのであろうと思いたいのですが、数から推定するとこれもそうではないのです。最後の授業で、この間違いの説明を黒板でしました。同じ間違いをするのは、結局、命題と対象の違いの意識が低いため記法が混ぜこぜになるのだと思います。表記法を学ぶことをとおして、違いをはっきり理解して下さい。この違いが分からない人はまともなプログラムは書けないはずです。単位はとれるかもしれませんが。

(4) 誤 A = {∅} B = {A} とすれば、 ∅ ∉ B であるから A ⊆ B は成立しない。 A = ∅ で B = {∅} は A ⊆ B ですから反例になっていません。この誤りは過去の別の問題の解答を憶えているだけで書いている場合と命題 P → Q の否定が P → ¬Q だと思っている場合があるようです。この解答を読んでなおかつわからない人も多いだろうと思います。それは皆さんが、最初に書いたようにすぐ知ったかぶりをするからです。自分がわからなかったことがわかるようになったとき「なーんだ」「ああわかった」ということを繰り返しているので大した進歩をしないのです。自分がどこで錯覚していたか、自分にとってどこがわかり難いところなのか、そのようなことを明確にすることが大切です。つまり、簡単にわかってはいけないのです。「わかる」ということは他人と比べることではないし、わからないことがわかるようになることは誰にとっても大変なことなのです。

(5) 誤 A × D あるいは B × C が ∅ （空集合）とならない場合が反例です。 A = D = {1} B = C = ∅ とすると (A × B) ∪ (C × D) = ∅ ∪ ∅ = ∅ で (A ∪ C) × (B ∪ D) = {(1, 1)} ですから (0, 0) という順序対が一方に属し、他方には属さないので (A × B) ∪ (C × D) ≠ (A ∪ C) × (B ∪ D) です。むやみに複雑な反例をあげている人は最終的に集合が等しくないというためにある要素が一方に入り他方に入らないという議論をしていない人に多くみられます。何故かということを丁寧に述べようとすれば、ものの本質に行きつくのです。

この問題は過去にだした問題であるため、「模範解答」を記憶して書いているらしい人あるいは「模範解答」を明確にわかって書いている人の中に次の間違いがあります。「模範解答」というのは誰か間違えて理解している学生のつくったものですが、計算機言語の勉強をしている人の誤解しやすいところなので説明します。順序対は有限列の列としての拡張ではありません。たとえば、異なる文字 X, Y, Z があったとします。文字列 XY と文字列 Y Z の順序対 (XY, Y Z) を XY Y Z としてはいけません。順序対 (X, Y Y Z) は (XY, Y Z) と異なるというのが順序対の定義ですが、有限列の拡張であるとしてしまうと (X, Y Y Z) も XY Y Z となってしまいます。もし有限列を基礎に順序対を定義しようとすれば、 (XY, Y Z) も (X, Y Y Z) も長さ２の列になっているように定義すればよいのですが、 XY Y Z は長さ４ですからうまくいきません。

(6) 正 a − a = 0, b − a = −(a − b), a − c = (a − b) + (b − c) の３式がこの場合、 P が同値関係であることを示すのに必要な式です。自分の頭の中でわかっているなら、そのわかっていることを表現する方法を学びなさい。「ぼんやりわかっているというのはわかっていないということだ」という自分に厳しい基準をもって望まなければ自分の考えていること感じていることを把握できるようにはなりません。

(7) 正これは色々な科目をよく勉強している人が、つまらない問題ばかりであきあきしないように出した問題で、筋がわかれば (6) と同じです。

AA^{−1} = E, (BA^{−1}) = (AB^{−1})^{−1}, AC^{−1} = (AB^{−1})(BC^{−1}) の３つの式が同値関係の３条件に対応しています。もちろん対角行列の逆行列、あるいは対角行列と対角行列の積がまた対角行列となるといったことをいう必要はあります。 (6) も同じですが、同値条件の３条件を書いただけでは解答になりません。何故条件が満たされるかを書かなければ仕方ありません。 2. 集合 A の部分集合 X について特性関数 1_{X} の話をしてこれにより部分集合と特性関数が同一視できることを授業でやりました。この 1 を写像だと思いなさいという問題です。 φ : P (A) → ^{A}{0, 1} を

φ(X)(a) = \{ \begin{matrix}1 & a ∈ X のとき \\ 0 & a ∉ X のとき \end{matrix}

と定義します。皆さんはこのように自分で集合や写像を定義するということがなかなかできません。自分の頭のなかに浮かんだことを定義することができないと明確なものとして頭に定着しません。書き表す技術をつけてください（書き表す内容が頭の中にあった場合ですが）。また論理性とこの技術の向上はよいプログラムを書けることにつながります。

φ(X) = φ(Y) ならば、すべての a ∈ A について a ∈ X ↔ a ∈ Y が成立するので X = Y 、つまり単射である。また全射であることは f ∈ ^{A}{0, 1} に対して X = {a ∈ A | f(a) = 1} とおけば φ(X) = f が成立する。よって全射。

3. これは高校までに習ったことをよく理解しているかをみる問題です。（A）は「角度というものがどのように定義されているか」ということの確認です。当然長さ x は線分 ((0, 1), (0, 0)) と ((0, 1), (f(x), 0)) のなす角度です。皆さんは円弧の長さを決める前に円周の長さが決まっていると思っているようです。まず、「半径が１の円であるから、 x は角度を表しています」これから始めてください。この円周の長さは 2π と定義されているので定義域が [0, π/2) となります。 f(x) = tan(x) は tan(x) の定義そのものです。まあ色々な滅茶苦茶な解答がありますが、 π の定義も含め復習しながら、論理的な筋道をつけてください。

（B）は P から x-軸に平行な補助線を引いて相似三角形をつくれば 1 : g(x) = 1 − x/\sqrt{2} : \sqrt{2}x となります。定義域は [0, \sqrt{2}) で g(x) = x/(\sqrt{2} − x) です。

この 3 の問題は中学生あるいは高校生で数学が得意である人（成績はともかく）は解けるはずです。この問題ができていて 0. 1. 2. の問題ができない人は大学に入って新しい概念、複雑な対象が現われてきているのに順応できず、大学入学時から進歩していない状態だと思います。頭の中の作業領域を広げて、新しい概念を組み込んでください。

以上