Distribuerade system spelar en avgörande roll i den moderna infrastrukturen, men är allmänt sett svåra att genomföra på ett korrekt sätt. Denna svårighet beror på två huvudutmaningar: a) korrekt genomförande av kärnsystemkomponenter (t.ex. tvåfas-åtagande), så alla deras interna invarianter håller, och b) korrekt komponera fristående systemkomponenter i fungerande tillförlitliga applikationer (t.ex., ihållande lagring byggd på toppen av en tvåfas åtagande instans). Den senaste tidens arbete har utvecklat flera metoder för att ta itu med a) genom att mekaniskt kontrollera genomförandet av centrala distribuerade komponenter, men det finns ingen metod för att hantera b) genom att sammanställa sådana verifierade komponenter i större kontrollerade tillämpningar. Till följd av detta är det inte lätt att återanvända dyra kontrollinsatser för viktiga systemkomponenter, vilket hindrar ytterligare kontrollinsatser. I detta dokument presenterar vi Disel, den första ramen för genomförande och kompositionsverifiering av distribuerade system och deras kunder, allt inom den mekaniserade, grundläggande kontexten av Coq bevis assistent. I Disel implementerar användare distribuerade system med hjälp av ett domänspecifikt språk grunt inbäddat i Coq och ger både hög nivå programmeringskonstruktioner samt låg nivå kommunikation primitiver. Komponenter i sammansatta system specificeras i Disel som protokoll, som fångar systemspecifika logik- och disentangsystemdefinitioner från genomförandedetaljer. På grund av Disels beroende typsystem uppfyller välutformade implementationer alltid sina protokolls invarianter och går aldrig fel, vilket gör det möjligt för användare att verifiera systemimplementeringar interaktivt med hjälp av Disels Hoare-liknande programlogik, som utökar toppmoderna tekniker för konvergensverifiering till den distribuerade inställningen. I enlighet med substitutionsprincipen och ramregeln som tillhandahålls av Disels logik, kan systemkomponenter komponeras som leder till modulära, återanvändbara kontrollerade distribuerade system. Vi beskriver Disel, illustrerar dess användning med en rad exempel, beskriver dess logik och metateori, och rapporterar om vår erfarenhet med hjälp av den som en ram för att implementera, specificera och verifiera distribuerade system.
DISEL REF ] tillhandahåller ett språk för att implementera och verifiera distribuerade systems sammansättning.
Programming and proving with distributed protocols
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}