Vi presenterar en metod för att verifiera egenskaper av tvingande program genom att använda tekniker baserade på specialisering av begränsningar logik program (CLP). Vi anser att en klass av tvingande program med heltalsvariabler och vi fokuserar vår uppmärksamhet på säkerhetsegenskaper, som anger att ingen felkonfiguration kan nås från någon inledande konfiguration. Vi introducerar ett CLP-program I som kodar språktolken och definierar en predikat osäker motsvarighet till förnekandet av den säkerhetsfastighet som ska verifieras. Sedan specialiserar vi CLP-programmet I med avseende på den givna imperativ program och den givna inledande och felkonfigurationer, med målet att härleda en ny CLP-program I sp som antingen innehåller det faktum osäkra (och i detta fall är imperativt program visat sig osäker) eller innehåller inga klausuler med huvud osäkra (och i detta fall är imperativt program visat sig säkert). Om jag sp har ingen av dessa egenskaper, vi itererar specialiseringsprocessen med målet att härleda ett CLP-program där vi kan bevisa osäkerhet eller säkerhet. Under de olika specialiseringarna kan vi tillämpa olika strategier för att sprida information (antingen propagera framåt från en initial konfiguration till en felkonfiguration, eller propagera bakåt från en felkonfiguration till en initial konfiguration) och olika operatörer (såsom breddning och konvexa skrov operatörer) för att generalisera predikat definitioner. Varje specialisering steg är garanterad att avsluta, men på grund av obeslutbarheten av programsäkerhet, den itererade specialiseringsprocessen får inte avslutas. Genom en experimentell utvärdering utförd på en betydande uppsättning exempel tagna från litteraturen visar vi att vår metod förbättrar precisionen i programverifieringen med avseende på toppmoderna programvarumodeller.
I synnerhet i REF visas att iteration av programspecialisering i kombination med lämplig begränsningsutbredning avsevärt kan förbättra precisionen i vår programverifieringsmetod.
Program Verification via Iterated Specialization
{'venue': 'Sci. Comput. Program.', 'journal': 'Sci. Comput. Program.', 'mag_field_of_study': ['Computer Science']}