Formation à l'assistant de preuve COQ
Programme provisoire

25-27 février 2002






1   Lundi 25 février

Cette journée est consacrée à une introduction à l'assistant Coq. À la fin de la journée, les participants auront acquis une connaissance des fonctionnalités de l'outil, pourront comprendre un développement réalisé en Coq et développer eux-mêmes un exemple simple. Cette journée est accessible à tous.

9h30 : Introduction générale

Objectifs de la séance
vue d'ensemble de l'outil Coq
Durée
30 mn
Contenu
Présentation générale de Coq : architecture sûre, preuves explicites, domaine d'application. Liens avec PVS, HOL, B.
Formateur
C. Paulin

10h : Le langage de specification

Objectifs de la séance
Apprentissage du langage de spécification (Gallina)
Durée
1h de cours + 1h de TP
Contenu
Formalisme : Lambda-calcul typé, logique d'ordre supérieur, fonctions, définitions inductives.
Gallina : Variable/Definition/Inductive/Cases/Fixpoint
Coq : Require/Check/Eval/Search
Formateur
B. Werner
TP
Exemples simples : axiomatisation au premier ordre, relations, fonctions sur les entiers (nat et Z), définitions inductives de base (fermeture transitive).

14h : le langage de preuves

Objectifs de la séance
Initiation aux tactiques de base
Durée
45mn de cours + 45mn de TP
Contenu
Formalisme : tactiques, termes de preuve
Tactiques de base : Intro/Apply/Elim/Trivial/Simpl
Tactiques automatiques : Tauto/Auto/Omega
Combiner les tactiques : THEN, THENS, Try, Orelse
Formateur
B. Werner
TP
Exemples simples : logique propositionnelle preuve par récurrence, simplification

15h30 : Outils

Objectifs de la séance
améliorer l'efficacité du développement
Durée
30mn (Cours-TP)
Contenu
Version native/byte-code
Makefile, coqdoc
interfaces : Ctcoq / ProofGeneral
Recherche dans les bibliothèques (Search/SearchPattern)
Organisation de la documentation, pointeurs sur des documents associés
Formateur
C. Paulin

16h30 : Développer un exemple simple

Objectifs de la séance
expérimenter une modélisation et une preuve en Coq
Durée
1h (TP)
Contenu
Le damier de Cachan
Formateurs
C. Paulin & B. Werner

2   Mardi 26 février

Cette journée est l'occasion de présenter les particularités du langage de spécification de Coq. L'accent sera mis sur comment représenter une notion de manière fonctionnelle ou inductive. Cette journée est accessible aux personnes ayant déjà une expérience de développement dans Coq ou bien ayant suivi la première journée.

9h30 : Manipulations des définitions inductives

Objectifs de la séance
initier aux outils spécifiques associés aux definitions inductives

Durée
1h cours - 1h30 TD
Contenu
Conditions de positivité, sortes
Schémas d'éliminations (dépendance, élimination forte, Scheme)
Tactiques spécifiques (EqDecide/Inversion/Discriminate)
Récursion structurelle/Récursion générale
Utilisation de Auto/EAuto (ajout de Hint dans la base)
Exemple
Développement sémantique
Formateurs
H. Herbelin
TP
exemple qui puisse amener à une approche reflexive

14h : Aspects avancés du langage de spécification

Objectifs de la séance
initier aux constructions evoluées du langage de spécification de Coq, comprendre comment ajouter des axiomes.
Durée
1h
Contenu
Arguments implicites, coercions, Record
constantes transparentes ou opaques.
Axiomes : Logique classique/ Extensionnalité/ Egalité
Formateur
H. Herbelin

15h00 : Définitions coinductives

Objectifs de la séance
Initiation à la représentation des objets infinis par des définitions co-inductives.
Durée
1h (cours-TD)
Contenu
Présentation des definitions co-inductives (type/ relation) sur des cas simples.
Formateur
C. Paulin

16h30 : Développer un exemple en sémantique

Objectifs de la séance
modéliser et prouver des propriétés d'un langage.
Durée
1h (TP)
Contenu
Formateurs
H. Herbelin & C. Paulin

3   Mercredi 27 février

Cette journée est l'occasion de présenter les outils évolués de Coq indispensables pour mener à bien des développements conséquents. Cette journée est accessible aux personnes ayant déjà une expérience de développement dans Coq ou bien ayant suivi la première journée de la formation.

9h30 : Adapter Coq à ses besoins

Objectifs de la séance
connaître les possibilités d'adaptation de Coq à un domaine particulier, Donner une idée du pouvoir d'automatisation de Coq

Durée
1h cours + 1h30 TD
Contenu
Introduire ses propres notations (Infix, grammaire)
Constructions de tactiques (Paramétrisation de Auto, AutoRewrite)
Construction de tactiques à toplevel (Tactic/Meta Definition)
Écriture de tactiques en ML (exemple d'une tactique utilisant une table)
Formateur
B. Barras
TP

14h : Coq outil de certification de programme

Objectifs de la séance
Donner un aperçu de la possibilité d'utiliser Coq pour certifier des programmes, application au développement de tactiques certifiées par des techniques de réflexion.
Durée
1h cours + 1h de TD
Contenu
Apercu des possibilités de Coq en matière de preuve de programmes
(Extraction/Refine/Correctness).
Le principe de la réflexion (Quote)
Formateur
J.-C. Filliâtre

16h30 : Développer une tactique certifiée

Objectifs de la séance
développer complètement une tactique de manière réflexive.
Durée
1h (TP)
Contenu
Formateurs
B. Barras & J.-C. Filliâtre

This document was translated from LATEX by HEVEA.