型理論における「ポジティブポジション」と「ネガティブポジション」の意味は?


10

型理論の文脈で「ポジティブな位置」と「ネガティブな位置に」とはどういう意味ですか?

このトピックに関するボブハーパーのブログ投稿から私が理解した唯一のことは、型理論におけるこの意味での極性と論理における極性との間に関係があるということですが、その関係が何であるかわかりません。

回答:


9

残念ながら、「極性」は型理論ではやや過負荷の概念です。「ポジティブポジション」と「ネガティブポジション」は、ボブがフォーカス/偏光について話していることとは異なる極性の概念を指します。

あなたの意味

帰納型を定義するときは、定義している型の操作に対応する一連のルールを指定します。たとえば、a Nat

  • 価値 zero : Nat
  • 機能 suc : Nat -> Nat

そして、他のとNatinclude sucに繰り返し適用することで生成できるすべての値が含まれていることを期待します。この帰納的構造に沿って、s 全体で再帰原理が得られます。これは、これらがこれらのコンストラクターによって生成されるという事実に基づいて機能します。NatzeroNatNat

rec : A -> (A -> A) -> Nat -> A

そのため

rec Z S zero = zero
rec Z S (suc n) = S (rec Z S n)

ただし、ルールとして記述できる内容には制限があります。そうでなければ、再帰の原則を正当化できない一連のルールを書き留めることができます。D1つのコンストラクターを持つ「帰納型」を検討してください

  • d : (D -> D) -> D

ここには正気な再帰の原則はありません。そして正当な理由で!再帰の原則がある場合、それを使用して自己アプリケーションのバージョンをエンコードし、それを使用して非終了にすることができます。これはD、誘導型はコンストラクタを繰り返し適用することで生成される有限構造であるため、「誘導型」とは言えないことを意味します。

これに対処するために、型理論で帰納型を再帰的にする方法を制限します。具体的には、「否定的な場所」への表示を停止します。これは、あなたが話していた極性の概念です。このようにして、位置の極性が決定されます。

  1. 引数は正の位置から始まります
  2. 左矢印に行くたびに、極性が反転します

だから、X次の二つの最初の2つの、負で正であります

X
Int -> X
X -> Int
(Unit -> X) -> Int

このアイデアは、カテゴリ理論に頼ることで正当化されます。ここで、再帰のみが正である帰納型は共変ファンクタを生み出します。これがどのように機能するのか、なぜそれが興味深いのかについての詳細。

ボブ・ハーパーの意味

彼のブログポストで、ハーパーは極性の異なる意味について話していました。この極性は、ロジック内のさまざまな接続詞に意味が与えられる方法への参照です。特に、2つの方法で結合詞を分類できます。

  • ポジティブ接続詞は、それらを導入する方法を定義することによって定義できます(それらの導入ルール)
  • 否定的な接続詞は、それらの使用方法(それらの除去規則)を定義することによって定義できます。

プログラミング言語の用語では、これは遅延型と厳密型の違いをうまく捉えています。厳密な型は、その値によって定義されます。遅延は、それらをどのようにパターンマッチングできるかによって定義されます。これを適切に処理するために、2つの主要な構成要素、ポジティブ型を構築する方法、およびネガティブ型を分解する「スパイン」を使用して言語を定義します。これを使用して、厳密な計算と遅延計算の両方を1つの言語に組み込むことができます。

これをよりよく理解するために、ボブ・ハーパーの本の第38章を紹介します。


申し訳ありません、@ jozefg、私は概念を理解しましたが、型が正の位置にのみ出現するかどうかを確認する方法を理解しませんでした。もう少し詳しく指定して、さらにいくつかの例を挙げてください。
paulotorrens 2016
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.