型理論の文脈で「ポジティブな位置」と「ネガティブな位置に」とはどういう意味ですか?
このトピックに関するボブハーパーのブログ投稿から私が理解した唯一のことは、型理論におけるこの意味での極性と論理における極性との間に関係があるということですが、その関係が何であるかわかりません。
型理論の文脈で「ポジティブな位置」と「ネガティブな位置に」とはどういう意味ですか?
このトピックに関するボブハーパーのブログ投稿から私が理解した唯一のことは、型理論におけるこの意味での極性と論理における極性との間に関係があるということですが、その関係が何であるかわかりません。
回答:
残念ながら、「極性」は型理論ではやや過負荷の概念です。「ポジティブポジション」と「ネガティブポジション」は、ボブがフォーカス/偏光について話していることとは異なる極性の概念を指します。
帰納型を定義するときは、定義している型の操作に対応する一連のルールを指定します。たとえば、a Nat
は
zero : Nat
suc : Nat -> Nat
そして、他のとNat
include suc
に繰り返し適用することで生成できるすべての値が含まれていることを期待します。この帰納的構造に沿って、s 全体で再帰原理が得られます。これは、これらがこれらのコンストラクターによって生成されるという事実に基づいて機能します。Nat
zero
Nat
Nat
rec : A -> (A -> A) -> Nat -> A
そのため
rec Z S zero = zero
rec Z S (suc n) = S (rec Z S n)
ただし、ルールとして記述できる内容には制限があります。そうでなければ、再帰の原則を正当化できない一連のルールを書き留めることができます。D
1つのコンストラクターを持つ「帰納型」を検討してください
d : (D -> D) -> D
ここには正気な再帰の原則はありません。そして正当な理由で!再帰の原則がある場合、それを使用して自己アプリケーションのバージョンをエンコードし、それを使用して非終了にすることができます。これはD
、誘導型はコンストラクタを繰り返し適用することで生成される有限構造であるため、「誘導型」とは言えないことを意味します。
これに対処するために、型理論で帰納型を再帰的にする方法を制限します。具体的には、「否定的な場所」への表示を停止します。これは、あなたが話していた極性の概念です。このようにして、位置の極性が決定されます。
だから、X
次の二つの最初の2つの、負で正であります
X
Int -> X
X -> Int
(Unit -> X) -> Int
このアイデアは、カテゴリ理論に頼ることで正当化されます。ここで、再帰のみが正である帰納型は共変ファンクタを生み出します。これがどのように機能するのか、なぜそれが興味深いのかについての詳細。
彼のブログポストで、ハーパーは極性の異なる意味について話していました。この極性は、ロジック内のさまざまな接続詞に意味が与えられる方法への参照です。特に、2つの方法で結合詞を分類できます。
プログラミング言語の用語では、これは遅延型と厳密型の違いをうまく捉えています。厳密な型は、その値によって定義されます。遅延は、それらをどのようにパターンマッチングできるかによって定義されます。これを適切に処理するために、2つの主要な構成要素、ポジティブ型を構築する方法、およびネガティブ型を分解する「スパイン」を使用して言語を定義します。これを使用して、厳密な計算と遅延計算の両方を1つの言語に組み込むことができます。
これをよりよく理解するために、ボブ・ハーパーの本の第38章を紹介します。