Hindley-Milner型に適用されるCurry-Howard同型では、どの命題がa-> [a]に対応しますか?


7

(質問はHaskellに触発されているため、Haskell構文を使用しますが、SMLやElmなどの一般的なHindley-Milnerポリモーフィック型システムに適用されます)。

型シグネチャがある場合f :: a -> [a]、その型シグネチャによってエンコードされる論理命題は何ですか?

私はそのコンストラクタは好きなタイプを知って->(,)あなたのロジックで「操作」に対応して:->「意味」シンボルに対応。

[]も型コンストラクタであると想定しており、答えは再帰的な定義と関係があるかもしれないと感じています。これは次のように実装できることがわかっています。

data List a = Cons a (List a) | Nil

しかし、これが論理の意味で何を意味するのかはわかりません。

回答:


5

型をロジックとして解釈する1つの方法は、戻り値型の値の存在条件としてです。だから、f :: a -> [a]型の値が存在する場合、定理たちはa、型の値が存在します[a]。関数の実装は命題の証明です。

詳細は次のとおりです。

基本的に、データコンストラクターを使用すると、合計や積(ORおよびAND)と同様のものを作成できますが、複数のバリアントを使用でき、型を名前で特別に "タグ付け"して、それを区別できます(名前などList)。

また、再帰的に構築することもできます。 a、命題 [a] 方程式の解と見なすことができます バツaaバツa

Agdaに表示されるのと同様のGADTスタイルの疑似コードを使用してListの定義を記述すると、状況が少し明確になります。

data List : Type -> Type where
    Nil : ∀ a . List a
    Cons : ∀ a . a -> List a -> List a

これにより、2つのものが得られListます。の命題の公理として機能するコンストラクター(または関数)と、それらをパターンマッチングまたは分解する公理です。

大まかに言えば、それはロジックに以下の公理を導入します:

  • どんな命題でも a[a] 保持します。
  • もし a 保持し、 [a] 保持し、 [a] 保持する
  • もし [a] 保持し、その後 保持、または a[a] 保持します。

ロジックとして解釈すると、これらは常に役に立たない 保持している、そこを分解してもあまり有用な情報は得られない

量指定子またはより強力な型拡張(GADT、型ファミリー、依存型など)がないと、興味深いことを実際に証明できないことがわかります。そのため、標準のHaskell型をロジックとして解釈することについてあまり理解していません。 。


fの自由定理を証明できると思います。
仮名2015年

2
@jmiteについてCons : ∀ a . a -> List a:どういう意味Cons : ∀ a . a -> List a -> List aですか?
アントン・トルノフ2016

3

リストのタイプは命題として少し奇妙です。それらは、直接よく知られているものには実際には対応していませんが、それらが何に相当するかを簡単に確認できます。nilは存在するので[a]、いつでも証明できます。そのためa、リストタイプは証明するのが非常に簡単です。特に、すでに証明されているトートロジーと簡単に同等です。そのため、それらを紹介することは少し面白くありません。さらに、消去規則には問題があります。つまり[]、新しい仮定を与えないリストを削除するために、何かを証明する必要があります。したがって、私は通常、リストの削除を使用した証明を、それを使用しない証明に変換できます。しかし、リストが空であることを否定したリストについて何か知っているかもしれませんが、その場合はもっと興味深いものになります。

ですから、多くの場合、それはちょっと退屈ですが、証明の関連性のおかげで、実際には多少興味深いものもあります。Haskellには証明の関連性はありませんが、Haskellのリストでは退屈です。

ある意味(私はここで何かを曖昧にしています)、Haskellのリストは、常に真のブール演算子に相当するものに対応しています。したがって、ブール値を否定しないで、idはそれを同じに保ち、リストの動作は、何に接続しても常にtrueになるようにします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.