Coq är byggt kring en väl avgränsad kärna som perfoms typkontroll för definitioner i en variant av analys av induktiva konstruktioner (CIC). Även om CIC:s metateori är mycket stabil och tillförlitlig är riktigheten i dess genomförande i Coq mindre tydlig. Att genomföra en effektiv typkontroll för CIC är en ganska komplicerad uppgift, och många delar av koden är beroende av implicita varianter som lätt kan brytas av ytterligare utveckling av koden. Därför har i genomsnitt ett kritiskt fel hittats varje år i Coq. I detta dokument presenteras det första genomförandet av en typkontroll för kärnan av Coq (utan modulsystemet och mallpolymorfism), som är bevisat korrekt i Coq med avseende på dess formella specifikation och axiomatisering av en del av dess metateori. Observera att på grund av Gödels ofullständiga teorem finns det inget hopp om att helt kunna bevisa riktigheten i specifikationen av Coq inne i Coq (särskilt stark normalisering eller kanonicitet), men det är möjligt att bevisa att genomförandet är korrekt om man antar att specifikationen är korrekt, och därmed gå från en betrodd kodbas (TCB) till en betrodd teoribas (TTB) paradigm. Vårt arbete är baserat på MetaCoq-projektet som tillhandahåller metaprogrammeringsanläggningar för att arbeta med termer och deklarationer på nivån för denna kärna. Vår typkontroll baseras på specifikationen av typningsförhållandet för den polymorfiska, kumulativa analysen av induktiva konstruktioner (PCUIC) på grundval av Coq och kontrollen av en relativt effektiv och ljudtypkontroll för den. Förutom kärnan implementationen är ett viktigt inslag i Coq den så kallade extraktionen: produktion av körbar kod i funktionella språk från Coq definitioner. Vi presenterar en verifierad version av denna subtila typ-och-säker radering steg, vilket möjliggör verifierad extraktion av en säker typ-kontroll för Coq.
Sozeau m.fl. utveckla en korrekt kontrollör för Coq-kärnan inom Coq REF, och som i Coqs logik en verifieringsuppgift är en typkontroll, visar de att genomförandet av en typkontroll är korrekt.
Coq Coq correct! verification of type checking and erasure for Coq, in Coq
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}