Dependent type、refinement typeおよびHoare Logicの違い


18

私はほとんど依存型理論を知っていません。ウィキペディアから:

依存型とは、定義が値に依存する型です。

そして、私のタイプ理論のコースから、依存型は次のとおりであることを思い出します:

タイプによってインデックス付けされたタイプのファミリー。

しかし、私は依存型と絞り込み型とhoareロジックに関して混乱しています。

Depenedentとリファインメントタイプから、リファインメントタイプはHoareロジックのように見えるためです。満たさなければならない述語を述べることを許可する以外に、さらに多くの電力調整タイプが提供します(Hoare Logicとほぼ同じように見えます)。

依存型は、絞り込み型と比較してどのような追加物を提供しますか?依存型は、洗練型+飽和/制約ソルバーよりも強力です。

誰でも例で空気をきれいにすることができます。

回答:


18

Paul-AndréMellièsとNoam Zeilbergerによるこれを調査した最近の研究があります。特に、論文FunctorsはType Refinement SystemsType Refinement Systems のIsbell Duality定理です。最初の講演のビデオもあります。

特定のシステムを代表として考え、それらの特定のシステムの目標と詳細が一般的なアイデアに起因するため、人々は洗練のタイプについて多くの混乱があると思います。短いのは、タイプ精製システムが独立して存在する用語を分類するのに対し、(非精製)タイプは、依存型またはその他の場合、用語の一部です。これは馴染みがあり、おそらく少し矛盾しているようにも聞こえます。

カリーのタイプ(外因的に)と教会のタイプ(内在)を表示すると、潜在的に馴染みがあり、矛盾しているように見える部分が生じます。カレー型を考えるとき、型は、すでに意味を持つ型付けされていない用語を分類していると考えます。教会のタイプでは、存在する唯一の用語は適切なタイプの用語です。つまり、タイプの制約は構文の一部です。だから私が言っているのは、カレースタイルのタイプシステムは、実際にはタイプなしの用語を洗練するタイプ洗練システムであり、教会スタイルのタイプシステムは、タイプ洗練システムではないということです。これは、たとえば、単純に型付けされたラムダ計算を型洗練システムまたは非洗練型システムのいずれかと考えることができることを意味します。

もちろん、私たちの用語は型付けされていない用語でなければならないという人はいません。型の絞り込みシステムを型付き用語に適用することもできますが、歴史的には、これが(その名前の)絞り込みタイプが発生したコンテキストです。ただし、ソフトタイピングへの応用は、上記の状況により近いものを示しています。

これまでのところ、依存型については何も言っていません。理由は、それが完全に直交する懸念だからです。原型依存型システムは通常、教会スタイルで提示されるため、型洗練システムではなく、NuPRL計算型理論、最も典型的な依存型理論、Martin-Löf型理論の変形に基づく)私が説明したように、露骨に型の洗練システムです。NuPRLの用語にタイプさえないかもしれません!確かに、「PRL」が「Program Refinement Logic」の略であるという事実もヒントになるかもしれません。一方、MLの絞り込みタイプは、絞り込みタイプシステム、おそらく用語の起源を記述しますが、これは決して従属タイプシステムではありません。

ホアレトリプルについては、タイプリファインメントシステムです。それらは、最初の論文で実際に型の洗練システムの例として使用されています。しかし、Hoare Type Theoryは、Hoareトリプルを持つ言語の非洗練型システムと見なすことができるものを提供します。

さまざまなシステムの「力」について答えを得るには、特定の(ファミリーの)従属型システムと特定の(ファミリーの)改良型システムを指定する必要があります。「依存型システム」という用語は、非常に広範な型システムを対象とし、「型洗練システム」はさらに広範です。それでも、用語は相互に排他的ではないため、「依存型システム」と「洗練型システム」の比較にはなりません。ただし、「依存型システム」でCoqのようなものを考えている場合、および「洗練型システム」ではLiquid Typesのようなものを考えている場合それはかなり一方的です。Coqは一般に、実際にはほとんどすべての数学を処理できるほど強力であると考えられています。Coq内でSMTソルバーを文字通り実装し、正しいことを証明してから使用できます。そして、サブセットタイプに非常に近いアナログを定式化できます。(NuPRLには文字通りサブセットタイプがあります。)一方、SMTソルバーは、通常、Coqにそのような制限がない決定可能な理論に制限されています。また、Liquid Typesのような多くのシステムには、述語を指定するための限定された非拡張言語があります。(もちろん、「依存型システム」とはDependent MLを意味し、「型リファインメントシステム」とは、一方が反対のNuPRL [依存型システムでもある]を意味します。)


1
本当にありがとうございました。ええ、実際のプログラミング(popl '99)でDependent Typesを読んでいて、混乱しました。乾杯。
プシュパ

1
これは素晴らしい答えです。書いてくれてありがとう。
ジョナサンスターリング
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.