タグ

agdaとlangに関するkiyo_hikoのブックマーク (2)

  • 安全かつ柔軟な依存型 -

    この記事はTheorem Proving Advent Calendar 2011の1日目の記事です。 今日は Agda2 というプログラミング言語を用いて、依存型を用いることで絶対的な安全性と Haskell や OCaml などでは(通常の方法では)実現できない柔軟さのどちらも持つプログラムを記述できるということについて書きます。 この記事は主に、普段動的型付けのプログラミング言語を使っていて、静的型付きの言語では自分の意図したものを十分に表現できないと考えている人を対象読者としています。 依存型とは 型に依存する型や、値に依存する型を作れる型のことです。 例えば、値に依存する型を用いることで型レベルでサイズが与えられているリストを作ることが可能です。 また、リストの結合関数は長さ a のリストと長さ b のリストを取り、リスト a+b のリストを返すというような型を持つことになります

  • Agda - Wikipedia

    agda2による証明の抜粋 Agda(アグダ)は、定理証明器、すなわち数学的な証明を検証するコンピュータプログラムであり、ペール・マルティン=レーフの型理論の一種における構成的証明構築のための対話的システムである。機能的には、依存型をもつ関数型プログラミング言語であるともみなすこともできる。1990年代よりチャルマース工科大学で主に開発されている。 他の定理証明支援系ではスクリプトによって「タクティク」(tactic)を指定して証明を操作するのに対して、Agda では証明を項として表し直接操作するというアイデアに基づいている。言語はデータ型や case式、シグネチャやレコードといった一般的なプログラミング構成概念をもつ。Emacsインターフェイスを使って対話的にコードを作成できるほか、直接コードをコンパイルする処理系の開発も進んでいる。 Agda[編集] Agda は当時チャルマース工科大

    Agda - Wikipedia
    kiyo_hiko
    kiyo_hiko 2013/03/12
    「依存型をもつ関数型プログラミング言語 - Agda では証明を項として表し直接操作する - データ型や case式、シグネチャやレコードといった一般的なプログラミング構成概念をもつ」
  • 1