{"id":49,"date":"2017-11-20T13:42:26","date_gmt":"2017-11-20T12:42:26","guid":{"rendered":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/?page_id=49"},"modified":"2018-05-04T14:06:32","modified_gmt":"2018-05-04T13:06:32","slug":"program-verification-with-f","status":"publish","type":"page","link":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/?page_id=49","title":{"rendered":"Program Verification with F*"},"content":{"rendered":"<h2>Speaker<\/h2>\n<p><a href=\"https:\/\/prosecco.gforge.inria.fr\/personal\/hritcu\/\">C\u0103t\u0103lin Hri\u0163cu<\/a> is a researcher of the <a href=\"https:\/\/prosecco.gforge.inria.fr\/\">Prosecco<\/a> team at <a href=\"https:\/\/www.inria.fr\/en\/centre\/paris\">Inria Paris<\/a>. He is one of the developers of the <a href=\"https:\/\/www.fstar-lang.org\/\">F*<\/a> programming language, and is leading a research effort in <a href=\"https:\/\/secure-compilation.github.io\/\">secure compilation<\/a> funded by an ERC starting grant. This course is thought together with\u00a0<a href=\"https:\/\/antoine.delignat-lavaud.fr\/\">Antoine Delignat-Lavaud<\/a>, <a href=\"https:\/\/danelahman.github.io\/\">Danel Ahman<\/a>, and <a href=\"https:\/\/github.com\/victor-dumitrescu\">Victor Dumitrescu<\/a>.<\/p>\n<h2>Abstract<\/h2>\n<p>F* 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, such as a verified HTTPS stack.<\/p>\n<p>This course will give an introduction to program verification in F* using simple examples and a few, even simpler exercises along the way. We will start with specifying and verifying purely-functional programs and then move to programs with side-effects such as divergence and mutable state. We will also cover F*&rsquo;s support for\u00a0reasoning about monotonically evolving state and for adding extra monadic side-effects, which is for instance used to implement F*&rsquo;s tactic system in F* itself. Finally, we will look a bit under the hood at how F* encodes verification conditions to the SMT and how it computes them in the first place using monads of predicate transformers, aka Dijkstra monads.<\/p>\n<h2>References<\/h2>\n<ul>\n<li><a href=\"https:\/\/prosecco.gforge.inria.fr\/personal\/hritcu\/teaching\/epit2018\/\">Course materials and setup instructions<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/FStarLang\/FStar\">F* github page<\/a><\/li>\n<li><a href=\"https:\/\/www.fstar-lang.org\/\">F* project page<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Speaker C\u0103t\u0103lin Hri\u0163cu is a researcher of the Prosecco team at Inria Paris. He is one of the developers of the F* programming language, and is leading a research effort in secure compilation funded by an ERC starting grant. This course is thought together with\u00a0Antoine Delignat-Lavaud, Danel Ahman, and Victor &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":20,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-49","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/index.php?rest_route=\/wp\/v2\/pages\/49","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=49"}],"version-history":[{"count":9,"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/index.php?rest_route=\/wp\/v2\/pages\/49\/revisions"}],"predecessor-version":[{"id":238,"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/index.php?rest_route=\/wp\/v2\/pages\/49\/revisions\/238"}],"up":[{"embeddable":true,"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/index.php?rest_route=\/wp\/v2\/pages\/20"}],"wp:attachment":[{"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/epit18\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=49"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}