Vi presenterar en ny metod för att bevisa typ ljudstyrka för Hindley/Milner-stil polymorphic type systems. Nyckeln till vårt tillvägagångssätt är 1) en anpassning av ämnesminskningsteorem från kombinatorisk logik till programmeringsspråk, och 2) användning av omskrivningstekniker för specificering av språksemantik. Tillvägagångssättet sträcker sig lätt från polymorfa funktionella språk till tvingande språk som ger referenser, undantag, fortsättningar och liknande funktioner. Vi illustrerar tekniken med en typ ljudstyrka teorem för kärnan i Standard ML, som innehåller den första typen ljudstyrka bevis för polymorfa undantag och fortsättningar. Statiska typsystem för programmeringsspråk försöker förhindra uppkomsten av typfel under utförandet. En definition av typfel beror på ett specifikt språk och typsystem, men inkluderar alltid användningen av en funktion på argument för vilka den inte är definierad, och försök till tillämpning av en funktionsstörning. Ett statiskt typsystem är ljud om välskrivna program inte kan orsaka typfel; ett programmeringsspråk med ett ljud statiskt typsystem är starkt typ 7]. Även om det är lätt att utforma ett ljud typsystem för ett uttryckligen maskinskrivna monomorfa språk, formuleringen av ett ljud typ system för ett språk baserat på Hindley/Milnerstyle polymorphism och typ inference är delikat 6, 8, 15, 17, 20, 37]. Även om behandlingen av rent funktionella språk är relativt välbegriplig i detta sammanhang, kräver införlivandet av tvingande egenskaper som referenser och undantag extrem försiktighet, och det är inte uppenbart att sådana system är sunda. Ett formellt bevis på sundhet är Denna forskning stöddes delvis av United States Department of Defense under en National Defense Science and Engineering Graduate Fellowship, av NSF bidrag CCR 89 {17022), och av Texas Grant ARP/ATP-91 #003604-014. Syntaktisk typ Ljudstyrka 2 som krävs för att ge trovärdighet åt påståendet att ett sådant system förhindrar typfel, och kan vara ett viktigt verktyg i konstruktionen av typsystemet. Vi ser ett statiskt typsystem för ett implicit maskinskrivet språk som en bokstav som väljer välskrivna program från ett större universum av otypade program. En partiell funktion evaluering : Program * Svar fwrongg de nes semantics av otypade program. Resultatet fel returneras för program vars utvärdering orsakar en typ fel; eval är unde ned för program vars utvärdering inte avslutas. Låt oss göra det. e : innebär att typsystemet tilldelar program e typ, dvs e är väl-typad. Den enklaste egenskapen säger att välskrivna program inte ger fel 20]. De nition ( Svag ljudnivå) om. e : sedan evaluera(e) 6 = fel. Medan svag ljudstyrka slår fast att ett statiskt typsystem uppnår sitt primära mål att förhindra typfel, är det ofta möjligt att visa en starkare egenskap som relaterar svaret som produceras till typen av programmet. Om vi ser varje typ som betecknande olika undergrupper V av uppsättningen av alla svar V, sedan stark ljudstyrka säger att ett svar v produceras av ett avslutande program av typ är ett inslag i undergruppen V. Denition (Strong Soundness) Om. e : och evaluering(e) = v sedan v 2 V. Stark ljudstyrka tillåter en implementation av språket för att associera representationen av ett värde med dess typ, och därmed utelämna representationstaggar som krävs av dynamiskt skrivna språk. Svag ljudstyrka följer av stark ljudstyrka eftersom fel inte är en medlem av V för någon typ. Signi cant e ort har investerats i att bevisa typ ljudstyrka för Hindley/Milner-stil typsystem, och deras praktiska genomförande i programmeringsspråket Standard ML 22, 23]. Sundhetsbevis finns för det funktionella fragmentet 20, 36], för förlängningar inklusive hänvisningar 6, 17, 35, 37] och för ett monomorft språk inklusive rst-klass fortsättningar 8]. Det finns dock flera nackdelar med de befintliga bevisen. Bevis på typ ljudstyrka är känsliga för den exakta formuleringen av semantiken av språket med olika tekniker krävs för denominering kontra operativa formuleringar av semantik, och även för olika språk inom samma semantiska ram. Bevisen för två olika språk är kult att förena för att bevisa sundhet för ett språk inklusive drag av båda. De befintliga teknikerna är komplicerade, och de resulterande bevisen är långa och felbenägna. För en illustration av kulterna med sådana bevis hänvisar vi läsaren till Toftes 37] diskussion om Damas 6] felaktiga bevis på en typ ljudstyrka teorem för ett polymorf språk med referenser. Vi presenterar ett enkelt tillvägagångssätt till bevis på sundhet för Hindley/Milner-stil polymorphic type systems. Vårt tillvägagångssätt är baserat på ämnesreduktion, ett klassiskt resultat av kombinatorisk logik 4] och på omskrivning som ett sätt att specificera operativa semantik 11, 12, 13, 14]. För att visa tillvägagångssättet utvecklar vi ett bevis på sundhet för kärnan 1 i Standard ML, som utökar ett funktionellt polymorf språk med referenser och undantag. Vi visar också sundhet för en förlängning till Standard ML med rst-klass fortsättningar. I princip är vårt tillvägagångssätt enhetligt tillämpligt på alla språk; 1 Mitchell och Harper hänvisar till det funktionella polymorfa underspråket som kärnan i ML 24]. Men de olika formerna av att skriva referenser och undantag 6, 17, 35, 37] och det faktum att de inte kan uttryckas genom hjälpmedel i den funktionella kärnan 10] tyder på att de är lika viktiga. Syntaktisk typ Ljudstyrka 3 i praktiken, de resulterande bevisen är långa men enkla, kräver endast vanliga induktiva tekniker. I nästa avsnitt beskriver vi ett prototypiskt funktionellt språk med ett polymorft typsystem, och diskuterar de olika tillvägagångssätt som tidigare har använts för att bevisa typ ljud. Avsnitt 3 presenterar kärnan i vårt tillvägagångssätt för att bevisa typ ljud; de återstående avsnitten utvecklar illustrativa bevis för typ ljudstyrka för ett specifikt c funktionellt språk och olika utökningar.
Detta papper ger en sådan ljudstyrka bevis med hjälp av teknik Wright och Felleisen REF.
A Syntactic Approach to Type Soundness
{'venue': 'Information and Computation', 'journal': None, 'mag_field_of_study': ['Computer Science', 'Mathematics']}