2024-05-13 18:29:50 +02:00
\documentclass { beamer}
2024-05-16 11:30:40 +02:00
\usepackage [T1] { fontenc}
\usepackage { listings}
\usepackage { syntax}
2024-05-13 18:29:50 +02:00
\usepackage [utf8] { inputenc}
2024-05-16 12:47:52 +02:00
\usepackage { xcolor}
2024-05-16 11:30:40 +02:00
\newcommand { \Hquad } { \hspace { 0.2em} }
2024-05-16 12:47:52 +02:00
\newcommand { \red } [1]{ \textbf { \color { red} #1} }
2024-05-16 11:30:40 +02:00
\lstset {
language=caml,
columns=[c]fixed,
basicstyle=\small \ttfamily ,
keywordstyle=\bfseries ,
upquote=true,
commentstyle=,
breaklines=true,
showstringspaces=false
}
\title { Présentation Projet Fonctionnel}
\author { Marwan AZIZI et Augustin LUCAS}
2024-05-13 18:29:50 +02:00
\institute { }
\date { }
% ceci est un commentaire
% pour compiler : tapez pdflatex ex-presentation
% regardez ensuite le fichier ex-presentation.pdf
2024-05-16 11:30:40 +02:00
% 1. grammaire du lcalcul simmplement typé
% on a fait pieuvre, assistant de preuve pour la logique intuitionniste documentclass
%
% fonctionne grâce à Curry-Howard -> insister sur l'utilisation des refs
% montrer l'exmple du apply généralisé
% fiabilité
2024-05-13 18:29:50 +02:00
\begin { document}
\maketitle
2024-05-16 11:30:40 +02:00
\begin { frame} { Introduction}
% On a fait pieuvre, assistant de preuve pour la logique intuitionniste
Pieuvre, un assistant de preuve pour la logique intuitionniste
\pause
\vspace { 0.2in}
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
Prouvable
$$ A \rightarrow B \rightarrow ( A \wedge B ) $$
Pas prouvable
2024-05-16 11:33:48 +02:00
$$ \neg \neg A \rightarrow A $$
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
\end { frame}
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
\begin { frame} { Comment ça marche}
Par la correspondance de Curry-Howard
\vspace { 0.2in}
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
Preuve $ \Leftrightarrow $ programme du $ \lambda $ -calcul simplement typé
\end { frame}
2024-05-13 18:29:50 +02:00
2024-05-16 12:47:52 +02:00
\begin { frame} { $ lambda $ -calcul}
les types sont donnés par
\lstinline { <A, B> ::= X}
\lstinline { | A -> B}
\lstinline { | A /\\ B}
\lstinline { | A \\ / B}
\lstinline { | false}
On peut avoir les $ \lambda $ -termes suivants:
\lstinline { fun (x:A) => x}
\lstinline { fun (x:A) => exf(x:B)}
2024-05-16 11:30:40 +02:00
\end { frame}
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
%! liste des tactiques
\begin { frame} { Tactiques}
Commandes:
\lstinline { Goal}
\lstinline { Undo}
\lstinline { Qed}
2024-05-20 16:32:29 +02:00
\lstinline { Check}
2024-05-16 11:30:40 +02:00
Tactiques:
\lstinline { exact}
\lstinline { assumption}
\lstinline { destruct}
\lstinline { intros}
\lstinline { intro}
\lstinline { cut}
\lstinline { apply}
\lstinline { left}
\lstinline { right}
\lstinline { split}
\end { frame}
\begin { frame} { Exemple}
Prouvons $ ( A \rightarrow B \rightarrow C ) \rightarrow A \rightarrow B \rightarrow C $
2024-05-13 18:29:50 +02:00
\end { frame}
2024-05-16 11:30:40 +02:00
\begin { frame}
% présenter les buts, les trous
\frametitle { Prouvons $ ( A \rightarrow B \rightarrow C ) \rightarrow A \rightarrow B \rightarrow C $ }
Preuve: %rajouter les types
2024-05-16 12:47:52 +02:00
\only <1>{ $$ \red { ? } $$ }
\only <2>{ $$ fun \Hquad ( x _ 0 : ( A \rightarrow ( B \rightarrow C ) ) ) \Rightarrow fun \Hquad ( x _ 1 :A ) \Rightarrow fun \Hquad ( x _ 2 :B ) \Rightarrow \red { ? } $$ }
\only <3>{ $$ fun \Hquad ( x _ 0 : ( A \rightarrow ( B \rightarrow C ) ) ) \Rightarrow fun \Hquad ( x _ 1 :A ) \Rightarrow fun \Hquad ( x _ 2 :B ) \Rightarrow ( x _ 0 \Hquad \red { ? } \Hquad ? ) $$ }
\only <4>{ $$ fun \Hquad ( x _ 0 : ( A \rightarrow ( B \rightarrow C ) ) ) \Rightarrow fun \Hquad ( x _ 1 :A ) \Rightarrow fun \Hquad ( x _ 2 :B ) \Rightarrow ( x _ 0 \Hquad x _ 1 \Hquad \red { ? } ) $$ }
2024-05-16 11:30:40 +02:00
\only <5-6>{ $$ fun \Hquad ( x _ 0 : ( A \rightarrow ( B \rightarrow C ) ) ) \Rightarrow fun \Hquad ( x _ 1 :A ) \Rightarrow fun \Hquad ( x _ 2 :B ) \Rightarrow ( x _ 0 \Hquad x _ 1 \Hquad x _ 2 ) $$ }
Interface:
\onslide <2-5>\lstinline { H2 : B}
\onslide <2-5>\lstinline { H1 : A}
\onslide <2-5>\lstinline { H0 : A -> B -> C}
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
\onslide <1>\lstinline { (A -> B -> C) -> A -> B -> C}
\onslide <2>\lstinline { C}
\onslide <4>\lstinline { B}
\onslide <3>\lstinline { A}
\onslide <5>\lstinline { No more goals.}
\onslide <1->\lstinline { ===========================}
\onslide <1->\lstinline { Goal (A -> B -> C) -> A -> B -> C.}
\onslide <2->\lstinline { intros.}
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
\onslide <3->\lstinline { apply H0.}
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
\onslide <4->\lstinline { exact H1.}
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
\onslide <5->\lstinline { exact H2.}
2024-05-13 18:29:50 +02:00
2024-05-16 11:30:40 +02:00
\onslide <6->\lstinline { Qed.}
\end { frame}
2024-05-16 12:47:52 +02:00
\begin { frame} { Fiabilité}
\begin { itemize}
2024-05-20 16:32:29 +02:00
\item Comment être sûrs de nos preuves ?
2024-05-16 12:47:52 +02:00
\pause
\item Envoyer nos termes de preuves à \textbf { \color { blue} { Coq} } .
\end { itemize}
2024-05-13 18:29:50 +02:00
\end { frame}
\end { document}