Relationella egenskaper relatera flera körningar av ett eller flera program. De kännetecknar många användbara föreställningar om säkerhet, programförfining och likvärdighet för program med olika beräkningseffekter, och har fått stor uppmärksamhet i den senaste litteraturen. I stället för att utforma och utveckla verktyg för speciella klasser av relationsegenskaper, som typiskt föreslås i litteraturen, förespråkar vi relationsverifiering av effektiva program inom allmänna ändamål bevis assistenter. Kärnan i vår strategi är att modellera effektiva beräkningar med monader och bevisa relationsegenskaper på deras monadiska representationer, att göra det mesta av befintliga stöd för resonemang om rena program. Vi tillämpar vår metod i F och utvärderar den genom att koda en mängd olika relationella programanalyser, inklusive statisk informationsflödeskontroll, semantisk avklassning, härkomstspårning, programlikvärdighet i högre ordning, spelbaserad kryptografisk säkerhet, och olika kombinationer av dessa. Genom att förlita sig på SMT-baserad automation, unary svagaste förutsättningar, användardefinierade effekter och monadisk reificering, visar vi att uppgiften att kontrollera relationsegenskaper kräver lite extra ansträngning från F-programmeraren. Referensformat för ACM:
Det finns alternativa tillvägagångssätt för resonemang om relationsegenskaper hos högre ordningsprogram; till exempel, Ref nyligen har föreslagit att använda monadisk reification för att minska relationsverifiering av F * till bevis skyldigheter i högre ordning logik.
A Monadic Framework for Relational Verification (Functional Pearl).
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Computer Science']}