{"id":421140,"date":"2017-08-10T00:00:48","date_gmt":"2017-08-10T07:00:48","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-research-item&#038;p=421140"},"modified":"2022-01-03T11:49:15","modified_gmt":"2022-01-03T19:49:15","slug":"improving-trust-compilation-f-c","status":"publish","type":"msr-video","link":"https:\/\/www.microsoft.com\/en-us\/research\/video\/improving-trust-compilation-f-c\/","title":{"rendered":"Improving trust in the compilation from F* to C"},"content":{"rendered":"<p>F* is a ML-like programming language aimed at program verification, allowing its users to write programs, specifications, and prove them correct in the same tool. It is a key component of the Everest project, whose goal is building a fully verified HTTPS stack, including cryptographic libraries and a TLS implementation. To achieve good performance, F* programs are compiled to C using the KreMLin tool, which is part of the trusted code base. As part of my internship, I worked on improving the trust in the process of translating F* programs to C. I first experimented on a mechanized proof of the soundness of KreMLin in Lean. Then, shifting perspective, I worked on allowing more low-level C-like programming patterns to be verified on F* side. Building on an existing F* library modeling low-level C-like structures, I implemented higher-level constructs like tagged-unions, attempting to bridge the gap between idiomatic F* code and the compiled C code.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>F* is a ML-like programming language aimed at program verification, allowing its users to write programs, specifications, and prove them correct in the same tool. It is a key component of the Everest project, whose goal is building a fully verified HTTPS stack, including cryptographic libraries and a TLS implementation. To achieve good performance, F* [&hellip;]<\/p>\n","protected":false},"featured_media":421146,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr_hide_image_in_river":0,"footnotes":""},"research-area":[13560],"msr-video-type":[],"msr-locale":[268875],"msr-post-option":[],"msr-session-type":[],"msr-impact-theme":[],"msr-pillar":[],"msr-episode":[],"msr-research-theme":[],"class_list":["post-421140","msr-video","type-msr-video","status-publish","has-post-thumbnail","hentry","msr-research-area-programming-languages-software-engineering","msr-locale-en_us"],"msr_download_urls":"","msr_external_url":"https:\/\/youtu.be\/YJtk7CMEO4s","msr_secondary_video_url":"","msr_video_file":"","_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/421140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-video"}],"version-history":[{"count":1,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/421140\/revisions"}],"predecessor-version":[{"id":421143,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video\/421140\/revisions\/421143"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media\/421146"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=421140"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=421140"},{"taxonomy":"msr-video-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-video-type?post=421140"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=421140"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=421140"},{"taxonomy":"msr-session-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-session-type?post=421140"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=421140"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=421140"},{"taxonomy":"msr-episode","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-episode?post=421140"},{"taxonomy":"msr-research-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-theme?post=421140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}