Vi presenterar en ny, helt omdesignad version av F, ett språk som fungerar både som en korrektur assistent samt ett allmänt syfte, verifieringsorienterad, effektivt programmeringsspråk. Till stöd för dessa kompletterande roller, F  på ett beroendeframkallande, högre ordning, call-by- value språk med primitiva effekter inklusive stat, undantag, divergens och IO. Även om programmerare är primitiva väljer de den granularitet vid vilken de kan specificera effekter genom att utrusta varje effekt med monadiska, predikerade transformatorsemantik. F  till använder detta för att effektivt beräkna svagaste förutsättningar och befriar resulterande bevis skyldigheter med hjälp av en kombination av SMT lösning och manuella bevis. Isolerad från effekterna, kärnan i F  och är ett språk av rena funktioner som används för att skriva specifikationer och bevis termer-dess konsistens upprätthålls av en semantisk terminering kontroll baserad på en välgrundad order. Vi utvärderar vår design på mer än 55.000 linjer av F - vi har skrivit under det senaste året, med fokus på tre huvudsakliga fallstudier. Visar sin användning som ett allmänt programmeringsspråk, F är programmerad (men inte verifierad) i F, och bootstraps i både OCaml och F#. Vår erfarenhet bekräftar F: s pay-as-you-go kostnadsmodell: skriva idiomatic ML-liknande kod utan finare specifikationer innebär ingen användarbörda. Som ett verifikationsinriktat språk är vår viktigaste utvärdering av F  på att verifiera flera viktiga moduler i ett genomförande av TLS-1.2-protokollstandarden. För de moduler vi övervägde, kan vi bevisa fler egenskaper, med färre annoteringar med hjälp av F  på än i en tidigare verifierad implementering av TLS-1.2. Slutligen, som en bevis assistent, diskuterar vi vår användning av F  på mekanisering av metateorin av en rad lambda calculi, med början från den helt enkelt maskinskrivna lambda kalkyl till System F och till och med μF  på, ett betydande fragment av F  och dessa bevis gör väsentlig användning av F  på flexibel kombination av SMT automation och konstruktiva bevis, möjliggör en taktikfri stil av programmering och visar i en relativt stor skala.
Swamy m.fl.s F-programmeringsspråk. I REF används ett begrepp om primitiva effekter, inklusive tillstånd, undantag, divergens och IO.
Dependent types and multi-monadic effects in F*
{'venue': 'POPL 2016', 'journal': None, 'mag_field_of_study': ['Computer Science']}