Path-känslighet är ofta ett viktigt krav för att kontrollera säkerhetsegenskaperna hos program. Eftersom det är omöjligt att räkna upp och analysera varje väg individuellt analyserar man kompromisser genom att på ett sunt sätt samla information om avrättningar längs flera vägar. Detta leder dock ofta till en förlust av precision. Vi presenterar en programanalysteknik som vi kallar Satisfiability Modulo Path Programs (SMPP), baserad på en vägbaserad nedbrytning av ett program. Det är inspirerat av insikter som har drivit utvecklingen av moderna SMT (Satisfiability Modulo Theory) lösare. SMPP räknar symboliskt upp sökvägsprogram med hjälp av en SAT formel över kontrollkanter i programmet. Varje uppräknad sökväg program verifieras med hjälp av ett orakel, såsom abstrakt tolkning eller symbolisk körning, för att antingen hitta ett bevis på korrekthet eller rapportera en potentiell överträdelse. Om ett bevis hittas, då SMPP extraherar en tillräcklig uppsättning kontrollkanter och motsvarande interferenskanter, som en form av bevisbaserad inlärning. Blockering klausuler som härrör från dessa kanter läggs tillbaka till SAT-formeln för att undvika uppräkning av andra sökväg program garanterat att vara korrekt, vilket förbättrar prestanda och skalbarhet. Vi har tillämpat SMPP i F-Soft-programmets verifieringsram för att verifiera egenskaper hos verkliga C-program som kräver sökvägskänsligt resonemang. Våra resultat indikerar att precisionen från att analysera individuella sökvägsprogram, kombinerat med deras effektiva uppräkning av SMPP, kan bevisa egenskaper samt indikera potentiella överträdelser i stort. Kategorier och ämnesdeskriptorer D.2.4( Programvara / P Rogram Verifiering):Assertion kontroller, F.3.1( Specificera och verifiera och R easoni ng om P r ogr ams) : A sser t i ons, F. 3. 2 S emant i cs av programmeringsspråk):Programanalys.
En liknande teknik som lyfter DPLL(T) till program är tillfredsställande Modulo Path Programs (SMPP) REF.
Program analysis via satisfiability modulo path programs
{'venue': "POPL '10", 'journal': None, 'mag_field_of_study': ['Computer Science']}