Coq ma typ Prop dowodu nieistotne propozycje, które są odrzucane podczas ekstrakcji. Jaki jest tego powód, jeśli używamy Coq tylko do dowodów. Rekwizyt jest impredykatywny, więc Prop: Prop, Coq automatycznie wyszukuje indeksy wszechświata i zamiast tego możemy używać Type (i) wszędzie. Wygląda na to, że Prop bardzo wszystko komplikuje.
Czytałem, że istnieją filozoficzne powody oddzielenia Seta i Propa w książce Luo, jednak nie znalazłem ich w książce. Czym oni są?
coq
dependent-type
Konstantin Solomatov
źródło
źródło
Odpowiedzi:
sort
verify
pi
pi
Podczas gdy dodatkowe rzeczy nie są całkowicie bezużyteczne, w wielu aplikacjach chcemy się ich pozbyć i zachować sprawiedliwośćProp k k ℓ ℓ k
sort
. Można to osiągnąć, jeśli użyjemy aby stwierdzić, że „ jest uporządkowane”, a „ jest permutacją ”, ale nie „dla wszystkich istnieje ”. k k ℓ ℓ kOgólnie powszechnym sposobem na wyodrębnienie kodu jest rozważenie wyrażenia w postaci gdzie jest wprowadzane, jest wyjściem, a wyjaśnia, co to znaczy, że jest poprawnym wyjściem. (W powyższym przykładzie i to typy list, a to „ jest uporządkowane, a jest permutacją .”) Jeśli znajduje się w to wyodrębnij daje mapę taką, że dla wszystkichx y ϕ ( x , y ) y A B ϕ ( ℓ , k ) k k ℓ ϕ P r o p f : A → B ϕ ( x , f ( x ) ) x ∈ A ϕ S e t g g ( x ) ϕ ( x ,∀ x : A.. Y: B.ϕ ( x , y) x y ϕ ( x , y) y ZA b ϕ ( ℓ , k ) k k ℓ ϕ P r o p fa: A → B ϕ ( x , f(x)) x∈A . Jeśli znajduje się w wtedy również uzyskać funkcję takie, że jest dowodem na to, że posiada, dla każdego . Często dowód jest bezużyteczny obliczeniowo i wolimy się go pozbyć, zwłaszcza gdy jest głęboko zagnieżdżony w innym wyrażeniu. daje nam taką możliwość.ϕ Set g g(x) x ∈ A P r o pϕ(x,f(x)) x∈A Prop
Dodano 2015-07-29: Istnieje pytanie, czy moglibyśmy całkowicie uniknąć , automatycznie optymalizując „bezużyteczny wyodrębniony kod”. Do pewnego stopnia możemy to zrobić, na przykład cały kod wyodrębniony z negatywnego fragmentu logiki (rzeczy zbudowane z pustego typu, typu jednostki, produktów) jest bezużyteczny, ponieważ tylko tasuje wokół jednostki. Ale przy użyciu należy podjąć autentyczne decyzje projektowe . Oto prosty przykład, w którym oznacza, że jesteśmy w a oznacza, że jesteśmy w . Jeśli wyciągniemy z P r o p Σ T y p e ∃ P r o p Π n : N Σ b : { 0 , 1 } Σ k : NProp Prop Σ Type ∃ Prop n b k Π n : N Σ b : { 0 , 1 } ∃ k : N
źródło
jest niespójny. Zwykle chcesz zachować możliwość dodania wykluczonego środka, więc jednym z rozwiązań jest utrzymanie dużej eliminacji i uczynienie Prop predykatywnym. Drugim jest powstrzymanie dużej eliminacji.
Coq zrobił oba! Zmienili nazwę predykatywnej Prop na Set i wyłączili dużą eliminację w Prop.
Ekspresyjność uzyskana przez impredykatywność jest „uspokajająca” w tym sensie, że 99% „rozsądnej” matematyki można z nią sformalizować i wiadomo, że jest spójna w stosunku do teorii mnogości. To sprawia, że prawdopodobnie nie osłabią go do czegoś takiego jak Agda, która ma tylko predykatywne wszechświaty.
źródło
Prop : Prop
, to byłoby niespójne. Raczej kwantyfikacja wszystkich zdań jest znowu twierdzeniem.Nawet jeśli nie jesteś zainteresowany wydobywaniem programów, fakt, że
Prop
jest impredykatywny, pozwala ci budować modele, których nie możesz zbudować za pomocą predykcyjnej wieży wszechświatów. IIRC Thorsten Altenkirch ma model Systemu F wykorzystujący impredykatywność Coqa.źródło