Vi rapporterar om utformningen och genomförandet av ett extensibelt programmeringsspråk och dess inneboende stöd för formell kontroll. Vårt språk är inriktat på lågnivåprogrammering av infrastruktur som operativsystem och körtidssystem. Den bygger på en plattformsoberoende kärna som kombinerar egenskaper hos monteringsspråk och kompilerande mellanspråk. Från denna grund tar vi bokstavligen uttrycket att C är ett "makro monteringsspråk": vi introducerar en uttrycksfull uppfattning om certifierade makron på låg nivå, tillräckligt för att bygga upp de vanliga egenskaperna hos C och bortom som makron utan särskilt stöd i kärnan. Dessutom har våra makron integrerat stöd för starkaste postcondition beräkning och verifiering villkorsgenerering, så att vi kan ge en hög produktivitet formell verifieringsmiljö inom Coq för program som består av alla kombinationer av makron. Vårt makrogränssnitt är tillräckligt uttrycksfullt för att stödja funktioner som lågnivåprogram vanligtvis endast åtkomst via externa verktyg utan formella garantier, såsom deklarativ tolkning eller SQL-inspirerad förfrågan. Abstraktionsnivån för dessa makron innebär endast en kompilerings-tidskostnad, via utförandet av funktionella Coq-program som beräknar program på vårt mellanspråk; men den löpande kostnaden är inte väsentligt större än för mer konventionell C-kod. Vi beskriver våra erfarenheter att bygga en fullständig C-liknande språk stack med hjälp av makron, med några experiment på verifiability och prestanda av enskilda program som körs på den stacken.
Bedrock REF ] är ett generativt metaprogrammeringsverktyg för verifierad lågnivåprogrammering i Coq.
The bedrock structured programming system: combining generative metaprogramming and hoare logic in an extensible program verifier
{'venue': "ICFP '13", 'journal': None, 'mag_field_of_study': ['Computer Science']}