見出し画像

カリー=ハワード同型対応と水戸黄門

はじめに
最近、行きつけのバーでカリーハワード同型対応とプログラミングに関して、バーのスタッフから教えてくれました。
数学とプログラミングの重要な概念についてなのですが、はっきりと理解できなかったのですが、
最近テレビで時代劇の水戸黄門を久しぶり見て、時代劇を例にカリーハワード同型対応を考えてみようと思います。

・カリー=ハワード同型対応とは?

カリー=ハワード同型対応(カリー=ハワードどうけいたいおう、英語: Curry–Howard correspondence)とは、プログラミング言語理論と証明論において、計算機プログラムと証明との間の直接的な対応関係のことである。「プログラム=証明」(proofs-as-programs)・「型=命題」(formulae-as-types)などとしても知られる。これはアメリカの数学者ハスケル・カリー論理学者ウィリアム・アルヴィン・ハワード(英語版)により最初に発見された形式論理の体系とある種の計算の体系との構文論的なアナロジーを一般化した概念である。通常はこの論理と計算の関連性はカリーとハワードに帰属される。しかしながら、このアイデアはブラウワーハイティングコルモゴロフらが定式化した直観主義論理の操作的解釈の一種

カリー=ハワード同型対応 - Wikiwand

↑だそうです。 難しい・・( ノД`)シクシク…

水戸黄門の概要

水戸黄門は、江戸時代に実在した水戸光圀公をモデルにした人気の時代劇です。
彼は全国を旅しながら、困っている人々を助け、不正を正すという役割を果たします。
ストーリーの中で、彼はしばしば偽の身分を使って悪人たちに近づき、最後に「この印籠が目に入らぬか!」という名台詞と共に正体を明かします。
今もたまに見ると楽しいですよね。


論理命題と型理論

このストーリーを使って、カリーハワード同型対応を説明します。まず、水戸黄門の旅を一つの論理命題だと考えてみます。

  • 命題(P):悪を正すための旅が成功する。

  • 証明(Q):黄門様が旅の過程で行う具体的な行動。

ここで、カリーハワード同型対応に従えば、この命題(P)は型に対応し、証明(Q)はプログラムに対応します。つまり、

  • 型(Type):悪を正すための手段(旅の構造)。

  • プログラム(Program):実際に行われる行動(旅の内容)。

型とプログラムの詳細な対応

ここで、型とプログラムの具体的な対応をもう少し詳しく見てみます。

  1. 出発(プログラムの開始)
    型:出発のための準備、旅の計画
    プログラム:旅の初めに行う手続き

  2. 困っている人を発見(入力を受け取る)
    型:困っている人々を見つけるための基準
    プログラム:その基準に基づいて対象を見つけ出す

  3. 悪人に近づくために偽の身分を使う(条件分岐)
    型:状況に応じた行動の選択肢
    プログラム:条件に基づく分岐と対応する行動

  4. 証拠を集める(データの処理)
    型:証拠を集めるための方法と手順
    プログラム:証拠を集め、それを整理・分析する処理

  5. 印籠を出して正体を明かす(結果の出力)
    型:最終的な結果の提示方法
    プログラム:結果を表示し、行動の結論を示す

このように、型はプログラムがどのように動作するべきかを示す「設計図」のようなものであり、プログラムはその設計図に基づいて具体的な行動を実行します。

カリーハワード同型対応の影響

カリーハワード同型対応は、数学やプログラミングの分野に多大な影響を与えています。特に、以下のような点が挙げられます:

  1. プログラムの正当性の証明
    型理論を用いることで、プログラムが期待通りに動作することを数学的に証明できます。これにより、バグのないソフトウェアの開発が可能になります。

  2. プログラムの自動生成
    論理命題から対応するプログラムを自動生成する技術が発展しています。これにより、効率的なプログラム開発が実現します。

  3. 型安全性の確保
    型システムを導入することで、プログラムの誤りを早期に検出し、安全性を高めることができます。

まとめ

カリーハワード同型対応は、数学的な論理とプログラムの間に深い関係があることを示す重要な概念です。
水戸黄門のストーリーを例にすることで、この抽象的な概念を少しでも身近に感じてます。
関係性はないんですけどね。

私たちの日常の中にも、こうした深い関係性が隠れているのかもしれませんね。

この記事が気に入ったらサポートをしてみませんか?