Descriptif
La logique est la formalisation du raisonnement humain. À ce titre, elle
est au carrefour de diverses activités, qu'elles soient scientifiques ou non.
En mathématiques, il est courant de démontrer des théorèmes, mais
comment se convaincre que la preuve que l'on énonce est correcte, ne souffre
pas de raccourcis un peu rapides ?
En informatique, il est courant d'écrire des programmes, mais comment
se convaincre que l'algorithme puis le code que l'on a produits sont
corrects ?
Dans la vie de tous les jours, il est courant d'argumenter des points de
vue ou d'écouter ceux d'autrui, mais comment se convaincre que ces
arguments ne sont pas fallacieux, comment être certain que l'on
enchaîne nos arguments de manière irréprochable pour convaincre nos
auditeurs ?
Savoir ce qu'est une preuve dans un formalisme logique revient donc à
comprendre quelles sont les déductions valides dans ce formalisme. Savoir ce
qu'est une preuve est un atout d'auto-défense intellectuelle aidant à
se prémunir contre l'approximatif et la tromperie, ce qui est à mon avis
important pour tout scientifique (si ce n'est pour tout citoyen).
Ce cours a plusieurs objectifs:
- aborder la logique en tant que science, comme objet d'étude et
démontrer des propriétés sur certains formalismes logiques - aborder la logique en tant qu'outil, pour formaliser des problèmes et
démontrer des propriétés - aborder la logique en tant qu'outil, pour formaliser des programmes et
démontrer des propriétés - aborder la logique comme domaine sur lequel des algorithmes peuvent
travailler pour automatiser des vérifications de preuves, voire (en
partie) des recherches de preuves
Il ne sera pas question d'étudier tous les formalismes logiques tant ils
sont nombreux et rapidement complexes. On commencera par étudier le calcul
propositionnel qui permet de formaliser assez simplement la notion de
correction d'une démonstration. Ensuite on s'intéressera au calcul des
prédicats qui permet de formuler une plus grande classe de propriétés.
On examinera quelques formalismes pour ces deux fragments de la logique
(principalement un système à la Frege-Hilbert, la déduction naturelle et
le calcul des séquent).
Le cours mélangera des aspects purement théoriques (démonstrations au sens
« habituel » du terme), des aspects programmation en OCaml pour travailler
sur des formules logiques, des aspects preuve et programmation en Coq
pour mettre en application les « preuves formelles ».
Enfin, nous verrons le lien entre preuves et programmes (correspondance
de Curry-Howard en faisant un détour par la calculabilité et le
lambda-calcul. À ce sujet, on se restreindra sans doute restreinte à la
logique minimale pour ne pas devoir aborder des lambda-calculs compliqués.
Sur la forme, le cours se déroulera sous forme de « cours/TD intégrés »,
alternant les activités « cours » et « application ». Il s'étendra sur
8 séances (dont un contrôle des connaissances).
Objectifs pédagogiques
Ce cours a plusieurs objectifs:
- aborder la logique en tant que science, comme objet d'étude et
démontrer des propriétés sur certains formalismes logiques - aborder la logique en tant qu'outil, pour formaliser des problèmes et
démontrer des propriétés - aborder la logique en tant qu'outil, pour formaliser des programmes et
démontrer des propriétés - aborder la logique comme domaine sur lequel des algorithmes peuvent
travailler pour automatiser des vérifications de preuves, voire (en
partie) des recherches de preuves
effectifs minimal / maximal:
/20Diplôme(s) concerné(s)
Pour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées
Les élèves à qui ce cours est dédié doivent disposer d'une formation initiale compatible avec le programme des classes préparatoires MP2I/MPI. Il est en particulier attendu qu'ils connaissent le langage OCaml et aient des connaissances élémentaires en logique propositionnelle (connecteurs logiques et leur signification, notion de fomule logique).
Format des notes
Numérique sur 20Littérale/grade européenPour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées
Vos modalités d'acquisition :
Le contrôle de connaissances sera effectué en classe, sur papier et ordinateur, avec tous documents personnels autorisés. L'utilisation d'Internet ou tout outil d'intelligence dite artificielle (ChatGPT, Copilot, etc.) est prohibée, de même que tout moyen de communication avec des tierces personnes.
L'UE est acquise si Note finale >= 10- Crédits ECTS acquis : 2 ECTS
- Scientifique acquis : 2
Le coefficient de l'UE est : 1
La note obtenue rentre dans le calcul de votre GPA.
L'UE est évaluée par les étudiants.
Programme détaillé
- Préambule
- Quelques rappels - Les preuves informelles
- Quelques rappels - Calcul propositionnel
- Vers le raisonnement
- La déduction naturelle pour la logique propositionnelle
- Le calcul des séquents pour la logique propositionnelle
- Premier contact avec un véritable outil : Coq
- Le calcul des prédicats
- La déduction naturelle pour le calcul des prédicats
- Le calcul des séquents pour le calcul des prédicats
- Retour à Coq pour le calcul des prédicats
- Programmer ou démontrer ?
- Programmer et démontrer
- Démontrer pour s’amuser
- Un peu de formalisation de logique propositionnelle
- Prédicats inductifs
- Conclusion