Lispにおける真理のオラクル:型理論、カリー・ハワード対応、call/ccをめぐる奇妙な物語

2025-06-14

この記事では、Lispで「真理のオラクル」を作成しようと試みます。これは、任意の数学的命題の真偽を判定するプログラムです。著者はカリー・ハワード対応を紹介し、論理的証明が型付き関数型プログラミングにおける表現式に対応することを説明します。Racketのcall/cc関数(ピアースの法則と同型)を用いて、排中律と同型なプログラムの実装を試みます。しかし、実験結果は予想外でした。オラクルは常に偽を返し、不可能な型値にアクセスしようとした場合のみ真を返します。これは、古典論理と構成的論理の違い、そしてcall/cc関数の非標準的な制御フローメカニズムを明らかにします。最後に、著者は「悪魔との取引」という比喩を用いてこの奇妙な振る舞いを説明し、call/cc関数に潜むタイムトラベルのようなメカニズムを示します。

開発