2008-01-01から1年間の記事一覧

関数型言語haXe

最近、ocaml-nagoya勉強会でhaXeコンパイラのソースコードを読んでいるので、haXeのプログラムを書きたくなってきた。 ということで、ここにいろいろ書いてみます。いろいろ指摘いただけると助かります。http://ocaml-nagoya.g.hatena.ne.jp/yoshihiro503/

定理証明器Isabelleで計算可能性の証明

偶然見つけました。 http://www2.score.cs.tsukuba.ac.jp/4eba3005-1/student/takuya-fujiwara-1/cs30bb30df30ca30fc767a88688cc76599-1/CSseminor2008_Fujiwara_Slides.pdf将来、定理証明器で言語の開発をするようになるのかもしれない。チューリング完全性…

CoqでPrim言語のサブセットのパーサを実装した。

CSNagoyaのコンパイラを作ろう部門での教科書「コンパイラ入門 C#で学ぶ理論と実践(冨沢 高明)」が自宅に届いたので、8章までの部分を復習するために実装してみた。 この本ではC#という言語で実装することを念頭に置かれていたが、Coqが好きなのでCoqで実装…

Lambda Cを実装してみた。

404 Not FoundやはてなダイアリーでλCが話題になっていたので、Lambda C インタプリタを実装してみた。多相型も依存型もサポート。定理証明もできる。Lambda C Interpreterサンプルコード: λ(A:*). λx:A. x (恒等関数) λ(A:*). λ(x:A). λ(y:A). Π(P:Π(a:A)…

Leightweight Language Future (LLFuture) と、等価変換セミナーに行ってきた。

LL Future LL Futureでは、id:sumiiさんがラムダ式や、ユークリッドのアルゴリズムなどの歴史を語っていたのがおもしろかった。数学でのおもしろい概念は何百年後も利用されるのか。 じゃあ今、数学(や計算機科学)でホットな話題が100年後利用されるのかな?…

LLFutureというイベントに行ってきます。

Gallinaについて軽く話します。

Coqで依存型

最近Agdaがはやっているみたいなので、Coqでも依存型(dependent type)を使ってみた。 実装したのは長さ n のベクトル型だ。このベクトル型を使うと、空でないとか、長さが等しいとかを型の段階で保証できるので、より安全なプログラムを書くことができるの…

CoqのソースコードをカッコイイHTMLページにする方法(coqdocを使う)

Coqでプログラムや証明を書いたら、そのソースコードを人に見せたりしたくなるときがある。 そのときに便利なcoqdocという機能がある。coqdocはcoqtopやcoqcなどと一緒のところにある。 使いかたは以下。 $ coqdoc [Coqファイル.v] ここで、(** コメント *)…

CoqでProject Euler (problem 44)

Problem44が解けた? - みずぴー日記に触発されて、Project EulerのProblem 44に挑戦してみた。 問題44: 五角数は Pk = k(3k-1)/2で生成される. 五角数のペア PmとPnについて, 差と和が五角数になるものを考える. 差を D = |Pm - Pn| と書く. 差 D の最小値を…

CSNagoyaでHaskell勉強会

名古屋でHaskellの勉強会をやるという噂を聞いたので、行ってきた。CSNagoyaという勉強会で、教科書は「ふつうのHaskellプログラミング」。みんなで音読していくという方式で、ノートPCを持ってきていない人と持ってきている人でペアプロミングしながら、理…

PPL2008に行ってきた。

Coqでπ計算などで有名なReynald Affeldtさんから、貴重な意見がいただけたり、楽しい話がたくさんあったりで、非常に素晴らしい経験だった。 驚いたこと プログラミング in OCamlでも有名な五十嵐先生のところの研究室では、CALと呼ばれる、小さい証明器を使…

Coqで、クイックソート

(* 注意:今回はCoq 8.1以上を使用。 *)今回は、らくがきえんじんで、昔 言及されていた、クイックソートに挑戦してみる。Coqで、再帰する関数を書く場合は、Definitionコマンドではなく、Fixpointコマンドを使う。 しかし、Fixpointによる関数定義では…