Anarchy Proof This is a proof server. You can enjoy theorem proving here in several languages (one language). The list of all problems Create a new problems News return top
Haskell 、Erlang の次のブームは Coq に違いありません。とりあえず基本ということで、Coq でひねりのない brainfuck インタプリタを書いてみました。動作例。Coq のコードが色づけできないとは何事か。 Eval compute in (finite_execute " +++++++++[>++++++++>+++++++++++>+++++<<< -]>.>++.+++++++..+++.>-.------------.<++ ++++++.--------.+++.------.--------.>+. " "" 500). = "Hello, world!"%string : string 残念ながら (?) Coq では停止性が保障された関数しか定義できません。ここでは最大評価ステップを指定しないといけないという仕様にしてごまかしています (引数の 50
名前: コメント: 29夜: 31昼: 30夜 shinh:あくまで問い詰める会です:△(不明):○:○ soutaro:○:○ kmizu: 旭川のとき(http://alohakun.blog7.fc2.com/blog-entry-807.html)はあんまり問い詰められなかったので、今度こそ: ○:○:○ kimura 31日との昼ということで○ です。△△△ かなあ? あろはさんの卒論途中までしか読んでない。 odz: ×:○:○ あれ、気がついたら定員埋まってる?キャンセル待ちで。 YT wo: 問い詰めたいです:△:○:○ y14c: イクイク詐欺:○:○:○ naoya_t: 素人(言葉責め的な意味で)ですが行ってもいいっすか:○:○:○ s1061123: LL当日じゃなければどっちでも大丈夫な予感です:○:○:△ shelarcy: 大所帯になってきましたね。こちらにも
Abstract A constructive proof of the Gödel-Rosser incompleteness theorem has been completed using the Coq proof assistant. Some theory of classical first-order logic over an arbitrary language is formalized. A development of primitive recursive functions is given, and all primitive recursive functions are proved to be representable in a weak axiom system. Formulas and proofs are encoded as natural
(* 注意:今回はCoq 8.1以上を使用。 *) 今回は、らくがきえんじんで、昔 言及されていた、クイックソートに挑戦してみる。 Coqで、再帰する関数を書く場合は、Definitionコマンドではなく、Fixpointコマンドを使う。 しかし、Fixpointによる関数定義では、明らかに停止する構造を持つ必要がある。 Coqでは、必ず停止する関数のみが定義できる、という制限のため、このように再帰する関数を定義するのは難しいが、Coqで作った関数は、必ず停止して結果を返す、という性質を保っている。 しかし、Fixpointによる定義では、簡単に定義できない再帰関数もある。 例えば、次のように、クイックソートの関数を素直にかいてみると、以下のようなエラーになる。 (* クイックソートの定義 失敗例 *) Fixpoint qsort (l : list A) : list A := mat
ヒビルテで、さかいさんが興味深いCoqのコードを紹介していた。 ⇒ λ. Coqで“無限オブ無限” どうやら元ネタはここ(derive your dreams)らしい。 おもしろそうなので、さかいさんのコードを証明してみた。 証明した定理は以下。 Theorem main : forall m n:nat, m >= 1 -> n >= 1 -> Str_in (m,n) (iflatten ss). 但し、 ss = [[(1,1); (1,2); ...]; [(2,1); (2,2); ...]; : : ]とする。 (*=====まず、ちょっと準備=====*) Lemma p_split : forall (X Y:Set)(x1 x2:X)(y1 y2:Y), x1 = x2 -> y1 = y2 -> (x1, y1) = (x2, y2). Proof. intros X
ついでに、主に日本語の Coq 情報を (10 分で思い出せる範囲で) まとめてみます。順不同。 公式に近い情報 本家 Coq'Art (Coq の教科書) Cocorico! (本家 Coq wiki) CiteSeer (笑) Coq のことをまとめようとしている wiki 菊さんの Coq wiki Tossy-2 の Coq wiki たまに Coq のことが書いてあるブログ yoshihiro503 さんのブログ (LL 魂で Coq の発表をされた方、Coq の話ばっかり) いまいけいごさんのブログ 菊さんのブログ Tossy-2 のブログ あろはさんのブログ (2006/04 〜 05 頃) 他にもちらほら見かけるはずなのですが、ちゃんとメモしてなかったので思い出せません。見つけたら自発的に適宜追加するかもしれませんが、教えてもらえると助かります。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く