Relationell programverifiering är en variant av programverifiering där man kan resonera om två program och som ett specialfall om två utföranden av ett enda program på olika ingångar. Relationell programverifiering kan användas för resonemang om ett brett spektrum av egenskaper, inklusive likvärdighet och förfining, och specialiserade begrepp som kontinuitet, informationsflöde säkerhet eller relativ kostnad. I en högre ordning, relationell programverifiering kan uppnås med relationell förfining typ system, en form av förfining typer där påståenden har en relationell tolkning. Förhållandesförfiningssystem utmärker sig när det gäller strukturellt likvärdiga termer, men ger begränsat stöd för relaterade villkor med mycket olika strukturer. Vi presenterar en logik, kallad Relational Higher Order Logic (RHOL), för att bevisa relationsegenskaper hos en helt enkelt maskinskrivna λ-kalculus med induktiva typer och rekursiva definitioner. RHOL behåller den typriktade smaken av relationsförfiningssystem men uppnår större expressivitet genom regler som samtidigt resonerar om de två termerna samt regler som endast avser en av de två termerna. Vi visar att RHOL har starka grunder, genom att bevisa en likvärdighet med högre ordning logik (HOL), och utnyttja denna likvärdighet för att härleda viktiga meta-teoretiska egenskaper: ämnesminskning, tillåtlighet av en transitivitetsregel och set-teoretisk sundhet. Dessutom definierar vi ljudinbäddningar för flera befintliga relationstyper såsom relationsförfining och typsystem för beroendeanalys och relativ kostnad, och vi verifierar exempel som var utom räckhåll för tidigare arbete. Relationsverifiering är ett exempel på programverifiering som riktar sig mot relationsegenskaper. Förväntat kan standardverifieringsmetoder såsom typsystem, programlogik och programanalyser lyftas till en relationell inställning. Det är dock fortfarande en utmaning att ta fram tillräckligt kraftfulla metoder som kan användas för att verifiera ett brett spektrum av exempel. I själva verket är de flesta befintliga relationsverifieringsmetoder begränsade i de exempel som de naturligt kan verifiera, på grund av den grundläggande spänningen mellan den syntaxstyrda karaktären av programverifiering, och behovet av att relatera strukturellt olika program. Dessutom beror strategier för att lösa denna spänning i hög grad på programmeringsparadigmet, på vilken klass av programegenskaper som beaktas, och på verifieringsmetoden. En metod för att minska denna spänning är att använda sig av självkomposition [Barthe et al. 2004], vilket minskar relationsverifieringen till standardverifikationen. Men resonemang om självkomponerade program kan vara besvärligt. Alternativt, det finns uttrycksfulla relationsprogram logiker som förlitar sig på en invecklad uppsättning regler för att resonera om ett par program. Dessa logiker kombinerar tvåsidiga regler, där de två programmen har samma struktur på toppnivå, och ensidiga regler, som fungerar på ett enda program. Regler för loopar är ytterligare uppdelade i synkrona, där båda programmen utför samma antal iterationer, och asynkrona regler, som inte har denna begränsning men införa mer komplexitet Benton 2004]. Däremot är den avdragsgilla kontrollen av allmänna egenskaper hos (ren) högre orderprogram mindre utvecklad. Ett potentiellt tillvägagångssätt för att lösa spänningen mellan syntax-directedness, och behovet av att relatera strukturellt olika program, är att minska relationsverifiering av ren högre ordning program till bevis i högre ordning logik. Det finns starka likheter mellan detta tillvägagångssätt och självkomposition: det minskar relationsverifieringen till standardverifiering, men detta tillvägagångssätt är mycket svårt att använda i praktiken. Ett bättre alternativ är att använda relationsförfining typer som rF * [Barthe et al. 2014], HOARE 2 [Barthe et al. 2015], DFuzz [Gaboardi et al. Europaparlamentets och rådets förordning (EU, Euratom) nr 966/2012 av den 25 oktober 2012 om finansiella regler för unionens allmänna budget och om upphävande av rådets förordning (EG, Euratom) nr 1605/2002 (EUT L 298, 26.10.2012, s. 1). Kommissionens genomförandeförordning (EU) nr 668/2014 av den 13 juni 2014 om tillämpningsföreskrifter för Europaparlamentets och rådets förordning (EU) nr 1151/2012 om kvalitetsordningar för jordbruksprodukter och livsmedel (EUT L 179, 19.6.2014, s. 1). Informellt, relationsförfining typ system använder påståenden för att fånga samband mellan ingångar och utgångar av två högre ordning program. De är tilltalande av två skäl:
Relationell Högre-order Logik REF är en högre-order relationell logik för resonemang om högre-order funktionella program uttryckt i en enkel-typad λ-kalculus.
A relational logic for higher-order programs
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}