TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
東京理科大学理学部数学科・数理情報学科
整数論の一番良い本教えろ
「理論物理学のための幾何学とトポロジー」
☆★★『馬鹿板生活満喫ガイド:基本十項目』★★★
【自称数学者】三鷹の大類昌俊 Part8【つどい出禁】
線形代数学ムズすぎワロタw w w
Inter-universal geometry と ABC 予想 44
数学の本 第90巻
なんじゃこら哲也
数学科の就職って……

【Coq】コンピューターで証明しよう【コック】


1 :2015/01/23 〜 最終レス :2020/04/28
Coqというプログラムを使えば、計算機上で数学的な証明を厳密に行うことができます。
http://www.iij-ii.co.jp/lab/techdoc/coqt/
http://ja.wikipedia.org/wiki/Coq
使いこなすには、大学レベルの数学と論理学とプログラミングと英語の知識が必要。
さあ、試してみよう!

2 :
自然数nに対する2n=n+nの証明の例。
Require Import Arith.
Theorem t: forall n:nat, 2*n = n+n.
intros.
replace (n+n) with (1*n + 1*n).
replace 2 with (1+1).
apply mult_plus_distr_r.
auto.
replace (1*n) with n.
auto.
symmetry.
apply mult_1_l.
Qed.

3 :
自然数nに対してn (n+1)が偶数であることの証明の例。
Require Import Even.
Theorem t:forall n:nat, even (n * (1+n)).
intros.
apply even_mult_aux.
elim n.
left.
apply even_O.
intros.
elim H.
right.
apply even_S.
apply odd_S.
apply H0.
left.
apply H0.
Qed.

4 :
Coqは証明支援システムです。数学論文を英語で書ける程度の素養が必要です。
まずはTutorialを読むことから始めましょう。
natは自然数(natural numbers)の略です。
Coqでは英語や英語の略語がよく使われます。

5 :
自動的に証明ができるんじゃないだろ
そこんとこ誤解させんなよ

6 :
       ____
     /⌒  ⌒\
   /  癶   癶 \
  /::::::⌒(__人__)⌒::::: \   あらあらうふふ
  |     |r┬-|     |
  \      `ー'´     /

7 :
>>5
すみません。
>>6
English speakerに前置きなく「コック」って言ったら誤解を産むよね。

8 :
「Require Import Arith.」は、
「Arith」というモジュール(部品)を読み込むコマンドだ。
コマンド「Theorem t: forall n:nat, 2*n = n+n.」について。
「Theorem t:」は、これから「t」という名前の定理を証明するよって意味。
「forall n:nat,」は、「∀n∈N」という意味。
ここで「∀」は論理学における「任意の…に対して」という意味。
「∈」は集合論の「…に属する」に相当する。

9 :
掛け算について現在の定義を調べたいなら、掛け算の略は「mult」だから、「SearchAbout mult.」というコマンドを入力すればいい。
自然数について調べたいなら「SearchAbout nat.」を入力。
足し算なら「SearchAbout plus.」。

10 :
Theoremコマンドを入力したら、証明モードに入る。
証明モードでは、証明するための「タクティク」(戦術)を入力できる。
コマンドは大文字で始まるが、タクティクは小文字で始まる。
タクティクの例を挙げると、intros,symmetry,left,right,auto,elim,applyなど、いろんなタクティクがある。
証明の終わりでは「Qed.」コマンドを入力する。

11 :
さて、Coqのダウンロードとインストールが終わったら、早速Coqを起動しよう。
黒い画面に「Coq <」と表示されるだろう。
これはCoqのプロンプトであり、入力待ちであることを表している。

12 :
Coqの終了コマンドは「Quit.」である。「Quit.」と打ち込んでEnterキーを押せば
黒い画面が消えるであろう。

13 :
suck my coq!

14 :
まずは1がなんかお題だせよ。

15 :
Coqは数学、プログラミング両方で高い水準を要求されるからな。
このスレは人集まらないだろう。
数板ではプログラムの素養がネックになるか?

16 :
証明支援系のプログラムにバグがないことはどうやって
証明するの?

17 :
meta coqを使いなさい

18 :
お題:
x^2 - 2x + 1 = (x - 1)^2の証明。

19 :
>>15
いやいや、いいスレだ。せいぜい集まろうぜ

20 :
-を+に変えた版はできた。
-の方はまだできてない。
Require Import Omega.
Require Import Arith.
Theorem t:forall n:nat,n*n+2*n+1=(n+1)*(n+1).
intros.
replace (2*n) with (n+n).
symmetry.
replace ((n+1)*(n+1)) with (n*(n+1)+1*(n+1)).
replace (n*(n+1)) with (n*n+n*1).
omega.
symmetry.
apply mult_plus_distr_l.
symmetry.
apply mult_plus_distr_r.
omega.
Qed.

21 :
>>20
もう少しだな。-2x=+(-2)xを使えば、できるはずだ。

22 :
        /⌒ヽ⌒ヽ
               Y
            八  ヽ
     (   __//. ヽ,, ,)
      丶1    八.  !/
       ζ,    八.  j
        i    丿 、 j
        |     八   |
        | !    i 、 |
       | i し " i   '|
      |ノ (   i    i|
      ( '~ヽ   !  ‖
        │     i   ‖
      |      !   ||
      |    │    |
      |       |    | |
     |       |   | |
     |        !    | |

23 :
Coq の論理的バックグラウンド(?)になってる
Calculus of Inductive Construction (CIC)
(?:何種類かあって良く分からない)
について調べたいのですが良い文献ないですか?

24 :
仕様記述言語Zとの関聯はないの?

25 :
自然数の範囲では、>>18は証明できないよ。
整数か実数か複素数を使わないと。

26 :
Require Import Arith.
Require Import Omega.
Open Scope Z_scope.
Theorem t: forall n:Z, n*n - 2*n + 1 = (n-1)*(n-1).
intros.
symmetry.
replace ((n-1)*(n-1)) with (n*(n-1)-1*(n-1)).
replace (1*(n-1)) with (n-1).
replace (n*(n-1)) with (n*n-n).
replace (n*n-n-(n-1)) with (n*n-(n-1)-n).
replace (n*n-(n-1)) with (n*n-n+1).
replace (n*n-n+1-n) with (n*n-n-n+1).
replace (n*n-n-n) with (n*n-2*n).
omega.
omega.
omega.
omega.
omega.
symmetry.
replace (n*n-n) with (n*n-n*1).
apply Z.mul_sub_distr_l.
omega.
symmetry.
apply Z.mul_sub_distr_r.
Qed.

27 :
Require Import Omega.
Open Scope Z_scope.
の後で
SearchAbout Z.するとZの定義が見られるからね。

28 :
>>26
俺の環境だと証明が通らないんだが。
なんかミスってない?

29 :
>>26
訂正。ガラケーで入力大変。
(誤)
apply Z.mul_sub_distr_l.
omega.
symmetry.
apply Z.mul_sub_distr_r.
Qed.
(正)
apply Z.mul_sub_distr_l.
omega.
omega.
symmetry.
apply Z.mul_sub_distr_r.
Qed.

30 :
お題:
「3の倍数に6を足したものは3の倍数である」を証明せよ。

31 :
>>29
通った。

32 :
>>24
聞いた覚えはないな

33 :
>>30
「xは3の倍数である」

∃y∈Zに対して「x=3y」、
だな。1階述語とexistsを使って解いてくれ。

34 :
例えば、
Definition trimul (n:nat) := exists m:nat, n = 3*m.
と定義すればtrimul(0)は次のように証明できる。
Theorem tmzero: trimul(0).
unfold trimul.
exists 0.
auto.
Qed.

35 :
>>30
Require Import Arith.
Require Import Omega.
Open Scope Z_scope.
Definition trimul (x:Z) := exists y:Z, x = 3*y.
Theorem t: forall x:Z, trimul(x) -> trimul(x+6).
intros.
unfold trimul.
destruct H.
exists (x0+2).
replace (x) with (3*x0).
omega.
Qed.

36 :
「Reset Initial.」コマンドでCoqを初期状態へ戻すことができる。
「unfold x.」はゴールにあるxをその定義に展開するタクティクだ。
「destruct H.」はHを崩すタクティク。

37 :
お題:
「3の倍数に4を掛けたものは6の倍数である」を証明。

38 :
片山さん結構勉強進んでるな。

39 :
こう?
Require Import Omega.
Require Import Arith.
Open Scope Z_scope.
Definition tr(x:Z) := exists y:Z , x=3*y.
Definition s(x:Z) := exists y:Z,x=6*y.

Theorem t: forall x:Z,tr(x)->s(4*x).
intros.
unfold s.
destruct H.
exists (2*x0).
replace x with (3*x0).
omega.
Qed.
多分このスレには片山さんと俺しかいないぞw

40 :
>>39
正解!
このスレを立てた目的は…
1.Coqの知名度アップと啓蒙。
2.Coqによる「片山QZの定理」の証明。
3.Coqと人工知能の連携を考えること。

41 :
>3.Coqと人工知能の連携を考えること。
ここをもう少し詳しく

42 :
どのお題も超簡単なものだけに見えるのだが、それはなぜ?
Coqでの証明法がだれにも分かりやすくなるようあえて題材は
簡単なものを選んでいるの?
もっとCoqの強力さが分かる位難しい題材でやってくれんかな。
そもそもCoqではどの位難しいものがどの位の手間で証明できるの?

43 :
>>41
単純に言えば、コンピューターでできた数学者を作ろうとしている。
数学の問題は、式の変形と問題の分解と解の探索の問題に還元されるから、
人工知能でもいくつかの問題を解くことができるはずだ。

44 :
>>42
はじめは基礎と慣れが大事。不満なら君も出題してもかまわない。
次は集合論から出題したまえ。

45 :
>>44
なぜ集合論?
一応念のためいっとくが>>42は某スレの1(俺)とは別人だぞ。

46 :
お題:
「Z⊆XかつZ⊆YならばZ⊆X∩Y」を証明せよ。

47 :
>>43
Coqあるいは片山さんは、東大ロボプロジェクトはどう評価してるの?

48 :
>>44
集合問題でなく整数問題の系統だが、まずはこういう易しめのお題はどう?
お題:正整数m、nがあり、LCM(m,n) + GCD(m,n) = m + n とする。
このとき、m, n のどちらか一方は、他方によって割り切れることを示せ。

49 :
易しいっていうけど>>48>>48の証明をCoqでできるの?

50 :
俺はCoqのド素人だから聞いてる。
だが人間にとって証明問題といえばふつうこれくらいからだろ?

51 :
☆☆☆☆☆
☆ 自民党、グッジョブですわ。 ☆
http://www.soumu.go.jp/senkyo/kokumin_touhyou/index.html

☆ 日本国民の皆様方、2016年7月の『第24回 参議院選挙』で、改憲の参議院議員が
3分の2以上を超えると日本国憲法の改正です。皆様方、必ず投票に自ら足を運んでください。
そして、私たちの日本国憲法を絶対に改正しましょう。☆

52 :
>>23

53 :
>>48
http://ideone.com/Aa07zr

「Z.lcm m n = m0 * n0 * Z.gcd m n」の証明が難しい。

54 :
「Coqにおける集合論的直観主義数学の実装」
名古屋大学 佐藤雅大さん
http://shirodanuki.cs.shinshu-u.ac.jp/TPP/TPP2013_satou.pdf

55 :
https://coq.inria.fr/distrib/current/files/
からTutorial.pdfとReference-Manual.pdfとrefman.tar.gzを
ダウンロードすること。

56 :
stdlib.tar.gzもダウンロードすること。

57 :
>>53
まじめにやってくれてサンクス。
それで
>http://ideone.com/Aa07zr
これはすべて人が書いてるんだね? だとするとメリットがわからんな。
「コンピュータを使って定理証明する」て、人が形式証明を計算機に打ち込む
ということか?ふつうはそれとは違う意味で言うことだが。

58 :
>>57
それは私が書きました。

59 :
直観主義的でない非構成的な手続きも扱えるの?

60 :
>>59
Classicalモジュールを使えばね

61 :
>>58
東大ロボは>>48くらいは当然自動で解くんだがね

62 :
>>46ができたヤツは居ないか?

63 :
>>46チャレンジしようとして集合のモジュール名がわからなくて投げた俺が通りますよ。

64 :
モジュール名はstdlibに書かれてあるはずだが。

65 :
stdlib落としてなかったわ。スマソ

66 :
stdlib読んでも意味わかんなかった俺が通りますよw
Ensemblesってのでいいのか?
そこからわからんw

67 :
じっくり読むとなんとなくわかってくるな。
もうちょっとやってみるわ

68 :
Included Z XのZとXって同じ型じゃいかんの?
よくわからぬ。

69 :
支援age
自動定理証明器の設計の話題にまで広がりますように

70 :
(・ω・)

71 :
>>69
賛成かな? 
ただ俺の場合は、Coqの細かい話はうんざりだ。単なる証明支援の今のCoqなら将来はないんだから。
早く自動証明の話をしてくれ

72 :
Coq自体は、関数型言語として有名なOCamlで記述されている。
Coqのソースコードは同じ場所でダウンロードできる。
自動証明を行いたいなら、Omegaのようなモジュールを自作するか、
Coqを改造するか、Coqと対話する必要がある。

73 :
最新のソースコードcoq-8.4pl5.tar.gzをダウンロードし、解凍ソフトLhaplusなどを使って解凍(展開)すると、
coq-8.4pl5というフォルダーができる。
ここにパスcoq-8.4pl5/plugins/omega/にOmegaが記述されている。
ファイルの中身はテキストエディターなどで確認できる。

74 :
過去スレでよければ

Coqスレ
http://peace.2ch.sc/test/read.cgi/tech/1300017923/

75 :
> 自動証明を行いたいなら、Omegaのようなモジュールを自作するか、
> Coqを改造するか、Coqと対話する必要がある。
Coqの延長でできる風に言ってるが、それはもうCoqではないだろう

76 :
人工知能の進歩を見てると、やはり半端ない多量の証明のデータの蓄積をした上で、それをコンピュータ自身が分析し、与えられた定理にはどのような手法が適している可能性が高いかを推測するようなシステムになるのかな。
人間も結局過去の膨大な証明から経験的に学んでるわけだし。

77 :
定石データベースが必要

78 :
Coqが証明できる定理ってなにか制限あるの?
それとも人間が証明できる定理は原理的にCoqでも証明できる?

79 :
>>78
Coqはなにも証明しない!人間が証明してる。Coqは証明用ワープロ

80 :
>>79
えっ、正しい論証になってるかチェックしてくれないの?

81 :
コンパイラも文法チェックはするが、コンパイラがプログラミングしてるとは言わんだろ

82 :
コンピュータにも分かるように証明書くのが一苦労だわ

83 :
ランダム生成やってみれば

84 :
メモリいっぱい積んで幅優先でやってみたいね。
すぐメモリたんなくなるだろうけど。

85 :
>>82
一苦労どころじゃないだろw
このスレッドを見ても、ほとんど定義そのもの程度の命題の証明がお題になるくらいだからな

86 :
CICのnormalization theoremを証明してあるわかりやすい文献教えてくらはい、えらいひと。

87 :
お題:中国剰余定理を証明せよ。

88 :
ロボコックに料理させよう

89 :
キャメルとかいう言語も勉強したほうがいいのでしょうか?

90 :
>>89
OCamlな。
Coqの動作原理を知りたいならOCamlで書かれたCoqのソースとにらめっこ

91 :
Coqのソースとか何万ステップあんのよ?

92 :
>>91
心臓部を理解すれば後は枝葉

93 :
>>92
心臓部とか何ステップくらいなのよ?

94 :
個人でいきなり読みにいってもきっと読めないんでしょ?
数学の本スレでちょっと前に誰かが聞いて、
経験者らしきそっちの学識ありそうな誰かが応えてた
自動定理証明器の古典本あたりから読まないと・・・

勉強会とかするなら参加したいわ

95 :
数学の体系は、公理系によって成り立っている。すなわち、
当たり前の真実である「公理(axiom)」の集合から「定理(theorem)」を証明により導出し、
さらに既存の公理の集合と、証明された定理の集合から導出された、新しい定理をさらに土台とする。
そのように数学は、間違いのない証明によって次々と築き上げるものである。

96 :
証明に1つでも間違いがあれば、公理系は崩壊する。間違いが1つでも紛れ込めば、
どんな命題でも証明可能になり、証明が無意味となる。

97 :
なにかの新書のキャッチコピーか?

98 :
>>95 >>96
なにを言いたい?
なお、証明が間違っていても公理系は崩壊しないw

99 :
スレ主に正直ガッカリ感
この船頭では…

100 :
>>98
公理の集合のことを公理系って言うんだったね。
よって>>95-96は間違い。


100〜のスレッドの続きを読む
大学学部レベル質問スレ 13単位目
【万年】黒木玄を語ろう【助教】 その2
羽生善治応援スレ
面白い問題おしえて〜な 26問目
Inter-universal geometry と ABC予想 (応援スレ) 44
分からない問題はここに書いてね453
【あさひ】高校数学の質問スレPart397
関東弁は下品なエビス言葉と認めるしかないのでは?
【数学検定】数学検定(数検)総合スレッド Part.12
ピタゴラス数をなんと 〜荒らされたので立て直しました〜
--------------------
【速報】新潟県知事選 自民・公明支持の花角英世氏(60) 当選確実★3
SNSライオンムラカミ
もの凄いスピードでカップルの質問・ 相談に答えるスレ 540
【メガネの上から】オーバーグラス【サングラス】
上野古参うざ固定ヤス PART.3
イガンインはなぜ久保建英の足元にも及ばないのか 2
熊本大地震、共産党が募金詐欺
あすけん46日目
みんなで語ろうキッツスポーツスクエア綾瀬36
【横浜・川崎】神奈川県の道路事情 26【相模・湘南】
スラムダンク総合スレ313【SLAM DUNK】
極楽とんぼの山本圭壱吉本興業を解雇される
アニマエール! part12
昔のゲームにはよくあったけど今のゲームにはあまりないこと
日村=エタら
ウィリアムヘンリーの魅力を語ろう 02
東海気象情報 No.224
♪桜っ子クラブさくら組♪
☆今月の歌舞伎【ID強制表示】★其の二十四★
【名無し奥も○○奥も】気楽に井戸端会議 8755【みんな来い】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼