\documentclass{beamer} \usepackage[T1]{fontenc} \usepackage{listings} \usepackage{syntax} \usepackage[utf8]{inputenc} \usepackage{xcolor} \newcommand{\Hquad}{\hspace{0.2em}} \newcommand{\red}[1]{\textbf{\color{red}#1}} \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} \institute{} \date{} % ceci est un commentaire % pour compiler : tapez pdflatex ex-presentation % regardez ensuite le fichier ex-presentation.pdf % 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é \begin{document} \maketitle \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} Prouvable $$A \rightarrow B \rightarrow (A \wedge B)$$ Pas prouvable $$\neg \neg A \rightarrow A$$ \end{frame} \begin{frame}{Comment ça marche} Par la correspondance de Curry-Howard \vspace{0.2in} Preuve $\Leftrightarrow$ programme du $\lambda$-calcul simplement typé \end{frame} \begin{frame}{$lambda$-calcul} les types sont donnés par \lstinline{ ::= 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)} \end{frame} %! liste des tactiques \begin{frame}{Tactiques} Commandes: \lstinline{Goal} \lstinline{Undo} \lstinline{Qed} 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$ \end{frame} \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 \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{?})$$} \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} \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.} \onslide<3->\lstinline{apply H0.} \onslide<4->\lstinline{exact H1.} \onslide<5->\lstinline{exact H2.} \onslide<6->\lstinline{Qed.} \end{frame} \begin{frame}{Fiabilité} \begin{itemize} \item Comment être sûrs de nos preuves \pause \item Envoyer nos termes de preuves à \textbf{\color{blue}{Coq}}. \end{itemize} \end{frame} \end{document}