Vi presenterar ett nytt tillvägagångssätt för att stödja användardefinierade typförfiningar, som utökar befintliga typer för att specificera och kontrollera ytterligare invarianter av intresse för programmerare. Vi tillhandahåller ett uttrycksfullt språk där användare definierar nya finesser och tillhörande typregler. Dessa regler införlivas automatiskt av en extensibel typkontroll vid statisk typkontroll av program. Separat visar en ljudkontroll automatiskt att varje förfining typ regler säkerställer den avsedda invariant, för alla möjliga program. Vi har formaliserat vårt tillvägagångssätt och har inlöst det som ett ramverk för att lägga till nya typ kvalificeringsprogram till C-program. Vi har använt detta ramverk för att definiera och automatiskt bevisa ljud en mängd typer kvalificering av olika slag, inklusive pos och neg för heltal, förorenade och obefläckade för strängar, och nonnull och unik för pekare, och vi har tillämpat våra kvalificerare för att säkerställa viktiga invarianter på open-source C-program.
Semantisk typ Kvalificering REF ger en imponerande ram och språk för att specificera och automatiskt bevisa sundheten av utökade typer genom att förfina typer med hjälp av typkvalificering.
Semantic type qualifiers
{'venue': "PLDI '05", 'journal': None, 'mag_field_of_study': ['Computer Science']}