集合論に基づいた言語を作りたい

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2014/08/10(日) 21:27:16.56ID:x7G32Sd0
計算機科学の基礎は集合論であるという。
ならば、集合論に基づいた言語を作れば美しい言語になるのでは?
そんな発想から徹底的に集合論的思想で言語仕様を考えるスレです。
2014/12/03(水) 23:15:45.16ID:cePlsLqN
ほげ言語のパラドックスでも読んどけ
2014/12/04(木) 01:08:18.94ID:jHjIGczB
集合に順序があるのはむしろベクトルかタプルに見える

集合論って考えは好きだけどソートみたいな逐次処理でよく使うものはどうなるんだろうか
並列処理的なこと考えてるひとがいるみたいなんでそれに乗っかると
並列処理ならクイックソートよりマージソートのほうが速そうだがそれが集合論かと言われるとちょっと困る

でもソートが本来のやりたいことではなくてソートしたデータにまた何らかの処理をする要求のほうが多い気がするんでどうでもいいか
2分探索なり逐次処理の環境で考えだされたアルゴリズムはほとんど使えない気がするんでまた誰かが良さそうな手順を考えださないとな
2014/12/05(金) 09:26:36.60ID:I64sWIzc
数学できる人間に見られたいクズが集まるスレ
2014/12/05(金) 11:54:06.72ID:IjAdRY0C
自己紹介か?
746
垢版 |
2014/12/05(金) 20:20:24.20ID:b89FafAC
とりあえず、圏論からは戦術的転進するか。
別のネタを探そう。
2014/12/05(金) 20:55:48.99ID:B18WNnFt
1に餌を与えないでください。
>>425>>559 >>655-665
2014/12/05(金) 23:22:33.28ID:oLmzY7WJ
しかしまあスレタイ通りにはなかなかいってないけど総合的には良スレっぽい
2014/12/06(土) 01:07:31.28ID:tjNXDvF3
>>746
圏論を勉強する気など最初からなくて、ネタのつもりだったわけだ。
圏論以外に何をもってきても同じだろうな。
2014/12/06(土) 10:37:54.51ID:kt8GWotW
lisp の括弧は rainbow-parentheses 的なの入れるとマシになる
2014/12/06(土) 18:03:11.24ID:KgmhP8S/
lispで区切りに()だけ使うんじゃなくて集合を表す時は{}使うとかどうなの?
集合は{
752
垢版 |
2014/12/06(土) 18:04:03.49ID:KgmhP8S/
途中で書き込んじゃった。
集合は{}で表すってイメージあるんだけど。
2014/12/06(土) 18:56:15.26ID:dXBvUp0m
clojureは#{}が集合のリテラルとしてある
他のlispでもリードマクロかけばそういうことはできる
是非についてなら。その表記が存在することが対象のプログラミングに有効ならあり、そうでなきゃなし
754
垢版 |
2014/12/06(土) 18:59:55.68ID:KgmhP8S/
ほほう。
clojure検討してみる価値あり?
2014/12/06(土) 19:20:33.09ID:dXBvUp0m
まあlisp系はマクロ書けば簡単に構文拡張できるから、新しい言語を試行錯誤したいなら最適ではあるよ
2014/12/06(土) 19:20:42.39ID:5oGFUyw+
RubyとかJavaにもSetオブジェクトはあるし、リテラルの有無はソースコードの見た目の問題で、
たいして重要じゃない。
2014/12/06(土) 19:28:14.31ID:dXBvUp0m
マッチョすぎワロタ
数値や文字列リテラルのない言語でも頑張ってくれそう
758
垢版 |
2014/12/06(土) 19:49:14.64ID:KgmhP8S/
リテラルの有無は結構気になるな、俺は。
Rubyの配列やマップのリテラルは気に入ってる。
759
垢版 |
2014/12/06(土) 19:51:57.69ID:KgmhP8S/
clojureってjavaなのか。
クラスパスとかあんまわかってないんだよな〜じつは
2014/12/06(土) 20:40:46.96ID:VB5mtD/4
>>748
VIPやシベリアだったらな。
761
垢版 |
2014/12/06(土) 21:05:36.24ID:KgmhP8S/
パッと見common lispよりclojureのほうがオサレにみえる。
あんまりcommon lisp知らんけど。
2014/12/06(土) 21:16:11.69ID:5oGFUyw+
なんでもいいから手を動かせ
763
垢版 |
2014/12/07(日) 00:04:16.45ID:2ooQYugx
OO言語だとobj.method(x)って書くけどlisp系だと(method obj x)って書くじゃん?
OO言語になれてるからかこの順番の違いが結構イラつく。
2014/12/07(日) 00:11:32.48ID:t9ahLiCr
ほんとこの1は駄目だなw
2014/12/07(日) 01:41:10.92ID:bfkTF4nN
lispでC風メソッド呼び出し構文開発したってのをどっかのブログでみたな
2014/12/07(日) 02:32:50.17ID:lyVqLM7u
リテラルでいろいろ指定できるのは便利だけどな
Clojureだと
{key1 obj1 , key2 obj2}でmap
#{obj1 obj2 obj3} でset
[obj1 obj2 obj3] でvector
'(obj1 obj2 obj3) でlist
地味にsetがありがたかったり(他の言語だとsetのリテラル滅多に無い)
2014/12/07(日) 12:08:48.39ID:mrRmmrII
>>726
圏論の和書として定評があり再版が望まれているのは
http://www.amazon.co.jp/dp/4837504574
amazon 価格がすべてを物語っている
768
垢版 |
2014/12/07(日) 17:19:43.84ID:2ooQYugx
いつものようにclojureでconnect4書こうと思ったが、
>>763のことを差し引いても想像以上にモチベーション上がんない。
何のせいだ?
パッと見clojure良さそうに見えるのに。
Prologのときも苦戦したがモチベーションは保てた。
2014/12/07(日) 18:06:31.44ID:NlsKlGNA
>>768
このスレでは集合論に基づいた言語と関係ない話題はルール違反です。
2014/12/07(日) 19:50:11.74ID:npVck0tg
>>768
今度は「なぜか分からないけどモチベーションを保てない」かw

>>425>>559>>655-665
2014/12/08(月) 04:17:29.43ID:jYPMOE5Q
>>768
モチベーションを保てないってことだから続かないと思うけど
続けるならClojureスレに行け

【Lisp】プログラミング言語 Clojure #3【JVM】
http://peace.2ch.net/test/read.cgi/tech/1380333808/
772
垢版 |
2014/12/09(火) 23:17:28.28ID:PZp4J+Rx
リアルが忙しくなりそうです。
しばらくこれなくなるかもだが、俺が留守の間おまえらでこのスレを盛り上げてくれよな。
よろしく。
2014/12/10(水) 21:31:22.32ID:7P/sQ89x
削除依頼していけよ
774
垢版 |
2014/12/26(金) 19:46:13.23ID:pkBFPf36
仕事納めだよ。
しかし見事にレスがついてないな。
お前らで盛り上げてくれていいのに。
2015/01/03(土) 12:40:55.68ID:XgnEofgF
>>1さんよ、

Coqという言語を使えば、集合論を含む数学の証明や、プログラムの性質や品質保証ができるらしいぞ。
やってみないか?
2015/01/03(土) 14:07:47.18ID:MdLSAVWL
>>775
>>713-714
7771
垢版 |
2015/01/03(土) 18:31:19.39ID:y8FDuePZ
とりあえず片山さんがCoqで一番成功してると思った例題を教えて
それで判断するわ。
2015/01/03(土) 19:06:58.41ID:XgnEofgF
俺もCoqについては初心者だが、数学、グラフ理論の超難しい問題
「四色問題」の証明がCoqでできたらしい。
7791
垢版 |
2015/01/03(土) 20:02:04.73ID:y8FDuePZ
手続き型言語とかに比べて完結に実装できるってこと?面白そうではある
780
垢版 |
2015/01/03(土) 20:38:21.69ID:rEeqS3sH
ID違うと思うけど1です。
簡潔に実装できるんじゃなくて、
実装はHaskellとかでやって、その正しさをCoqで保証するの?
よくわからん。
781
垢版 |
2015/01/03(土) 21:16:03.70ID:rEeqS3sH
Coq単体で動くのか。
prologに近いのか?
ぶっちゃけかなりむずいなこれは。
782
垢版 |
2015/01/03(土) 22:17:48.00ID:rEeqS3sH
わからんということがわかった。
底なし沼みたいな感じやなこれ。
2015/01/03(土) 23:44:50.02ID:Y5c4kVu7
今回のクレクレ・ループは終わりかな。

>>425>>559>>655-665
7841
垢版 |
2015/01/04(日) 13:03:03.07ID:1dxkxQcz
片山さんはCoqどれくらい書けるの?
例えばド、モルガンの証明とか書けるの?
2015/01/04(日) 21:15:57.30ID:izkph8nP
>>784
TutorialのPDFをコンビニで2in1pageで両面印刷して研究し始めたとこ。
数学と論理学と英語とプログラミングの知識が要求される地獄山だな。
786
垢版 |
2015/01/04(日) 21:40:34.76ID:7jAGFdTv
>>785
そのチュートリアルのURLくだしあ。
2015/01/04(日) 21:45:09.09ID:izkph8nP
>>786
「Coq tutorial PDF」で検索
2015/01/04(日) 21:59:00.42ID:7jAGFdTv
https://coq.inria.fr/distrib/current/files/Tutorial.pdf
これ?
結構分量ありますね。
789
垢版 |
2015/01/06(火) 00:03:50.53ID:iQ4UNt/k
Coqで任意の自然数nに対してn*(n+1)が偶数であることを証明しようとしたがどうしてもできない。
だれかHELP.
790
垢版 |
2015/01/06(火) 00:34:25.70ID:iQ4UNt/k
定義はこれで。
Theorem t:
forall (n:nat),exists m , (n*(n+1) = 2 * m).
2015/01/06(火) 05:55:25.49ID:Gduz5N96
偶数+1は奇数
奇数+1は偶数
遇数*奇数も奇数*遇数も遇数
自然数は奇数か偶数かどちらかである
792
垢版 |
2015/01/06(火) 21:04:14.92ID:iQ4UNt/k
「nが奇数ならn+1は偶数」を証明しようとして詰まってる。

Require Import Even.

Lemma l:
forall (n : nat), odd n -> even (n+1).

intros.

induction n.

simpl.

apply even_S.

これでodd 0とかいうのが出てくるけど、ここからどうしていいかわからない。
793
垢版 |
2015/01/06(火) 21:10:59.52ID:iQ4UNt/k
「自然数nに対してn*(n+1)が偶数である」
本題のこっちはここまで進んだ。

Require Import Even.

Theorem t:
forall (n:nat), even (n*(n+1)).

intros.

apply even_mult_aux.
794
垢版 |
2015/01/06(火) 23:17:17.43ID:iQ4UNt/k
Coq難しすぎんよ〜
もう寝る。
795
垢版 |
2015/01/07(水) 19:22:04.95ID:DdlkDaa+
http://www.iij-ii.co.jp/lab/techdoc/coqt/coqt6.html
このページによるとforall (P : Prop), P \/ ~ Pは証明できなんだそうだ。
forall (n:nat), even (n*(n+1)).も証明できないのかもしれないな。
2015/01/07(水) 20:14:30.38ID:zH4wOwdk
1に餌を与えないでください。
>>425>>559>>655-665
7971
垢版 |
2015/01/07(水) 21:02:58.84ID:DdlkDaa+
odd 0 -> Falseは証明できたっぽい。
これをどう活用すればいいのかわからない。

Lemma l2:
odd 0 -> False.

apply not_even_and_odd.

apply even_O.
2015/01/08(木) 15:50:20.90ID:FouB2F9v
S
2015/01/08(木) 18:29:26.11ID:qFLJfmjp
O
2015/01/08(木) 19:09:01.13ID:XNa5H7Wz
S
801
垢版 |
2015/01/08(木) 20:07:08.21ID:9tH8cNHX
ハルヒか?
802
垢版 |
2015/01/08(木) 22:27:11.24ID:9tH8cNHX
そもそもodd n -> even (S n)って定義そのものなんだよなぁ。
8031
垢版 |
2015/01/11(日) 19:52:52.15ID:zln55Xsd
ギブアップ。
だれか正解しってたら教えて。
8041
垢版 |
2015/01/13(火) 18:35:43.03ID:7YFvdf+i
片山さん答え知ってたら教えて
2015/01/13(火) 20:23:10.10ID:ElusS0xD
http://peace.2ch.net/test/read.cgi/tech/1419929875/23
> 23 名前:片山博文MZ ◆T6xkBnTXz7B0 [sage]: 2015/01/13(火) 18:53:35.00 ID:gURRjQHf
> 私はお下品
2015/01/13(火) 21:52:38.35ID:gURRjQHf
ヒント。
Require Import Even.
Lemma eSr: forall n:nat, even (1 + n) -> odd n.
intros.
apply (even_plus_odd_inv_r 1).
apply H.
807
垢版 |
2015/01/13(火) 22:46:33.61ID:ld5ZWEPI
Lemma l : forall (n:nat), even (1+n)-> odd n.
intros.
apply (even_plus_odd_inv_r 1).
apply H.
apply odd_S.
apply even_O.
Qed.
こう?

nを偶数と奇数に場合分けする方法がわからんとです。
808
垢版 |
2015/01/13(火) 23:04:11.48ID:ld5ZWEPI
even(1+n)にeven(1+n) -> odd nをapplyして odd nにならんのか?
よくわからん。
2015/01/13(火) 23:09:34.67ID:gURRjQHf
Lemma oS: forall n:nat, even n -> odd (S n).
intros.
apply odd_S.
apply H.
Qed.
810
垢版 |
2015/01/13(火) 23:38:41.86ID:ld5ZWEPI
証明済みのLemmaの活用の仕方がわからんです。
applyじゃないの?
2015/01/13(火) 23:39:26.18ID:gURRjQHf
replace (even (S n)) with (odd n).
apply even_or_odd.
もう少しだな。
8121
垢版 |
2015/01/14(水) 00:05:14.20ID:upPMt0VH
A=Bを示したかったらA->BかつB->Aで方針あってますか?
813
垢版 |
2015/01/14(水) 00:09:20.78ID:upPMt0VH
もう寝ます。
また明日よろしくお願いします。
2015/01/14(水) 19:03:17.31ID:lWtQJ7uI
聞きたいことがあれば、俺の掲示板に来いよ。待ってるぜ。
2015/01/15(木) 14:58:59.94ID:OiYOltU9
http://katahiromz.bbs.fc2.com
2015/01/15(木) 18:04:49.36ID:UYCK2hGt
>>814-815
1がそっちに行ってくれればいいけど。
1はCoqとか本当はどうでもよくて、このスレに書くこと自体が目的になってるだろうから・・・
2015/01/15(木) 20:46:59.13ID:QgJ4DA/V
>>816
雑談はこちらの412に書いてるな。
戻ってくるなよ >1
818
垢版 |
2015/01/15(木) 21:04:35.89ID:RCkerH2f
お前らこのスレが伸びちゃ困る理由でもあるのかw
2015/01/15(木) 22:49:41.86ID:5ppshwSd
>>818
1が「集合論に基づいた言語を作る」話をしないからな。
>>425>>559>>655-665

どうせエサをくれるのは片山博文MZだけなんだから、ずっとあっちに行ってろよ。
8201
垢版 |
2015/01/15(木) 23:03:37.94ID:RCkerH2f
このスレはお前らで盛り上げてくれてもかまわないんだぜ?
2015/01/16(金) 00:08:32.30ID:q80wbXpz
このスレ見てるの結構楽しい(煽りとかではなくいろんな話が出てくるし)から盛り上がって欲しい
822
垢版 |
2015/01/16(金) 00:10:36.55ID:tbQRRWp6
できたっぽい。
片山さんに教えてもらったページみた。

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.

Coq相当親切なチュートリアルがないと勉強できんわ。
どのタクティク使えばいいのかとかわからんすぎる。
2015/01/16(金) 01:05:01.69ID:IPI8U3lP
>>822
なかなかやるじゃん。

ついでに「片山QZの定理」の証明でもやってみる?

片山QZの定理
http://katahiromz.web.fc2.com/mathai/
824
垢版 |
2015/01/16(金) 18:38:49.28ID:tbQRRWp6
MZとかQZとかって何なの?
別にいいんだけど。

片山QZの定理はなんかえらい難しそうなのでやめとく。
2015/01/16(金) 18:52:49.05ID:IPI8U3lP
QZというのはC/C++宿題スレに生息している人だよ。

そうだな。2n=n+nの証明なんかどうかな? 楽勝?
826
垢版 |
2015/01/16(金) 19:09:16.59ID:tbQRRWp6
掛け算の定義がどこにあるのかわからん。

証明もいいけどコードの自動生成のほうが面白そうかな〜
2015/01/16(金) 22:32:01.39ID:IPI8U3lP
>>826
英語では、掛け算がmultiplicationで、自然数がnatural numbersだろ?
それを略すればmul,natになるだろ?
SearchAbout mul.
SearchAbout nat.
で検索できるから。
828
垢版 |
2015/01/16(金) 23:47:30.80ID:tbQRRWp6
>>827
結構むずかしい。
仮にできたとしても時間かかると思う。
829
垢版 |
2015/01/17(土) 00:13:16.15ID:e9PIZEl5
ぶっちゃけCoqやってると無限に時間を吸われる可能性がある。
早めに身を引いた方がよさそうかな〜とも思う。
2015/01/17(土) 01:27:28.08ID:PPUSm5YO
数学に基づいた言語としてCoqは最適の例かと思われたが、御気に召さないとはこれ如何に。
では、そなたはどのような言語が希望か申し上げてみよ。
831
垢版 |
2015/01/17(土) 02:12:55.60ID:e9PIZEl5
いや〜確かにCoq面白いんだけど。
勉強するのに時間かかり過ぎるっていうか
もうちょっと市民権を得て入門書とか充実してからの方がいいかな〜と。

証明も紙なら簡単にできることが結構難しかったりで、
実利を得るところまで勉強進めるのがしんどい。
実用までいかなくてただのパズルで終わりそう。

Coq参考になるところは多いと思うんだけどね。

どこまで時間費やすか見極めたほうがよさげ。

片山さんはCoqにどの程度手ごたえ感じてるの?
2015/01/17(土) 02:59:53.32ID:PPUSm5YO
麿は、この素晴らしきCoqを使えば、不具合のないソフトウェアが作れると見ては、
これをマスターすれば世界征服も夢ではないと、そのような所存でおじゃるよ。
2015/01/17(土) 03:31:41.14ID:PPUSm5YO
Coqと人工知能を組み合わせたら……、金融取引に活かせば……とか楽しい妄想が広がるでおじゃる。
834
垢版 |
2015/01/18(日) 22:30:12.77ID:Pnbu8M/I
人工知能といえばdeep learningとかいうのが流行らしいんだが。
835
垢版 |
2015/01/20(火) 23:02:01.33ID:RE29itzd
2n=n+nはomegaで一発っぽい。
omegaなしだとどうやるかわからん。
2015/01/21(水) 01:37:31.40ID:+/NZ76QF
1に餌を与えないでください。
>>425>>559>>655-665
2015/01/21(水) 08:55:01.51ID:y20qOxOP
n=1×nを使う
8381
垢版 |
2015/01/21(水) 19:32:48.10ID:83hEDbKu
途中よけいなことしてるかもだができたっぽい。

Require Import Arith.
Theorem t:forall n:nat,2*n=n+n.
intros.
replace (2*n) with (n*(S 1)).
symmetry.
replace (n+n) with (n*1+n).
apply mult_n_Sm.
replace (n*1) with (1*n).
replace (1*n) with n.
auto.
symmetry.
apply mult_1_l.
apply mult_comm.
apply mult_comm.
Qed.
839
垢版 |
2015/01/21(水) 19:37:49.38ID:83hEDbKu
Coqは一日一時間までにする。
それ以上は自重。
840
垢版 |
2015/01/21(水) 20:33:19.47ID:83hEDbKu
片山さんの模範解答うp希望
841片山博文MZ ◆T6xkBnTXz7B0
垢版 |
2015/01/21(水) 22:08:31.55ID:OPHJ2hAi
>>840
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.
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況