モデル、形式記述、論に関するtanakakoichi9230のブックマーク (2)

  • 定理証明系 Haskell

    この記事は Haskell Advent Calendar 2013 および Theorem Prover Advent Calendar 2013 二十日目の記事であり、更にTCUGの新刊「Coqによる定理証明」の販促記事でもある。 型システム再考 Haskell は静的型付き言語だ。それだけでなく、強力な型推論や表現力の高い型システムを備えている。 型とは何だろうか。 こうした質問に対してよくある答えは、「値の種類を区別するためのタグ」になるだろうか。Int型は整数だし、Bool型は真偽値で、[Int]型は整数値リストを表す型だ。なるほど、値の種類を区別するものに見える。 しかし、この答えは間違ってはいないが、もっと相応しい云い方が出来るだろう。それは、「型は不変条件である」というものだ1。この言明は別に私固有の見方というわけではなく、ある程度の型レベルプログラミングをやった事のある人

    定理証明系 Haskell
  • 宣言型プログラミングの可能性と限界

    宣言型プログラミングとは 命令型プログラミングと対比されるもう1つの大きな流れとして、ハードウエアとは独立した、数理論理学に根ざした流れが存在します。(純粋な)関数プログラミングや論理プログラミング、制約プログラミングなど、いろいろな理論に根ざしたプログラミングモデルが存在しますが、ここではそれらを総称して、宣言型プログラミングと呼ぶことにします。 宣言型プログラミングは、問題の解法、すなわちデータ構造とアルゴリズムを記述する命令型プログラミングとは対照的なプログラミングパラダイムです。宣言型プログラミングが記述するものは、問題の定義、すなわち解くべき問題の性質や、その際に満たすべき制約の記述です。 問題の定義は、問題の解法とはなるべく独立しているべきです。なぜならば、問題の効率的な解き方は、実行環境に依存したさまざまなやり方が考えられるからです。たとえ、ある環境では効率的な解き方であって

  • 1