Introduction

F* (pronounced F star)
is a general-purpose functional programming language with effects
aimed at program verification. It puts together the automation of an
SMT-backed deductive verification tool with the expressive power of
a proof assistant based on dependent types. After verification, F*
programs can be extracted to efficient OCaml, F#,
or C code. This
enables verifying the functional correctness and security of
realistic applications.
The main ongoing use case of F* is building a
verified, drop-in replacement for the whole HTTPS stack in
Project Everest.
This includes verified implementations of
TLS 1.2 and 1.3 and of
the underlying cryptographic primitives.

F*'s type system includes dependent types,
monadic effects, refinement types, and a weakest precondition calculus.
Together, these features allow expressing precise and compact
specifications for programs, including functional correctness and security
properties. The F* type-checker aims to prove that programs meet
their specifications using a combination of SMT solving and interactive proofs.

F* is written entirely in F*,
and bootstraps in OCaml and F#. It is open source and under active
development on GitHub. A
detailed description of the current F* variant is available in
a series of POPL papers
(2016,
2017, and
2018).
You can learn more about F* by following the online
tutorial
and reading our papers.
Materials from recent talks are also
available below.
And to keep up to date with the latest news on F* you can read
our blog.

This is the easiest way to get F* quickly running on your machine, but
if the binary package you use is old you might be missing out on new
features and bug fixes. We also provide experimentalautomatic weekly builds and of course you can also
build F* from source yourself.

F* Tutorial

Click the image below to start the F* tutorial.

Low* tutorial

We also have a Low*
tutorial that covers Low*, a low-level subset of F*. The tutorial also
explains how to use the dedicated compiler
KReMLin to compile Low* to C.

Support

F* is a state-of-the-art research project under active development; as such, it contains
a number of known bugs.
If you encounter a problem with F*, we encourage you to report it to the GitHub issue tracker. Please understand that we may not have the necessary manpower to address new feature requests - as an open source project, we welcome your contributions to help improve F*.

The fstar-club mailing list
is dedicated to F* users. Here is where all F* announcements are made to the
general public (e.g. for releases, new papers, etc) and where users can ask
questions, ask for help, discuss, provide feedback, announce jobs requiring
at least 10 years of F* experience, etc.
List archives are public, but only members can post.
Join here!