Jan 1, 0400

## Schedule

The following program contains seven teaching sessions, each of one being composed?of a 1h30 lecture, then a 1h30 session of exercises on laptops on the same?topic.

As a guiding thread for the lectures, we will formalize the semantics of a toy programming language and prove the equivalence of different semantics.

Note that this tentative program will evolve depending on the interests and the difficulties met by the students.?**While this program is designed to ensure that people with?little or no experience using Coq can get on, we intend to adapt it to the?audience so that even experimented people could deepen their understanding?of the system.**

**August 24th (Sunday)**

15:00~19:00 Hotel check-in (early check-in from 12:00 is negotiable)

19:00~21:00 Welcome Banquet

**August 25th (Monday)**

09:00~

Morning?Lecture 1: *Coq as a functional programming language*, by Yves Bertot

- Introduction to Coq
- Type checking and computations
- Functional programming
- Pattern matching on booleans and natural numbers

13:30~

Afternoon Lecture 2: *Structural recursive programming*, by Assia Mahboubi

- Recursive definitions on natural numbers
- The list data type
- Recursive programming on lists
- Polymorphic types and functions in Coq

**August 26th (Tuesday)**

08:30~

Morning Lecture 3:?*Propositions and Predicates*, by?Assia Mahboubi

- Representation of logical information through Coq’s type system
- Propositional, first-order and higher order logic
- Application to program specifications and mathematical statements

13:30~

Afternoon Lecture 4:?*Interactive Proofs*, by?Sandrine Blazy

- Basic components of interactive theorem proving : statements, goals and tactics
- Introduction and elimination tactics
- Proof by induction
- Rewriting techniques

**August 27th (Wednesday)**

08:30~

Morning Lecture 5:??*Inductive Predicates I*, by Pierre Castéran

- Inductive predicate definitions
- Proofs by induction on such a predicate
- Examples taken from Coq’s standard library

13:00~

excursion, directly followed by the banquet in the evening

**August 28th (Thursday)**

08:30~

Morning Lecture 6:?*Representing Programs in Coq*, by?Yves Bertot

- Representation of the abstract syntax and semantics of a toy imperative

programming language - This example uses all the concepts seen in previous lectures.

13:30~

Afternoon Lecture 7:?*Inductive Predicates II*, by?Pierre Castéran

- Continuation of Lecture 5
- Inversion techniques
- Comparison between induction on data and induction on predicates
- Proof of equivalence of small steps and?big steps semantics for our toy language

**August 29th (Friday):?**Advanced applications and research

08:30~09:30 *A Computer-Algebra Based Formal Proof of the Irrationality of ζ(3)*, by Assia Mahboubi

10:00~11:00 *Building a certified optimizing C compiler*, by Sandrine Blazy

11:00~12:00 *Short presentations by some participants*