Vi studerar problemet med att helt automatiskt verifiera otolkade program — program som fungerar över godtyckliga datamodeller som ger en tolkning för konstanter, funktioner och relationer programmet använder. Verifieringsproblemet frågar om ett visst program uppfyller en postvillkor skriven med kvantifier-fria formler med jämlikhet på slutstaten, utan loop invarianter, kontrakt, etc. Försörjning. Vi visar att detta problem är obeslutbart i allmänhet. Det viktigaste bidraget i detta dokument är en underklass av program, kallas sammanhängande program som medger decimedable verifikation, och kan beslutas i Pspace. Vi utvidgar sedan denna klass av program till klasser av program som är k-sammanhängande, där k  på N, erhålls genom (automatiskt) lägga k spökvariabler och uppgifter som gör dem sammanhängande. Vi utökar även decisionability-resultatet till program med rekursiva funktionssamtal och visar flera obeslutbara resultat som visar varför våra begränsningar för att få decisionability verkar nödvändiga. Detta verk är licensierat under en Creative Commons Erkännande 4.0 internationell licens. Umang Mathur, P. Madhusudan, och Mahesh Viswanathan konstanter som 0, 1, fungerar som +, −, och relationer som ≤, där det finns ett implicit antagande om betydelsen av dessa konstanter, funktioner och relationer. Program över otolkade datamodeller fungerar över godtyckliga datamodeller, där tolkningen av funktioner och relationer inte begränsas på något sätt, förutom naturligtvis att jämlikhet är en kongruens med avseende på deras tolkningar (t.ex., om x = y, sedan f (x ) = f (y), oavsett vad tolkningen av f är). Ett program uppfyller sina påståenden över otolkade datamodeller om det uppfyller påståendena när du arbetar över alla data-modeller. Teorin om otolkade funktioner är en teori som endast har kongruensaxiom, och är en viktig teori både ur teoretisk och praktisk synvinkel. Resultat i klassisk logik som Gödels (svaga) fullständighetsteori är formulerade för sådana teorier. Och i verifiering, när induktiva loopinvarianter ges, är verifieringsbetingelser ofta formulerade som formler i SMT-teorier, där teorin om otolkade funktioner är en viktig teori som används för att modellera minne, pekare i högar, matriser och matematiska specifikationer. I synnerhet är kvantifier-fri logik av otolkade funktioner decidable och amenable till Nelson-Oppen kombination med andra teorier, vilket gör det till en primär teori i SMT lösare [Bradley och Manna 2007]. Vi visar, kanske föga förvånande, att det är obeslutsamt att bekräfta otolkade program. Det viktigaste bidraget i detta dokument är att identifiera en klass av program, kallas sammanhängande program, för vilka verifiering är decimerbar. Programutföranden kan ses abstrakt som datorvillkor som är beroende av antaganden över villkor. Uppdrag tillämpar funktioner av den underliggande data-domänen och därmed värdet av en variabel vid någon punkt i en exekvering kan ses som beräkning en term i den underliggande data-modellen. Villkorliga kontroller utförda av programmet kan ses som antaganden som programmet gör om de relationer som håller mellan termer i data-modellen. Till exempel, efter en körning av uttalanden x := y; x := x + 1; antagande(x > 0); z := x * y, programvariabeln z motsvarar termen ( y + 1) * y, och utförandet gör antagandet att y + 1 > 0, där y är värdet av variabel y i början av utförandet. Ett sammanhängande program har bara utföranden där följande två egenskaper håller. Den första är den memoating egenskap som säger att när en term omberäknas av utförandet, då någon variabel i programmet redan har samma term (eller kanske, en annan term som är likvärdig med den, modulera de antaganden som setts hittills i utförandet). Den andra egenskapen, som kallas tidig antar, intuitivt, att när ett antagande om likhet mellan variabler x och y görs av ett program, supertermer av de termer som lagras i variabler x och y beräknas av programmet måste lagras i en av de aktuella variablerna. Vi visar att begreppet koherens effektivt kringgår obeslutbarheten av programverifiering. Både begreppen memoning och tidig-assumes kräver variabler för att lagra vissa beräknade termer i den nuvarande uppsättningen av variabler. Detta begrepp är i själva verket nära relaterat till avgränsad sökväg-bredd av beräkningsdiagram över termer som beräknas av programmet; avgränsad sökväg-bredd och avgränsad träd-bredd är graf-teoretiska egenskaper som utnyttjas av många beslutsförfaranden av grafer för decidability av MSO och för effektiva algoritmer [Courcelle och Engelfriet 2012; Seese 1991], och det har funnits flera senaste arbeten där de har varit användbara för att hitta decidable problem i verifiering [Chatterjee et al. 2016 [Chatterjee et al. , 2015 Madhusudan och Parlato 2011]. Vårt beslutsförfarande är automatiskt teoretiskt. Vi visar att sammanhängande program genererar regelbundna uppsättningar av sammanhängande utföranden, och vi visar hur man konstruerar automata som kontrollerar om en utförande uppfyller ett post-villkor påstående skrivet i kvantifier-fri teori om jämlikhet. Autoton fungerar genom att beräkna kongruens stängning av termer som definieras av jämlikhetsantaganden i utförandet, kontrollera att disequality antaganden är uppfyllda, samtidigt som denna information endast på det avgränsade fönstret av termer som motsvarar den aktuella värderingen av variabler i programmet. I själva verket kan automaton ses som en strömmande kongruens stängning algoritm som beräknar kongruens stängning på rörliga fönster av villkor som beräknas av programmet. De åtgärder som föreskrivs i denna förordning är förenliga med yttrandet från ständiga kommittén för växter, djur, livsmedel och foder.
Dessutom verkar de begränsningar av samstämmigheten som studeras i REF och det arbete som här bygger på avgränsade vägbreddsbegrepp skilja sig mycket från studier av definierbara problem i KAT.
Decidable verification of uninterpreted programs
{'venue': 'PACMPL', 'journal': None, 'mag_field_of_study': ['Computer Science']}