Vi rapporterar om pågående arbete med automatiska förfaranden för att bevisa egenskaper hos program skrivna i högre ordning funktionella språk. Vår strategi kodar högre-order program direkt som första-order SMT problem över Horn klausuler. Det är rättframt att reducera Hoare-typ verifiering av första ordningen program till tillfredsställande Horn klausuler. Förekomsten av stängningar erbjuder flera utmaningar: relativt kompletta bevissystem måste redogöra för stängningar, och i praktiken är effektiva sökförfaranden beroende av kodningsstrategier och de underliggande lösarnas kapacitet. Vi använder här algebraiska data-typer för att koda stängningar och förlitar oss på lösare som stöder algebraiska datatyper. Tillvägagångssättets bärkraft undersöks med hjälp av exempel från [14]. Automatisk verifiering av program på högre beställningsspråk har fått stor uppmärksamhet under de senaste åren. Vätsketypsystemen har framgångsrikt använts på en stor uppsättning utmaningar från Ocaml [12] och Haskell [15]. Vätsketyper förlitar sig på att kontrollera programegenskaper som typkontroll av förfiningstyper. Alla typer av förfining behöver inte tillhandahållas fullt ut, utan användarna kan tillhandahålla ett utrymme med mallar som typinferensmotorn instantierar och förfinar mallens invarianter (med hjälp av Houdinimetoden [4]). Ett mycket annorlunda tillvägagångssätt används i HALO [16] där Haskells denotationella semantik, med användning av typer som inkluderar feltillstånd, kodas med hjälp av kvantifierade equalities. HALO förlitar sig på kvantifier instantiation motorer och ändliga modell byggnad kapacitet att urladdning korrekthet bevis villkor. - Nej, det gör jag inte. [14] utveckla en anpassad motor som förverkligar bevisregler för Hoare logik för program med procedurparametrar [5]. Det finns flera andra system som använder första-order/SMT-teknik för att etablera egenskaper hos högre-order språk. De är vanligtvis beroende av användaranmälda förfiningsmetoder. Den körbara delmängd av PVS-specifikationens språk använder beslutsförfaranden för att uppfylla typkontrollvillkoren och systemet omfattar kontrolltillståndsgenerering från ett språk med högre ordning med förfiningsmetoder. Dessa system har gemensamt att de förlitar sig på SMT-lösare, CVC4, Yices och Z3. Vi undersöker här om programverifiering (i närvaro av stängningar) kan reduceras direkt till SMT-lösning.
En metod för att verifiera högre ordning program mer direkt med hjälp av första ordningen begränsade Horn klausuler har föreslagits av REF.
Higher-order Program Verification as Satisfiability Modulo Theories with Algebraic Data-types
{'venue': 'ArXiv', 'journal': 'ArXiv', 'mag_field_of_study': ['Mathematics', 'Computer Science']}