Â
                Eighth Summer School on Formal Techniques,
ÂMay
                    19 - May 25, 2018
                Â Menlo College
                Â Atherton, California
                Â
Âhttp://fm.csl.sri.com/SSFT18
                
                Techniques based on formal logic, such as model
                checking,
                satisfiability, static analysis, and automated theorem
                proving, are
                finding a broad range of applications in modeling,
                analysis,
                verification, and synthesis. This school, the sixth in
                the series, will
                focus on the principles and practice of formal
                techniques, with a
                strong emphasis on the hands-on use and development of
                this
                technology. It primarily targets graduate students and
                young
                researchers who are interested in studying and using
                formal techniques
                in their research. A prior background in formal methods
                is helpful but
                not required. Participants at the school can expect to
                have a seriously
                fun time experimenting with the tools and techniques
                presented in the
                lectures during laboratory sessions.
                
                The lecturers at the school include:
                
                *Â Emina Torlak (University of Washington)
                ÂÂ Solver-Aided Programming
                
                ÂÂ Abstract: Solver-aided tools have automated the
                verification and
                ÂÂ synthesis of practical programs in many domains, from
                ÂÂ high-performance computing to executable biology.
                These tools work
                ÂÂ by reducing verification and synthesis tasks to
                satisfiability
                ÂÂ queries, which involves compiling (bounded) programs
                to logical
                ÂÂ constraints. The first lecture will cover the basics
                of symbolic
                ÂÂ compilation for (bounded) program verification and
                synthesis. The
                ÂÂ second lecture will cover an advanced, and rapid, way
                to construct
                ÂÂ solver-aided tools by embedding them in Rosette, a
                solver-aided
                ÂÂ programming language. Since its release in 2014,
                Rosette has enabled
                ÂÂ a wide range of programmers, from professional
                developers to high
                ÂÂ school students, to quickly create a variety of
                practical
                ÂÂ solver-aided tools, from a verifier for radiation
                therapy software
                ÂÂ to a synthesizer for algebra tutoring rules. The lab
                sessions will
                ÂÂ use Rosette to demonstrate key ideas behind symbolic
                compilation and
                ÂÂ solver-aided programming.
                ÂÂ
Â
                *Â Mooly Sagiv (Tel Aviv University)
                ÂÂ Modularity for Decidability: Implementing and
                Semi-Automatically
                ÂÂÂ Verifying Distributed Systems
                
                ÂÂ Abstract: Proof automation can substantially increase
                productivity
                ÂÂ in the formal verification of complex systems.
                However, the
                ÂÂ unpredictablility of automated provers in handling
                quantified
                ÂÂ formulas presents a major hurdle to usability of
                these tools. Here,
                ÂÂ we propose to solve this problem not by improving the
                provers, but
                ÂÂ by using a modular proof methodology that allows us
                to produce
                ÂÂ decidable verification conditions. Decidability
                greatly improves the
                ÂÂ predictability of proof automation, resulting in a
                more practical
                ÂÂ verification approach. We apply this methodology to
                develop verified
                ÂÂ implementations of distributed protocols with
                competitive
                ÂÂ performance, showing its effectiveness.
                
                ÂÂ This is a joint work with Marcelo Taube (TAU),
                Giuliano Losa(UCLA),
                ÂÂ Ken McMillan (Microsoft Research), Oded Padon and
                Sharon
                 Shoham(TAU). The techniques have been implemented in
                IVY
                ÂÂ
Âhttps://www.microsoft.com/en-us/research/project/ivy/
                
                *Â Nikhil Swamy and Jonathan Protzenko (Microsoft
                Research)
                ÂÂ Programming and Proving in F* and Low*
                
                ÂÂ Abstract: F* is an ML-like programming language aimed
                at program
                ÂÂ verification. At its core is a type system based on
                dependent types,
                ÂÂ refinement types and Hoare-style logics for
                user-defined monadic
                ÂÂ effects. 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, user provided proof terms, as well as
                interactive
                ÂÂ proofs using tactics.
                
                ÂÂ This tutorial provides a general introduction to F*
                followed by a
                ÂÂ focus on Low*, a subset of F* that extracts to C code
                for efficient,
                ÂÂ low-level programming. The examples we present are
                drawn from
                ÂÂ Project Everest, an ongoing effort using F* and Low*
                to verify and
                ÂÂ deploy secure components in the HTTPS ecosystem,
                including protocols
                ÂÂ such TLS and the cryptographic algorithms that
                underlie it.
                
                *Â Andreas Abel (Chalmers/Gothenburg University)
                ÂÂ Introduction to Dependent Types and Agda
                
                ÂÂ Abstract: Dependent types integrate programming with
                rich types,
                ÂÂ specifications, and verification into a single
                language. Dependent
                ÂÂ types allow to express arbitrary logical properties
                of programs, and
                ÂÂ correctness proofs can be woven into the code.
                
                ÂÂ In this tutorial, I will give a brief introduction to
                dependent
                ÂÂ types and the dependently-typed language Agda
                developed at Chalmers.
                ÂÂ We will understand the theoretical concepts as we
                walk through some
                 representative use cases. In the first part, we will
                learn how to
                ÂÂ elegantly represent binary search trees and their
                ordering invariant
                 in Agda. In the second part, we will look at
                examples from
                ÂÂ programming language, like representation of
                expressions,
                 evaluation, and equational reasoning. The tutorial
                is accompanied
                ÂÂ by Agda programming and reasoning exercises.
                
                *Â Dirk Beyer (Ludwig Maximilian University, Munich,
                Germany)
                ÂÂ Software Model Checking
                
                The main lectures in the summer school will be preceded
                by a background
                course on logic on
                
                * Natarajan Shankar (SRI CSL) and Stephane
                Graham-Lengrand (Ecole
                Â Polytechnique) Speaking Logic
                
                Â Abstract: Formal logic has become the lingua franca of
                computing. It
                Â is used for specifying digital systems, annotating
                programs with
                Â assertions, defining the semantics of programming
                languages, and
                Â proving or refuting claims about software or hardware
                Â systems. Familiarity with the language and methods of
                logic is a
                Â foundation for research into formal aspects of
                computing. This course
                Â covers the basics of logic focusing on the use of
                logic as a medium
                Â for formalization and proof.
                
                We will also have invited talks by
                * Nina Narodytska (VMWare Research)
                Â Verifying Properties of Binarized Deep Neural Networks
                * Gordon Plotkin (U. Edinburgh, UK)
                Â Some Principles of Differentiable Programming
                Languages Research Papers
                * Edward A. Lee (UC Berkeley)
                Â Plato and the Nerd - The Creative Partnership of
                Humans and Technology
                
                
                Information about previous Summer Schools on Formal
                Techniques can be found at
                
http://fm.csl.sri.com/SSFT11
                http://fm.csl.sri.com/SSFT12
                http://fm.csl.sri.com/SSFT13
                http://fm.csl.sri.com/SSFT14
                http://fm.csl.sri.com/SSFT15
                http://fm.csl.sri.com/SSFT16
                http://fm.csl.sri.com/SSFT17
                
                We expect to provide support for the travel and
                accommodation for (a
                limited number of) students registered at US
                universities. We welcome
                applications from non-US students as well as
                non-students (if space
                permits). Non-US students will have to cover their own
                travel and will
                be charged around US$800 for meals and lodging.Â
                Applications should be
                submitted at the website
Âhttp://fm.csl.sri.com/SSFT18
                
                Applicants are urged to submit their applications before
ÂApril
                    30,
                2018, since there are only a limited number of spaces
                available.
                Non-US applicants requiring US visas are requested to
                apply early. We
                strongly encourage the participation of women and
                under-represented
                minorities in the summer school.