What is Axiom K?のフォローアップとして、--without-k
オプションでAgdaを使用するとどうなるのだろうかと思います。結果はそれほど強力ではありませんか?それは別の言語ですか、それとも以前のプログラムはすべてタイプチェックですか?Kが少ないAgdaはあまり強力ではありませんか?
答えて
Martin-Löf型理論とAxiom Kの状況は、ユークリッド幾何学と平行な仮定といくつかの点で類似しています。平行した仮定によって、より多くの定理が証明できますが、それらはユークリッド空間についてのみです。証明可能な定理は、非ユークリッド空間にも当てはまり、明示的に非ユークリッド公理を加える自由がある。
Axiom Kは、等価プルーフが非自明な情報を持たず、計算の内容がないと言っています。これは、両方の次の文に論理的に等価です:
-- uniqueness of identity proofs
UIP : {A : Set}(x y : A)(p p' : x ≡ y) → p ≡ p'
-- reflexive equality elimination
EqRefl : {A : Set}(x : A)(p : x ≡ x) → p ≡ refl
当然のことながら、これらの両方が--without-K
とunprovableです。我々は、単一のrefl
コンストラクタとAgdaの命題平等を定義したので、
{-# OPTIONS --without-K #-}
open import Relation.Binary.PropositionalEquality
open import Data.Bool
open import Data.Empty
-- this one is provable, we're just making use of it below
coerce : {A B : Set} → A ≡ B → A → B
coerce refl a = a
coerceTrue : (p : Bool ≡ Bool) → coerce p true ≡ true
coerceTrue = ? -- unprovable
data PointedSet : Set₁ where
pointed : (A : Set) → A → PointedSet
BoolNEq : pointed Bool true ≡ pointed Bool false → ⊥
BoolNEq = ? -- unprovable
公理Kは、直感的なようだ:私はここのカップルより具体的なKなしunprovableある文、およびそのunprovability一目で直感的に見えるかもしれませんを与えます。なぜなら、謎の非refl
平等プルーフを気にするのはなぜですか?私たちはKがなければ反証できません。
私たちが公理Kを持っていなければ、Kと矛盾する公理を自由に追加することができ、私たちはタイプの概念を大いに一般化することができます。我々は本質的に私たちにHomotopy Type Theory本がある型理論を与えるユニヴァンテンス公理と高誘導型を仮定することができます。
ユークリッドの類推に戻って:平行四辺形は空間が平らであると仮定しているので、空間の平面度に依存するものを証明できますが、非平面空間については何も言えません。公理Kは、すべての型は簡単な等価証明を持っていると仮定しているため、それに依存する文を証明できますが、より高次の構造を持つ型を持つことはできません。非ユークリッド空間と高次元の型は、どちらも奇妙な要素を持っていますが、最終的には豊富で有用なアイデアです。
「本」ホモトピー型の理論に切り替えると、「些細な平等」は、内部的に話すことができ、その性質を持つ特定のタイプについて証明できるプロパティになります。
私がまだ苦労しているのは、 '_≡_'が単一の' refl'コンストラクタを持つデータ型として定義されている場合です。 'Relation.Binary.PropositionalEquality'では、これらの他の平等はどこから来るのでしょうか?言い換えれば、 'refl'に還元されない' x≡y'の例は何ですか?これはAgdaが提供する 'postulate'バックドアの成果物にすぎませんか? 「仮定」はエスケープハッチだけではなく理論的根拠があるのだろうか? – Cactus
インデックス型の定義は、インデックスを設定するコンストラクタで余分な等価プルーフを持つ非インデックス付きの定義として解釈できます。 Agdaでは、最終的に重要なのは、従属パターンマッチングでインデックスを統一する方法であるため、パターンマッチングに起因する等価性の概念については、「_≡_」をラッパーとして見ることができます。しかし、パターンマッチングは、Axiom KまたはAxiom Jのアプリケーションには最終的には還元できません。したがって、Agdaのコンテキストでも、余分な等式がどこから来ているかを見るために、ベアボーンのrefl/Axiom Jの等価の定義を見てください。 –
なぜAxiom JがHoTTを可能にするのかについては、誰にとってもすぐに直感的な答えが1つあるとは思えません。まず、型の前の概念を忘れて、単に奇妙な目に見えないオブジェクトを指定するという公理を見てみるべきです。私たちは、Jを任意の構造を持つ空間の経路の誘導原理と考えるかもしれません。そして、Jは、ある述語がある経路に当てはまるとすれば、パス。 –
- 1. ガウスのぼかしシェイダーは、Androidではあまり強くありません。
- 2. 私のコードにコンパイルエラーはありませんが、出力はありません
- 3. c [l] [k]はコンストラクタではありません
- 4. getJSON出力はありませんか?
- 5. Haskell:Repaライブラリ...リストはEltsではありませんが、 "k-tuples"については
- 6. 強制コンパイル(ソースファイルがありません)
- 7. あいまいなエラーではありませんか?
- 8. 作者のインストールエラー - 出力はttyではありません。入力はttyではありません。
- 9. メインはありませんがメインはありますか?
- 10. MS SQL Serverより強力なデータベースダイアグラムプログラムがありますか?
- 11. savedInstanceStateはnullではありませんが、データはありません
- 12. Javaで出力がありません
- 13. エラー "GetError:モジュールがありません"(Herokuではローカルではありません)
- 14. テーブルよりも少ないテーブルはありますか?
- 15. K&Rで試したprintfの出力がありません。エクササイズ1-16
- 16. 出力はありません
- 17. ポートフォワーディングは問題ありませんが、内部LANではありません
- 18. なぜオプション(nil)はありませんが、nilだけはありますか?
- 19. なぜプレフィックス/ポストフィックス++がありますが、プレフィックス/ポストフィックス+ =はありませんか?
- 20. AppwidgetのIDはありますが、ウィジェットはありません
- 21. Python prettytableモジュールはありませんが、モジュールはあります
- 22. JDBC ResultSet:最後ではありませんが、次はありません、なぜですか?
- 23. Pythonスクリプト:出力はしませんが、エラーはありませんか?
- 24. map/iteratorはインクリメンタルマップではありません。インクリメンタルではありません。
- 25. 永続的なNSManagedObjectIDはあまり永久的ではありませんか?
- 26. なぜ@NotFunctionalInterfaceはありませんか?
- 27. なぜボトルリターンリストはありませんか?
- 28. なぜPHPはありませんか?
- 29. Stargazerの出力はコードであり、テーブルではありません
- 30. "コマンドラインパラメータの例外が十分ではありません"はありますか?
Kのパターンマッチングの実装(これは公理ではありません)は、--without-Kを選択したときにタイプチェックを行わないプログラムの重要な例です。それは厳密に無効にするスイッチです。しかし、Kを矛盾するが、Jと矛盾しない方程式の原則を追加することができます。 – pigworker