プログラミング言語理論と証明論において、カリー・ハワード対応とは、コンピュータプログラムと数学的証明との間の直接的な関係を指します。これは、カリー・ハワード同型性または同値性、あるいは証明をプログラムとして、命題または式を型として解釈する関係とも呼ばれます。
これは、アメリカの数学者ハスケル・カリーと論理学者ウィリアム・アルヴィン・ハワードによって最初に発見された、形式論理体系と計算計算体系の間の構文的類似性の一般化である。[ 1 ]これは通常、カリーとハワードに帰せられる論理と計算の間のリンクであるが、このアイデアは、LEJ ブロウワー、アーレント・ヘイティング、アンドレイ・コルモゴロフ(ブロウワー-ヘイティング-コルモゴロフ解釈を参照)[ 2 ]およびスティーブン・クリーネ(実現可能性を参照)によってさまざまな形で与えられた直観主義論理の操作的解釈に関連している。この関係は、カリー-ハワード-ランベックの3方向対応として、圏論を含むように拡張されている。[ 3 ] [ 4 ] [ 5 ]
カリーとハワードの往復書簡の始まりは、いくつかの観察に基づいている。
実際、ハワードによる同型性の最初の定式化は、ゲンツェンのシーケント計算(の変形)を参照したものであった。同型性が自然演繹によって最もよく理解されるという観察、および同型性自体の現在の定式化は、ペル・マルティン=レーフによるものである。[ 9 ]カリー=ハワード対応とは、証明システムと計算モデルの間に同型性があるという観察である。これは、これら2つの形式体系のファミリーは同一とみなすことができるという主張である。
どちらの形式主義の特殊性も抽象化すると、次の一般化が成り立ちます。証明はプログラムであり、証明される式はそのプログラムの型です。より非公式に言えば、これは、関数の戻り値の型(つまり、関数が返す値の型)が、関数に渡される引数の値の型に対応する仮説に従う論理定理に類似しており、その関数を計算するプログラムは、その定理の証明に類似しているという類推と見なすことができます。これにより、論理プログラミングの一形式が厳密な基礎の上に構築されます。証明はプログラム、特にラムダ項として表現でき、証明は実行できます。
この対応関係は発見後、幅広い新たな研究の出発点となり、証明システムと関数型プログラミングに基づく型付きプログラミング言語の両方として機能するように設計された新しいクラスの形式体系へと発展した。これには、マルティン=レーフの直観主義型理論とコカンの構成計算(CoC)が含まれる。これら2つの計算体系では、証明は議論の正規の対象であり、証明の性質をあらゆるプログラムの性質と同じように記述することができる。この研究分野は通常、現代型理論と呼ばれている。
カリー=ハワードのパラダイムから派生したこのような型付きラムダ計算は、プログラムとして捉えられる証明を形式化、検証、実行できるRocqのようなソフトウェアにつながった。
逆の方向性としては、プログラムを用いて、その正当性に基づいて証明を抽出する方法があり、これは証明コードと密接に関連する研究分野である。これは、プログラムが記述されているプログラミング言語が非常に豊富な型付けを備えている場合にのみ実現可能である。このような型システムの開発は、カリー・ハワード対応を実用的なものにしたいという願望によって部分的に動機づけられてきた。
カリーとハワードの書簡は、カリーとハワードの原著では扱われていなかった証明概念の計算内容に関する新たな疑問も提起した。特に、古典論理は、プログラムの継続性を操作する能力と、シーケント計算の対称性に対応しており、名前呼び出しと値呼び出しという2つの評価戦略間の双対性を表現することができることが示されている。
非終了プログラムを記述できる可能性があるため、チューリング完全な計算モデル(任意の再帰関数を持つ言語など)は、対応関係を素朴に適用すると矛盾した論理につながるため、慎重に解釈する必要があります。論理的な観点から任意の計算を扱う最良の方法は、依然として活発に議論されている研究課題ですが、一般的なアプローチの 1 つは、証明可能な終了コードと潜在的に非終了するコードを分離するためにモナドを使用することに基づいています (このアプローチは、より豊富な計算モデルにも一般化され[ 10 ]、それ自体はカリー-ハワード同型性の自然な拡張によって様相論理と関連しています[ 11 ] )。完全関数型プログラミングによって提唱されているより根本的なアプローチは、非終了動作が実際に必要とされる場所でより制御された共再帰を使用することで、無制限の再帰を排除し (高い計算複雑性は維持されるものの、チューリング完全性を放棄する)ことです。
より一般的な定式化では、カリー・ハワード対応とは、形式的証明計算と計算モデルの型システムとの間の対応関係である。具体的には、それは2つの対応関係に分かれる。1つは、どの特定の証明システムや計算モデルを考慮するかに依存しない、式と型のレベルの対応関係であり、もう1つは、今度は、考慮される特定の証明システムと計算モデルの選択に固有の、証明とプログラムのレベルの対応関係である。
式と型のレベルでは、対応関係によれば、含意は関数型と同じように振る舞い、論理積は「積」型(言語によってはタプル、構造体、リストなどと呼ばれる)と同じように振る舞い、論理和は和型(この型は共用体と呼ばれる)と同じように振る舞い、偽の式は空型と同じように振る舞い、真の式は単位型(唯一の要素がヌルオブジェクト)と同じように振る舞います。量化子は、従属関数空間または積(適切な場合)に対応します。 これは次の表にまとめられています。
証明システムと計算モデルのレベルでは、対応関係は主に、第一に、ヒルベルト型演繹システムと組み合わせ論理として知られるシステムの特定の定式化の間、そして第二に、自然演繹とラムダ計算として知られるシステムの特定の定式化の間の構造の同一性を示しています。
自然演繹法とラムダ計算の間には、以下の対応関係が存在する。
最初は、カリーとフェイズが1958年に出版した組み合わせ論理に関する本の中で、次のような単純な指摘があった。組み合わせ論理の基本コンビネータKとSの最も単純なタイプは、ヒルベルト型の演繹システムで使用されるそれぞれの公理スキームα → ( β → α )と( α → ( β → γ )) → (( α → β ) → ( α → γ ))に驚くほど対応していた。このため、これらのスキームは現在では公理KとSと呼ばれることが多い。ヒルベルト型の論理で証明として見られるプログラムの例を以下に示す。
直観主義の含意断片に限定すれば、ヒルベルト流の論理を形式化する簡単な方法は次のようになる。Γ を仮説とみなされる有限個の論理式の集合とする。このとき、δ はΓ から導出可能であり、Γ ⊢ δ と表記される。ただし、次の場合である。
これは、次の表の左列に示すように、推論規則を用いて形式化することができる。
型付き組み合わせ論理は、同様の構文を用いて定式化できます。Γ を型が注釈された変数の有限集合とします。項 T (これも型が注釈されています) は、次の場合にこれらの変数 [Γ ⊢ T: δ ] に依存します。
ここで定義される生成規則は、下の右側の列に示されています。カリーのコメントは、両方の列が1対1に対応していることを単純に述べています。この対応を直観主義論理に限定するということは、パースの法則(( α → β ) → α ) → αのような古典的な同義反復が対応から除外されることを意味します。
より抽象的なレベルで見ると、この対応関係は次の表のように言い換えることができる。特に、ヒルベルト論理に特有の演繹定理は、組み合わせ論理の抽象化除去のプロセスと一致する。
対応関係のおかげで、組み合わせ論理の結果をヒルベルト論理に、またその逆も可能になります。例えば、組み合わせ論理における項の簡約の概念はヒルベルト論理に転用でき、同じ命題の証明を別の証明に標準的に変換する方法を提供します。また、通常の項の概念を通常の証明の概念に転用することで、公理の仮定がすべて分離されている必要はないこと(そうでない場合は単純化が発生する可能性があるため)を表現できます。
逆に、直観主義論理におけるパースの法則の非証明可能性は、組み合わせ論理に逆変換できる。つまり、組み合わせ論理の型付き項で、型で型付け可能なものは存在しない。
組み合わせ子や公理の集合の完全性に関する結果も転用できる。例えば、組み合わせ子X が(外延的) 組み合わせ論理の1 点基底を構成するという事実は、単一の公理体系が
これはXの主要なタイプであり、公理図式の組み合わせの適切な代替物である。
カリーが直観主義ヒルベルト型の演繹と型付き組み合わせ論理との構文的対応関係を強調した後、ハワードは1969年に、単純な型付きラムダ計算のプログラムと自然演繹の証明との間の構文的類似性を明示した。以下では、左側が直観主義含意自然演繹を暗黙の弱化を伴うシーケントの計算として形式化し(シーケントの使用は、演繹規則をより簡潔に記述できるため、カリー-ハワード同型性の議論では標準である)、右側はラムダ計算の型付け規則を示している。左側では、Γ、Γ 1、Γ 2は順序付き式のシーケンスを表し、右側では、名前がすべて異なる名前付き(つまり型付き)式のシーケンスを表す。
対応関係を言い換えると、Γ ⊢ αを証明するということは、Γ にリストされている型の値が与えられたときに、型αのオブジェクトを生成するプログラムを持つことを意味します。公理/仮説は、新しい制約のない型を持つ新しい変数の導入に対応し、→ I ルールは関数の抽象化に対応し、→ E ルールは関数の適用に対応します。コンテキスト Γ を式の集合とみなすと、対応関係は厳密には成り立たないことに注意してください。たとえば、型α → α → αのλ 項 λ x .λ y . xと λ x .λ y . yは、対応関係では区別されません。例を以下に示します。
ハワードは、この対応関係が論理の他の結合子や単純型付きラムダ計算の他の構成にも及ぶことを示した。抽象的なレベルで見ると、この対応関係は次の表のように要約できる。特に、ラムダ計算における正規形の概念が、プラウィッツの自然演繹における正規演繹の概念と一致することも示されており、そこから型占有問題のアルゴリズムを直観主義的証明可能性を判定するアルゴリズムに変換できることが導かれる。
ハワードの書簡は、当然ながら自然演繹法や単純型付きラムダ計算の他の拡張にも及ぶ。以下はその一部である。
カリーの時代もハワードの時代も、証明とプログラムの対応関係は直観主義論理、すなわち特にパースの法則が演繹できない論理のみを対象としていました。この対応関係がパースの法則、ひいては古典論理にまで拡張されることは、グリフィンが、与えられたプログラム実行の評価コンテキストを捉える型演算子に関する研究から明らかになりました。これにより、この評価コンテキストを後で復元することが可能になります。古典論理におけるカリー・ハワード式の基本的な対応関係を以下に示します。古典証明を直観主義論理にマッピングするために使用される二重否定変換と、制御を含むラムダ項を純粋ラムダ項にマッピングするために使用される継続渡しスタイルの変換との間の対応関係に注目してください。より具体的には、名前呼び出し継続渡しスタイルの翻訳はコルモゴロフの二重否定翻訳に関連し、値呼び出し継続渡しスタイルの翻訳は黒田による一種の二重否定翻訳に関連します。
古典論理を、パースの法則のような公理を追加するのではなく、シーケントに複数の結論を許容することによって定義すれば、より精緻なカリー・ハワード対応が古典論理にも存在する。古典的な自然演繹の場合、証明とパリゴのλμ計算の型付きプログラムとの間に、プログラムとしての対応関係が存在する。
ゲンツェンのシーケント計算として知られる形式体系においては、証明とプログラムの対応関係を確立することができるが、それはヒルベルト流や自然演繹の場合のように、明確に定義された既存の計算モデルとの対応関係ではない。
シーケント計算は、左導入規則、右導入規則、および削除可能なカット規則の存在によって特徴付けられます。シーケント計算の構造は、いくつかの抽象機械の構造に近い計算体系と関連しています。非公式な対応関係は次のとおりです。
1970 年に発表された論文(ただし、1968 年にオーボ/トゥルクで開催された第 1 回スカンジナビア論理シンポジウムでの講演に基づく)の中で、ダグ・プラヴィッツは、最小および直観主義一階述語論理の自然演繹導出と、型付きラムダ計算に非常によく似た言語の構成項との間の準同型を定義した(この対応関係は、構成項の言語上でのこれらの論理の健全性の証明に由来する)。[ 15 ]プラヴィッツの準同型はカリー・ハワード同型よりも強力ではないが、より強力な型言語では、依存型は欠けているものの、これも同型になる。プラヴィッツはおそらくハワードの研究を知らなかったと思われる。特に、彼の 1970 年の論文の基となった講演は、ハワードの原稿が出回る 1 年前に行われたからである。
NG de Bruijn は、定理チェッカーAutomathの証明を表すためにラムダ記法を使用し、命題を証明の「カテゴリ」として表現しました。これは 1960 年代後半、ハワードが原稿を書いたのと同じ時期のことでした。de Bruijn はハワードの研究を知らなかった可能性が高く、独自にこの対応関係を述べました。[ 16 ]一部の研究者は、Curry–Howard 対応の代わりに Curry–Howard–de Bruijn 対応という用語を使用する傾向があります。
BHK解釈は直観主義的証明を関数として解釈するが、解釈に関連する関数のクラスを特定しない。この関数のクラスにラムダ計算を用いると、BHK解釈はハワードの自然演繹とラムダ計算の対応関係と同じことを示している。
クリーネの再帰的実現可能性は、直観主義算術の証明を、再帰関数と、その再帰関数が「実現する」、つまり、初期式の選言と存在量化子を正しくインスタンス化して式が真になることを表す式の証明のペアに分割する。
クライゼルの修正された実現可能性は直観主義高階述語論理に適用され、証明から帰納的に抽出された単純な型付きラムダ項が元の式を実現することを示している。命題論理の場合、これはハワードの主張と一致する。抽出されたラムダ項は証明自体(型なしラムダ項として見なされる)であり、実現可能性の主張は、抽出されたラムダ項が式が意味する型(型として見なされる)を持つという事実の言い換えである。
ゲーデルの弁証法解釈は、計算可能な関数を用いた直観主義算術(の拡張)を実現する。自然演繹の場合でさえ、ラムダ計算との関連性は不明瞭である。
ヨアヒム・ランベックは1970年代初頭に、直観主義命題論理の証明と型付き組み合わせ論理のコンビネータが、共通の等式理論であるデカルト閉圏の理論を共有していることを示した。現在、直観主義論理、型付きラムダ計算、デカルト閉圏の関係を指すのに、カリー・ハワード・ランベック対応という表現が使われることがある。この対応の下では、デカルト閉圏の対象は命題(型)として解釈でき、射は仮定の集合(型付けコンテキスト)を有効な帰結(型付き項)に写像する演繹として解釈できる。[ 17 ]
ランベックの対応は等式理論の対応であり、ベータ還元や項正規化といった計算のダイナミクスを抽象化したもので、カリーやハワードの対応のように構造の構文的同一性を表すものではありません。つまり、デカルト閉圏における明確に定義された射の構造は、ヒルベルト型論理や自然演繹における対応する判断の証明の構造とは比較できません。例えば、射が正規化的であることを述べたり証明したり、チャーチ=ロッサー型の定理を確立したり、「強く正規化する」デカルト閉圏について語ったりすることはできません。この区別を明確にするために、デカルト閉圏の根底にある構文構造を以下に言い換えます。
オブジェクト(命題/型)には以下が含まれます
形態(演繹/項)には以下が含まれる
上記の注釈と同様に、任意のデカルト閉圏における明確に定義された射(型付き項)は、以下の型付け規則に従って構築できます。通常の圏論的射の表記法入力コンテキスト表記に置き換えられます。
身元:
構成:
直積:
左投影と右投影:
カレー:
応用:
最後に、このカテゴリーの方程式は次のようになります。
これらの式は以下を意味する。-法律:
さて、あるtが存在して、もし含意直観主義論理では証明可能である。
カリー・ハワード対応のおかげで、論理式に対応する型を持つ型付き式は、その論理式の証明と類似したものとなります。以下に例を示します。
例として、定理α → αの証明を考えてみましょう。ラムダ計算では、これは恒等関数I = λx . xの型であり、組み合わせ論理では、恒等関数はK = λxy . xにS = λfgx . fx ( gx ) を 2 回適用することによって得られます。つまり、I = (( S K ) K )です。証明の説明として、これはα → αを証明するために以下の手順を使用できることを示しています。
一般的に、プログラムに(P Q)の形式のアプリケーションが含まれている場合は、以下の手順に従う必要があります。
より複雑な例として、 B関数に対応する定理を見てみましょう。B の型は( β → α ) → ( γ → β ) → γ → αです。Bは( S ( K S ) K )と同等です。これが定理( β → α ) → ( γ → β ) → γ → αの証明のロードマップです。
最初のステップは ( K S ) を構築することです。K 公理の前件を S 公理のように見せるために、 αを( α → β → γ ) → ( α → β ) → α → γに等しくし、βをδに等しくします(変数の衝突を避けるため)。
ここでの前件は単にSであるため、後件はモーダス・ポネンスを用いて分離することができる。
これは ( K S )のタイプに対応する定理です。次に、この式にSを適用します。Sを次のようにします。
α = δ、β = α → β → γ、およびγ = ( α → β ) → α → γを代入すると、次のようになります。
そして、後続項を切り離します。
これは ( S ( K S ))型の公式です。この定理の特殊なケースはδ = ( β → γ )です。
この最後の式はKに適用する必要があります。Kを再度特殊化し、今度はα を( β → γ )に、βをαに置き換えます。
これは前の式の前件と同じなので、後件を切り離すと次のようになります。
変数αとγの名前を入れ替えると、
それが、残された証明すべき点だった。
以下の図は、自然演繹における( β → α ) → ( γ → β ) → γ → αの証明を示し、それが( β → α ) → ( γ → β ) → γ → αという型のλ 式λ a .λ b .λ g .( a ( b g ))としてどのように解釈できるかを示しています。
a:β → α、b:γ → β、g:γ ⊢ b : γ → β a:β → α、b:γ → β、g:γ ⊢ g : γ ——————————————————————————————————— ———————————————————————————————————————————————————————————————————— a:β → α、b:γ → β、g:γ ⊢ a : β → α a:β → α、b:γ → β、g:γ ⊢ bg : β ———————————————————————————————————————————————————————————————————————— a:β → α、b:γ → β、g:γ ⊢ a (bg) : α ———————————————————————————————————— a:β → α、b:γ → β ⊢ λ g. a (bg) : γ → α ———————————————————————————————————————— a:β → α ⊢ λ b. λ g. a (bg) : (γ → β) → γ → α ———————————————————————————————————— ⊢ λ a. λ b. λ g. a (bg) : (β → α) → (γ → β) → γ → α
最近、遺伝的プログラミングにおける探索空間の分割を定義する方法として同型性が提案された。[ 18 ]この方法は、遺伝子型(GPシステムによって進化したプログラムツリー)の集合を、そのカリー・ハワード同型証明(種と呼ばれる)によってインデックス付けする。
INRIAの研究ディレクターであるバーナード・ラング氏[ 19 ]が指摘しているように、カリー=ハワードの対応はソフトウェアの特許性に対する反論を構成します。アルゴリズムは数学的証明であるため、前者の特許性は後者の特許性を意味します。定理は私有財産となり得ます。数学者はそれを使用するために料金を支払い、それを販売する会社を信頼しなければなりませんが、その会社は証明を秘密にし、いかなる誤りについても責任を負いません。
認知科学者は、高速で直感的な「システム 1」思考と、低速で熟慮的な「システム 2」思考を対比する二重過程理論を、大規模言語モデル(LLM) がどのように推論し、意思決定を行うかを分析するための枠組みとして使用してきました。[ 20 ]また、一般的なエンジニアリング技術では、モデルが問題に取り組みながらコンピュータ コードを記述して実行することができます。テキストで直接答えを予測するのではなく、モデルは短いプログラムを記述し、外部のインタプリタがそれを実行し、モデルは結果を読み戻します。このように計算をインタプリタに委任すると、算術的および論理的エラーが減少することが示されています。[ 21 ] [ 22 ]
カリー・ハワード対応は、実行中のコードが確立できることとできないことを明確にする。この対応の下では、証明は型付けされたプログラムであり、証明される命題はそのプログラムの型であるため、証明をチェックすることはプログラムの型チェックに相当する。論理的な内容は実行ではなく型システムにある。[ 23 ] Python、SQL、JavaScriptなどの汎用言語は証明システムとして設計されたものではなく、形式化された数学の研究者は、証明とプログラムは根本的に異なる認識論的役割を果たすと主張しており、コーディングと証明の間の類似性は実際には限定的である。[ 24 ]さらに、様相演算子□(必然性)と◇(可能性)は、主流のプログラミング言語にはない特殊な様相型システムでのみ計算解釈を得る。[ 11 ]
Rocq、Lean、Agdaなどの証明支援システムは、対応関係に基づいて構築されています。定理は型として記述され、機械検証された証明はその型のプログラムです。LLMをこれらのシステム(Sympyなどの証明システムとともに、すべてコード実行として実行可能)と組み合わせることで、単に実行されるのではなく検証される推論が生成されます。Google DeepMindが開発したシステムAlphaProofは、強化学習を使用して、自動的に形式化された数千万の問題文のカリキュラムでLean証明を作成するモデルを訓練しました。生成されたすべての証明はLeanによって検証され、このシステムは2024年の国際数学オリンピックで銀メダルに相当するスコアを獲得しました。[ 25 ]高階様相論理における機械検証された推論は、既存の証明システムの論理に様相論理を埋め込むことによっても実現できます。このアプローチは、ゲーデルの存在論的証明を形式的に検証するために使用されました。[ 26 ]残された障害は自動形式化、つまり自然言語から形式言語への数学的記述の確実な翻訳である。[ 27 ] [ 28 ]
一部の研究者は、この対応関係をLLM推論に直接適用することを提案している。2025年の提案の一つでは、モデルの思考連鎖の各ステップを型付き論理推論として扱い、型付き証明に変換される推論トレースが、その正しさの検証可能な証明書として機能する。[ 29 ]しかし、この分野のレビューでは、証明生成はコード生成よりもLLMにとってかなり脆弱であることが判明しており、対応関係の優雅さだけではこのギャップを埋めることはできないと警告している。[ 24 ]
ここに挙げた対応関係は、さらに広範囲かつ深遠なものです。例えば、デカルト閉圏は、閉モノイド圏によって一般化されます。これらの圏の内部言語は、線形型システム(線形論理に対応)であり、これはデカルト閉圏の内部言語として単純型ラムダ計算を一般化したものです。さらに、これらは弦理論で重要な役割を果たすコボルディズム[ 30 ]に対応することが示されています。
ホモトピー型理論では、拡張された同値関係も検討されています。ここでは、型理論は一価公理(「同値性とは等価性である」)によって拡張され、ホモトピー型理論を数学全体(集合論や古典論理を含む)の基礎として使用できるようになります。これにより、選択公理やその他多くの事柄について議論する新しい方法が提供されます。つまり、証明は占有型要素であるというカリー・ハワード対応は、証明のホモトピー同値性の概念(空間内の経路として、型理論の同一性型または等価性型が経路として解釈される)に一般化されます。[ 31 ]
{{cite book}}: CS1 maint: postscript (リンク)