Abstrakt. I tidigare arbete beskrev vi ett nytt tillvägagångssätt för att stödja användardefinierade typkvalificerare, som utökar befintliga typer för att specificera och kontrollera ytterligare egenskaper av intresse. För varje kvalificerare definierar användarna en uppsättning regler som tillämpas vid statisk typkontroll av program. Separat valideras dessa regler automatiskt med avseende på en användardefinierad predikat som formaliserar kvalificeringens avsedda körtidsinvariant. Vi omedelbart detta tillvägagångssätt som ett ramverk för användardefinierade typ kvalificerare i C-program, kallas CLARITY. I detta dokument utvidgar vi vår tidigare strategi genom att lösa två användbarhetsfrågor. För det första visar vi hur man utför kvalificering inference i närvaro av användardefinierade regler genom att generera och lösa ett system av villkorade fastställda begränsningar, vilket befriar användare från bördan av explicit annotering program. För det andra visar vi hur man automatiskt kan sluta sig till regler som respekterar en viss användardefinierad invariant och därigenom befriar kvalificeringsdesigners från bördan av att manuellt producera sådana regler. Vi har formaliserat både kvalificering och regelslut och bevisat deras korrekthet. Vi har också utökat CLARITY till att stödja kvalificering och regelinferens, och vi illustrerar deras nytta i praktiken genom experiment med flera typer av kvalificerare och open-source C-program.
Senare arbete lägger till monomorfisk typ kvalificering och förfining regel inference REF.
Inference of User-Defined Type Qualifiers and Qualifier Rules
{'venue': 'ESOP', 'journal': None, 'mag_field_of_study': ['Computer Science']}