集合論に基づいた言語を作りたい
■ このスレッドは過去ログ倉庫に格納されています
計算機科学の基礎は集合論であるという。 ならば、集合論に基づいた言語を作れば美しい言語になるのでは? そんな発想から徹底的に集合論的思想で言語仕様を考えるスレです。 http://peace.2ch.net/test/read.cgi/tech/1419929875/23 > 23 名前:片山博文MZ ◆T6xkBnTXz7B0 [sage]: 2015/01/13(火) 18:53:35.00 ID:gURRjQHf > 私はお下品 ヒント。 Require Import Even. Lemma eSr: forall n:nat, even (1 + n) -> odd n. intros. apply (even_plus_odd_inv_r 1). apply H. 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を偶数と奇数に場合分けする方法がわからんとです。 even(1+n)にeven(1+n) -> odd nをapplyして odd nにならんのか? よくわからん。 Lemma oS: forall n:nat, even n -> odd (S n). intros. apply odd_S. apply H. Qed. 証明済みのLemmaの活用の仕方がわからんです。 applyじゃないの? replace (even (S n)) with (odd n). apply even_or_odd. もう少しだな。 A=Bを示したかったらA->BかつB->Aで方針あってますか? 聞きたいことがあれば、俺の掲示板に来いよ。待ってるぜ。 >>814-815 1がそっちに行ってくれればいいけど。 1はCoqとか本当はどうでもよくて、このスレに書くこと自体が目的になってるだろうから・・・ >>816 雑談はこちらの412に書いてるな。 戻ってくるなよ >1 >>818 1が「集合論に基づいた言語を作る」話をしないからな。 >>425 >>559 >>655-665 どうせエサをくれるのは片山博文MZだけなんだから、ずっとあっちに行ってろよ。 このスレはお前らで盛り上げてくれてもかまわないんだぜ? このスレ見てるの結構楽しい(煽りとかではなくいろんな話が出てくるし)から盛り上がって欲しい できたっぽい。 片山さんに教えてもらったページみた。 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相当親切なチュートリアルがないと勉強できんわ。 どのタクティク使えばいいのかとかわからんすぎる。 >>822 なかなかやるじゃん。 ついでに「片山QZの定理」の証明でもやってみる? 片山QZの定理 http://katahiromz.web.fc2.com/mathai/ MZとかQZとかって何なの? 別にいいんだけど。 片山QZの定理はなんかえらい難しそうなのでやめとく。 QZというのはC/C++宿題スレに生息している人だよ。 そうだな。2n=n+nの証明なんかどうかな? 楽勝? 掛け算の定義がどこにあるのかわからん。 証明もいいけどコードの自動生成のほうが面白そうかな〜 >>826 英語では、掛け算がmultiplicationで、自然数がnatural numbersだろ? それを略すればmul,natになるだろ? SearchAbout mul. SearchAbout nat. で検索できるから。 >>827 結構むずかしい。 仮にできたとしても時間かかると思う。 ぶっちゃけCoqやってると無限に時間を吸われる可能性がある。 早めに身を引いた方がよさそうかな〜とも思う。 数学に基づいた言語としてCoqは最適の例かと思われたが、御気に召さないとはこれ如何に。 では、そなたはどのような言語が希望か申し上げてみよ。 いや〜確かにCoq面白いんだけど。 勉強するのに時間かかり過ぎるっていうか もうちょっと市民権を得て入門書とか充実してからの方がいいかな〜と。 証明も紙なら簡単にできることが結構難しかったりで、 実利を得るところまで勉強進めるのがしんどい。 実用までいかなくてただのパズルで終わりそう。 Coq参考になるところは多いと思うんだけどね。 どこまで時間費やすか見極めたほうがよさげ。 片山さんはCoqにどの程度手ごたえ感じてるの? 麿は、この素晴らしきCoqを使えば、不具合のないソフトウェアが作れると見ては、 これをマスターすれば世界征服も夢ではないと、そのような所存でおじゃるよ。 Coqと人工知能を組み合わせたら……、金融取引に活かせば……とか楽しい妄想が広がるでおじゃる。 人工知能といえばdeep learningとかいうのが流行らしいんだが。 2n=n+nはomegaで一発っぽい。 omegaなしだとどうやるかわからん。 途中よけいなことしてるかもだができたっぽい。 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. >>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. ほう、4並べのソルバですか。面白い なぜこのスレなのかは気にしないでおこう thx 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、 BitTorrentがオープンソースで開発されています 言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか? Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw The Covenant Project 概要 Covenantは、純粋P2Pのファイル共有ソフトです 目的 インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します 特徴 Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW) 接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です DHTにはKademlia + コネクションプールを使用します UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません c 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 TQ9W4 >>118 Haskellのクイックソートはリスト内包表記使った方が美しい。 qsort [] = [] qsort (x:xs) = small ++ [x] ++ leage where small = qsort [a|a <- xs,a <= x] leage = qsort [a|a <- xs,a > x] >>1 が求めるのってHaskellやPythonのリスト内包表記だけでプログラミングしたいとか? SQLやC#のLinqにも通じるけど。 集合論的なのがあれば便利だけど、「だけ」と言うのはプログラミング上もキツイと思うな。 文字数を求める関数 再帰版 length [] = [] length (_:xs) = 1 + length xs リスト内包表記版 length xs = sum [1 | _ <- xs] ― リスト内包表記で1行になるけど、結局sum関数は必要。(チャレンジしたけど、リスト内包表記だけでsum関数は無理ぽ) sum [] = 0 sum (x:xs) = x + sum xs Haskellじゃないの? 集合とか要素に型、集合にも型名を与えて処理する Haskellとモナドの動画見てたけど少しだけ理解 計算は集合が状態遷移で形態(形状)変化した結果だと思う [1 1]->sum->[1]みたいな モナドの適当な感想 モナドは状態遷移を行う処理手続き関数の中に バグや矛盾が入り込みにくい小さなプログラム単位を数珠つなぎに連鎖させ エラーなり問題点の発生場所を明確化する手法な気がした scalaのモナドは読むの辛いね(慣れ?) ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.4.7 2024/03/31 Walang Kapalit ★ | Donguri System Team 5ちゃんねる