Den centrala utmaningen i att utforma en effektiv statisk programanalys är att hitta en bra programabstraction - en som behåller endast detaljer som är relevanta för en given fråga. I detta dokument presenterar vi ett nytt tillvägagångssätt för att automatiskt finna en sådan abstraktion. Vår strategi använder en pessimistisk strategi, som kan välja att använda vägledning från en probabilistisk modell. Vårt tillvägagångssätt gäller parametriska statiska analyser implementerade i Datalog, och bygger på motexempelriktad abstractionförfining. För varje oprövad abstraktion ger vår probabilistiska modell en sannolikhet för framgång, medan abstraktionens storlek ger en uppskattning av dess kostnad i form av analystid. Genom att kombinera dessa två mått, sannolikhet och kostnad, väljer vår förfiningsalgoritm en optimal abstraktion. Vår probabilistiska modell är en variant av Erdős-Rényis slumpmässiga grafmodell, och den är lättåtkomlig enligt vad vi kallar hyperparametrar. Vi presenterar en metod för att lära sig bra värden för dessa hyperparametrar, genom att observera tidigare körningar av analysen på en befintlig kodbas. Vi utvärderar vår strategi för en objektkänslig pekaranalys för Javaprogram, med två klientanalyser (PolySite och Downcast).
I REF bestämmer en inlärd hyperparameter en probabilistisk modell, som sedan används för att styra en abstraktion-raffinaderialgoritm.
Abstraction refinement guided by a learnt probabilistic model
{'venue': 'POPL 2016', 'journal': None, 'mag_field_of_study': ['Computer Science']}