Slide 1

Slide 1 text

Coqで選択公理を形式化してみた 2024-05-11 Zli 大LT 春

Slide 2

Slide 2 text

自己紹介 ActivityPub/Misskey: @[email protected] twitter: @sou7___ アンダーバー3つ 学部4年生 Coqという変わったプロ グラミング言語を触って ます 2

Slide 3

Slide 3 text

技術書典16の宣伝 オフライン 2024/05/26 (日) 11:00~17:00 @ 池袋・サンシャインシティ オンライン 2024/05/25 (土) 〜2024/06/09(日) TOGATTA SERVER Tech Book Vol. 2に「10ステップ49問で学ぶ!Coq 入門」を寄稿します。 ぜひ買って読んでくださいね! 3

Slide 4

Slide 4 text

Coqとは カリー・ハワード同 型対応に基づき、数 学の証明をプログラ ムに落とし込んだ上 で型チェックをし、 数学の証明を検証す る定理証明支援系の 一つ。 4

Slide 5

Slide 5 text

覚えて帰ってほしいところ 「数学の証明」と「プログラム」が対応していることだけ 覚えればOK! 今回のLTでは、これを使って数学の証明をプログラムに落とし込んで 検証した、という話をします。 5

Slide 6

Slide 6 text

集合の形式化 集合は、ある要素が集合に含まれているか判定する述語として定義し ます。Prop型はTrueとFalseがある型です。集合は T -> Prop の関数 として定義します。 Inは関数呼び出しを使って定義します。 Variable T: Type. Definition Ensemble := T -> Prop. Definition In a (A: Ensemble): Prop := A a. Notation "a ∈ A" := (In a A) (at level 55). 6

Slide 7

Slide 7 text

結局何してるの? 集合は「ある元が含まれるか含まれないか」で定義します。 値を引数で受け取って、関数がTrueを返せば含まれる、Falseを返せ ば含まれない、という関数で定義します。 7

Slide 8

Slide 8 text

添数づけられた集合 添数づけられた集合とは、集合の列を拡張したものです。 これは集合の列ですが、これは1番目の集合が 、2番目の集合が 、3番目の集合が というように、自然数から集合への 関数として表現できます。 これを自然数ではなく、任意の集合に拡張したのが添数づけられた集 合です。今回は L -> Ensemble T として定義しました。 Definition IndexedEnsemble T L := L -> Ensemble T. 8

Slide 9

Slide 9 text

直積の形式化 選択公理で大事な役目を果たすのが直積です。Aを一つの与えられた 添数づけられた集合とします。直積は、Aの各要素を選ぶことで構成 される集合です。 例えば、Tが自然数、Lが 、Aが と いう添数づけられた集合とします。 すると直積 は、 となります。 9

Slide 10

Slide 10 text

直積は帰納型(Inductive Type)を使って定義しました。任意の L -> T の関数 a において、(任意の l にて a l が A l に属している)とき、 引数 l を受け取り a l を返す関数が直積 Product A に属していると します。 Inductive Product (T L: Type) (A: IndexedEnsemble T L) : Ensemble (L -> T) := | Product_intro: forall (a: L -> T), (forall (l: L), a l ∈ A l) -> (fun l => a l) ∈ Product A. 直積の引数TとLは、無限集合にすることもできます。例えば、Lに実 数全体の集合を当ててしまうこともできます。このように無限集合を 割り当てたときの直積の性質について、選択公理というものが存在し ます。 10

Slide 11

Slide 11 text

例えば このように。左側の集合と右側の集合から要素を選んでペアを取る操 作を直積と言います。 実際は任意個の集合の直積を扱うために複雑になっています。 11

Slide 12

Slide 12 text

選択公理 選択公理とは、添数づけられた集合Aの要素が空でないならば、直積 が空でないことを主張する公理です。数学で聞くZFC公理系の、Cが この選択公理です。 公理というのは、他の公理からどうやっても導けない、議論の前提に なります。 Axiom choice: forall (T L: Type) (A: IndexedEnsemble T L), (forall l: L, A l <> ∅) -> Product A <> ∅. この性質は有限集合においては明らかですが、無限集合においてはそ うではありません。直積を一般化して取れる値を増やしたからこそ、 必要になった公理と言えます。 12

Slide 13

Slide 13 text

簡単に言えばこんな 感じで、空でない集 合の直積を取ってい くと、空でない集合 が得られるというも のです。 13

Slide 14

Slide 14 text

選択公理を使った証明 fが全射であることと、fの右逆写像が存在することが同値であること を証明します。この証明の中で、仮定に対して選択公理を使います。 Theorem surjective_exists_right_invmap A B (f: A -> B): Surjective f <-> exists s, f ∘ s = \I B. Proof. ... apply choice in H3. ... Qed. 14

Slide 15

Slide 15 text

選択公理を使う前 H3 : forall b : B, Ab b <> ∅ 選択公理を使った後 H3 : Product Ab <> ∅ 15

Slide 16

Slide 16 text

バナッハ=タル スキーのパラド ックス 選択公理を使うと、次の奇妙 な定理を証明できます。 「球を有限個に分割し、回 転・平行移動を使って組み替 えると球が2つに増える。」 この奇妙な結果を見て、選択 公理を認めない!という人も 居るとか居ないとか。 16

Slide 17

Slide 17 text

まとめ 今回は選択公理をCoqで形式化してみました。選択公理というと仰々 しく感じてしまいますが、実際にこの公理を適用したときに起こる変 化はシンプルなものになります。数学の命題を形式化することで、命 題の理解をより深められます。 ぜひみなさんもCoqに入門してみましょう!技術書典16で「10ステッ プ49問で学ぶ!Coq入門」を読んでみてください! 17

Slide 18

Slide 18 text

参考文献 松坂和夫「集合・位相入門 (数学入門シリーズ 1)」2018-11-07 Wikipedia「バナッハ=タルスキのパラドックス」 https://ja.wikipedia.org/wiki/バナッハ=タルスキのパラドック ス ソースコード soukouki https://github.com/soukouki/mathlib 18