Mall-Coq 5 är en plugin för Coq, som ursprungligen implementerades av Malecha [18], som ger en refier för Coq termer och globala deklarationer, som representeras i Coq-kärnan, samt en markering kommando. Inledningsvis utvecklades det för att skriva funktioner på Coqs AST i Gallina. Nyligen användes det i CertiCoq-certifierat kompilatorprojekt [4], som sitt front-end-språk, för att härleda parameteregenskaper [3], och för att extrahera Coq termer till en CBV λ-calculus [13]. Syntaxen saknade dock semantik, vare sig det gällde att skriva semantik eller operationell semantik, vilket som formella specifikationer i Coq borde återspegla semantiken i själva Coqs typteori. Verktyget var också ganska bar ben, ger bara rudimentära citat och ociterade kommandon. Vi generaliserar den till att hantera hela analysen av induktiva konstruktioner (CIC), som implementeras av Coq, inklusive kärnans deklarationsstrukturer för definitioner och induktiva, och implementerar en monad för allmän manipulering av Coqs logiska miljö. Vi visar hur denna inställning tillåter Coq användare att definiera många typer av allmänna ändamål plugins, vars korrekthet kan lätt bevisas i själva systemet, och som kan köras effektivt efter extraktion. Vi ger några exempel på implementerade plugins, inklusive en parametricity översättning. Vi förespråkar också användningen av Template-Coq som grund för verktyg på högre nivå. LevelSet.t * RestriktionSet.t.
Mer nyligen, Anand et al. utvecklat en reifer för Coq termer som kan användas för att bygga allmänna ändamål plugins, som kan bevisas korrekt i Coq, och som kan köras effektivt efter extraktion REF.
Towards Certified Meta-Programming with Typed Template-Coq
{'venue': 'ITP', 'journal': None, 'mag_field_of_study': ['Computer Science']}