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 fifth 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 developing and using formal techniques in their research. A prior background in formal methods is helpful but not required. Participants at the school will have a seriously fun time experimenting with the tools and techniques presented in the lectures during laboratory sessions.

Lecturers

Natarajan Shankar (SRI CSL) :

Speaking Logic

( PVS, PVS Course, 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.

: ( : 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. Arie Gurfinkel (SEI CMU, USA) :

Building Program Verifiers from Compilers and Theorem Provers

( Materials

Abstract : Developing an automated program verifier is an extremely difficult task. By its very nature, a verifier shares many of the complexities of an optimizing compiler and of an efficient automated theorem prover. From the compiler perspective, the issues include idiomatic syntax, parsing, intermediate representation, static analysis, and equivalence preserving program transformations. From the theorem proving perspective, the issues include verification logic, verification condition generation, synthesizes of sufficient inductive invariants, deciding satisfiability, interpolation, and consequence generation. Luckily, the cores of both compilers and theorem provers are well understood, well-defined, and readily available. In these lectures, we examine how to build a state-of-the-art program verifier by re-using much of existing compilers and SMT-solvers. The lectures are based on the SeaHorn verification framework developed at CMU.

: ( : Developing an automated program verifier is an extremely difficult task. By its very nature, a verifier shares many of the complexities of an optimizing compiler and of an efficient automated theorem prover. From the compiler perspective, the issues include idiomatic syntax, parsing, intermediate representation, static analysis, and equivalence preserving program transformations. From the theorem proving perspective, the issues include verification logic, verification condition generation, synthesizes of sufficient inductive invariants, deciding satisfiability, interpolation, and consequence generation. Luckily, the cores of both compilers and theorem provers are well understood, well-defined, and readily available. In these lectures, we examine how to build a state-of-the-art program verifier by re-using much of existing compilers and SMT-solvers. The lectures are based on the SeaHorn verification framework developed at CMU. Cathy Meadows (NRL, USA) :

Cryptographic Protocol Analysis Modulo Equational Theories: the Maude-NRL Protocol Analyzer

( Slides 1, Slides 2

Abstract : In this course we give an overview of the Maude-NPA Protocol Analyzer. Maude-NPA is a tool for the symbolic analysis for cryptographic protocols. It searches for ways in which an active attacker could subvert the protocols' goals, such as authentication or secrecy. Maude-NPA is designed to take account of the algebraic properties of the crypto systems involved, in order to give a more complete representation of both the protocol and the attacker's capabilities. We give a presentation of the theory and principles under which Maude-NPA operates, and also give the students the opportunity to gain hands-on experience with the tool.

: ( : In this course we give an overview of the Maude-NPA Protocol Analyzer. Maude-NPA is a tool for the symbolic analysis for cryptographic protocols. It searches for ways in which an active attacker could subvert the protocols' goals, such as authentication or secrecy. Maude-NPA is designed to take account of the algebraic properties of the crypto systems involved, in order to give a more complete representation of both the protocol and the attacker's capabilities. We give a presentation of the theory and principles under which Maude-NPA operates, and also give the students the opportunity to gain hands-on experience with the tool. Bart Jacobs (KU Leuven, Belgium) :

VeriFast: Modular verification of sequential and concurrent C and Java programs using separation logic ( Reading materials

Abstract : VeriFast is a tool that takes as input a C or Java program module annotated with preconditions, postconditions, loop invariants, data structure descriptions and proof hints written in a variant of separation logic, and, without further user interaction and usually in a matter of seconds, returns either "0 errors found", or a failed symbolic execution path. If the tool reports "0 errors found" for all modules of a program, this means no execution of the program accesses unallocated memory, performs a data race, or violates any of the user-specified assertions. The tool operates by symbolically executing each function/method, using a separation logic formula to represent the state of memory, and using an SMT solver to decide proof obligations about data values. In these lectures, you will learn how to use VeriFast to modularly verify sequential and concurrent C and Java programs, and you will also learn how VeriFast operates internally, and why, if it reports "0 errors found", the program does indeed satisfy the specified properties.

: ( : VeriFast is a tool that takes as input a C or Java program module annotated with preconditions, postconditions, loop invariants, data structure descriptions and proof hints written in a variant of separation logic, and, without further user interaction and usually in a matter of seconds, returns either "0 errors found", or a failed symbolic execution path. If the tool reports "0 errors found" for all modules of a program, this means no execution of the program accesses unallocated memory, performs a data race, or violates any of the user-specified assertions. The tool operates by symbolically executing each function/method, using a separation logic formula to represent the state of memory, and using an SMT solver to decide proof obligations about data values. Kim Guldstrand Larsen (Aalborg University, Denmark) :

From Timed Automata to Stochastic Hybrid Games -- Model Checking, Performance Evaluation and Synthesis

( Lecture material

Abstract : Timed automata and games, priced timed automata and energy automata have emerged as useful formalisms for modeling real-time and energy-aware systems as found in several embedded and cyber-physical systems. During the last 20 years the real-time model checker UPPAAL has been developed allowing for efficient verification of hard timing constraints of timed automata. Moreover a number of significant branches exists, e.g. UPPAAL CORA providing efficient support for optimization, and UPPAAL TIGA allowing for automatic synthesis of strategies for given safety and liveness objectives. Most recently, the branch UPPAAL SMC, a highly scalable new engine has been released supporting (distributed) statistical model checking (and synthesis) of stochastic hybrid automata (and games). The lecture will review the various branches of UPPAAL and their concerted applications to a range of real-time and cyber-physical examples including schedulability and performance evaluation of mixed criticality systems, modeling and analysis of biological systems, energy-aware wireless sensor networks, smart grids and energy aware buildings and battery scheduling. Also, we shall see how other branches of UPPAAL may benefit from the new scalable engine of UPPAAL SMC in order to improve their performance as well as scope in terms of the models that they are supporting. This includes application of UPPAAL SMC to counter example generation, refinement checking, controller synthesis, and optimization. The lab sessions will be based on exercises requiring hands-on experience with UPPAAL, UPPAAL TIGA and UPPAAL SMC (all down-loadable from www.uppaal.org).

: ( : Timed automata and games, priced timed automata and energy automata have emerged as useful formalisms for modeling real-time and energy-aware systems as found in several embedded and cyber-physical systems. During the last 20 years the real-time model checker UPPAAL has been developed allowing for efficient verification of hard timing constraints of timed automata. Moreover a number of significant branches exists, e.g. UPPAAL CORA providing efficient support for optimization, and UPPAAL TIGA allowing for automatic synthesis of strategies for given safety and liveness objectives. Most recently, the branch UPPAAL SMC, a highly scalable new engine has been released supporting (distributed) statistical model checking (and synthesis) of stochastic hybrid automata (and games). John Harrison, Intel (Portland, USA) :

HOL Light --- from foundations to applications

( HOL Light

Abstract: The HOL Light theorem prover is a real-world theorem proving program with an unusually simple logical kernel. It has been used both for applications in formal verification, especially of floating-point algorithms, and pure mathematics including the Flyspeck project's formal proof of the Kepler conjecture. We will describe how the system is built up from its low-level foundations and how it can be applied in various areas. In the lab exercises we will try to show not only how to perform basic formal proofs, but how conceptually simple it is to add new "correct by construction" derived rules of inference.

Invited Speakers

Temesghen Kahsai :

Trusting outsourced components in flight critical software ( Slides

Abstract : A common practice in the development of complex component-based flight critical software systems is to outsource the implementation of some of the components to external contractors or assemble them from commercial off-the-shelf (COTS) systems. Those components are delivered as black-box systems, although they may have been first prototyped in-house by the system integrator. In this talk, I will illustrate a work in progress approach to formally analyze flight critical software that has been assembled from COTS or outsourced for implementation. Such approach is based on contract-based compositional verification, which consists of two stages: a pre- and a post-delivery verification stages. In the first stage, verification focuses on generating contracts, a widely used method for organizing the integration of component-based systems, for the outsourced component. Contracts specify the precise information needed to reason about a component's interaction with other parts of the system as well as system-level properties. In the second stage, outsourced components or COTS must be checked for conformance to the pre-specified formal contract.

: : A common practice in the development of complex component-based flight critical software systems is to outsource the implementation of some of the components to external contractors or assemble them from commercial off-the-shelf (COTS) systems. Those components are delivered as black-box systems, although they may have been first prototyped in-house by the system integrator. In this talk, I will illustrate a work in progress approach to formally analyze flight critical software that has been assembled from COTS or outsourced for implementation. Such approach is based on contract-based compositional verification, which consists of two stages: a pre- and a post-delivery verification stages. In the first stage, verification focuses on generating contracts, a widely used method for organizing the integration of component-based systems, for the outsourced component. Contracts specify the precise information needed to reason about a component's interaction with other parts of the system as well as system-level properties. In the second stage, outsourced components or COTS must be checked for conformance to the pre-specified formal contract. Dana Scott :

λ-Calculus Then and Now

( Scott Bio, λ-Calculus: Then and Now, Timeline, λ-Calculus: Enumeration Operators and Types,

λ-Calculus: Enumeration Operators and Types, Bibliography

A Stochastic λ-Calculus

( Extended Abstract, Stochastic λ-Calculus, Stochastic λ-Calculus

Abstract :

: ( ( : Mariana Raykova :

Secure Two-Party Computation in Sublinear (Amortized) Time

Abstract: Traditional approaches to generic secure computation begin by representing the function f being computed as a circuit. If f depends on each of its input bits, this implies a protocol with complexity at least linear in the input size. In fact, linear running time is inherent for non-trivial functions since each party must “touch” every bit of their input lest information about the other party’s input be leaked. This seems to rule out many applications of secure computation (e.g., database search) in scenarios where inputs are huge.

Adapting and extending an idea of Ostrovsky and Shoup, we present an approach to secure two-party computation that yields protocols running in sublinear time, in an amortized sense, for functions that can be computed in sublinear time on a random-access machine (RAM). Moreover, each party is required to maintain state that is only (essentially) linear in its own input size. Our protocol applies generic secure two-party computation on top of oblivious RAM (ORAM). We present an optimized version of our protocol using Yao’s garbled-circuit approach and a recent ORAM construction of Shi et al.

We describe an implementation of this protocol, and evaluate its performance for the task of obliviously searching a database with over 1 million entries. Because of the cost of our basic steps, our solution is slower than Yao on small inputs. However, our implementation outperforms Yao already on DB sizes of 218 entries (a quite small DB by today’s standards).

Schedule Information about previous Summer Schools on Formal Techniques can be found at SSFT14

SSFT13

SSFT12

SSFT11

We expect to provide support for the travel and accommodation for a limited number of students from US universities, but welcome applications from non-US students as well as non-students. Non-US students will have to cover their own travel and will be charged around $550 for meals and lodging. Applications should be submitted using the form below.

Applicants are encouraged to submit their applications before April 30, 2015, since there are only a limited number of spaces available. Non-US applicants requiring US visas are requested to apply early.

Registration is now closed

Questions on any aspect of the school can be posted here.