summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid A. Madore <david+git@madore.org>2026-01-25 20:22:30 +0100
committerDavid A. Madore <david+git@madore.org>2026-01-25 20:22:30 +0100
commitcd895362c4db42e2c05bfd9b3d9ae8f0850e3670 (patch)
tree39f92f84ceee052a16035bc19e5b016f0d228325
parent241e0894786d3f305bb2cb1dd549c9e1882ebefd (diff)
downloadinf110-lfi-cd895362c4db42e2c05bfd9b3d9ae8f0850e3670.tar.gz
inf110-lfi-cd895362c4db42e2c05bfd9b3d9ae8f0850e3670.tar.bz2
inf110-lfi-cd895362c4db42e2c05bfd9b3d9ae8f0850e3670.zip
Finish proofreading exam questions.
-rw-r--r--controle-20260126.tex111
1 files changed, 59 insertions, 52 deletions
diff --git a/controle-20260126.tex b/controle-20260126.tex
index 7ef04e2..7703669 100644
--- a/controle-20260126.tex
+++ b/controle-20260126.tex
@@ -74,31 +74,29 @@
\noindent\textbf{Consignes.}
-\textcolor{red}{(À modifier.)}
-
-Les exercices et le problème sont totalement indépendants les uns des
-autres. Ils pourront être traités dans un ordre quelconque, mais on
-demande de faire apparaître de façon très visible dans les copies où
-commence chaque exercice (tirez au moins un trait sur toute la largeur
-de la feuille entre deux exercices).
-
-Les questions du problème dépendent les unes des autres, mais ont été
-rédigées de manière à ce que chacune donne toutes les informations
-nécessaires pour passer à la suite. Mais comme elles (les questions
-du problème) présentent une gradation approximative de difficulté, il
-est recommandé de les traiter dans l'ordre.
-
-La longueur du sujet ne doit pas effrayer : l'énoncé du problème est
-très long parce que des rappels et éclaircissements ont été faits et
-que les questions ont été rédigées de façon aussi précise que
-possible. Par ailleurs, il ne sera pas nécessaire de tout traiter
-pour avoir le maximum des points.
+Les exercices 1 à 5 (qui portent sur la logique) et le problème final
+(qui porte sur la calculabilité) sont totalement indépendants les uns
+des autres. Ils pourront être traités dans un ordre quelconque, mais
+on demande de faire apparaître de façon très visible dans les copies
+où commence chaque exercice (tirez au moins un trait sur toute la
+largeur de la feuille entre deux exercices). \textbf{Le non-respect
+ de cette consigne pourra être pénalisé.}
\medbreak
-Dans les exercices portant sur Coq (exercices 1 à 4), les erreurs de
-syntaxe Coq ne seront pas pénalisées tant qu'on comprend clairement
-l'intention.
+La longueur du sujet ne doit pas effrayer : les réponses attendues
+sont souvent plus courtes que les questions. Notamment, l'énoncé du
+problème est long parce que des rappels et éclaircissements ont été
+faits et que les questions ont été rédigées de façon aussi précise que
+possible.
+
+\medbreak
+
+Dans les exercices portant sur Rocq (exercices 1 à 4), les erreurs de
+syntaxe Rocq ne seront pas pénalisées tant qu'on comprend clairement
+l'intention. De même, quand on demande d'écrire un $\lambda$-terme,
+il n'est pas indispensable de suivre exactement les notations
+introduites en cours.
\medbreak
@@ -112,12 +110,12 @@ L'usage des appareils électroniques est interdit.
Durée : 3h
Barème \emph{approximatif} et \emph{indicatif} (sur $20$) :
-\textcolor{red}{(à écrire)}.
+2+2+4+3+3+6
\ifcorrige
-Ce corrigé comporte \textcolor{red}{(à remplir)} pages (page de garde incluse).
+Ce corrigé comporte 11 pages (page de garde incluse).
\else
-Cet énoncé comporte \textcolor{red}{(à remplir)} pages (page de garde incluse).
+Cet énoncé comporte 7 pages (page de garde incluse).
\fi
\vfill
@@ -153,9 +151,10 @@ Dans cet exercice, on considère des paires d'états d'une preuve en Rocq avant
A
\end{verbatim}
-et on veut arriver à l'état suivant :
+\noindent et on veut arriver à l'état suivant :
\begin{verbatim}
+ A, B, C : Prop
H1 : A /\ B
H2 : C
============================
@@ -172,7 +171,7 @@ et on veut arriver à l'état suivant :
(A \/ B) /\ C <-> (A /\ C) \/ (A /\ C)
\end{verbatim}
-et on veut arriver à l'état suivant :
+\noindent et on veut arriver à l'état suivant :
\begin{verbatim}
First subgoal:
@@ -200,7 +199,7 @@ Second subgoal:
A \/ B
\end{verbatim}
-et on veut arriver à l'état suivant :
+\noindent et on veut arriver à l'état suivant :
\begin{verbatim}
No more goals.
@@ -211,15 +210,17 @@ et on veut arriver à l'état suivant :
\textbf{(4)} On part de l'état suivant :
\begin{verbatim}
+ A, B : Prop
H1 : A -> B
H2 : ~ B
============================
~A
\end{verbatim}
-et on veut arriver à l'état suivant :
+\noindent et on veut arriver à l'état suivant :
\begin{verbatim}
+ A, B : Prop
H1 : A -> B
H2 : ~ B
H3 : A
@@ -238,7 +239,7 @@ et on veut arriver à l'état suivant :
n = m
\end{verbatim}
-et on veut arriver à l'état suivant :
+\noindent et on veut arriver à l'état suivant :
\begin{verbatim}
n, m : nat
@@ -257,7 +258,7 @@ et on veut arriver à l'état suivant :
n + 0 = n
\end{verbatim}
-et on veut arriver à l'état suivant :
+\noindent et on veut arriver à l'état suivant :
\begin{verbatim}
First subgoal:
@@ -284,7 +285,7 @@ Second subgoal:
S n + 0 = S n
\end{verbatim}
-et on veut arriver à l'état suivant :
+\noindent et on veut arriver à l'état suivant :
\begin{verbatim}
n : nat
@@ -304,7 +305,7 @@ et on veut arriver à l'état suivant :
S (n + 0) = S n
\end{verbatim}
-et on veut arriver à l'état suivant :
+\noindent et on veut arriver à l'état suivant :
\begin{verbatim}
n : nat
@@ -334,7 +335,6 @@ et on veut arriver à l'état suivant :
\textbf{(7)} \verb|simpl.|
\textbf{(8)} \verb|f_equal.| (la tactique) ou \verb|apply f_equal.| (le lemme).
-
\end{corrige}
%
@@ -516,7 +516,7 @@ forme drapeau), qui vaudra au moins une partie des points.
\smallskip
-\textbf{(6)} Expliquer comment prouver en Rocq que la taille d'un arbre et la taille de son miroir sont égales.
+\textbf{(6)} Expliquer succinctement comment prouver en Rocq que la taille d'un arbre et la taille de son miroir sont égales.
\begin{corrige}
\smallskip
@@ -553,7 +553,9 @@ Fixpoint taille (a : arbre) : nat :=
end.
\end{verbatim}
- \textbf{(6)} On énoncerait le lemme \verb|Lemma taille_miroir : forall a : arbre, taille a = taille (miroir a).|
+ \textbf{(6)} On énoncerait le lemme :
+
+\verb|Lemma taille_miroir : forall a : arbre, taille a = taille (miroir a).|
Pour le prouver, on utilise l'induction structurelle (\texttt{induction a.}). Le cas de base (feuille) se résout par \texttt{reflexivity.} Dans le cas récursif, la simplification calcule la taille du miroir. Les hypothèses d'induction permettent de réécrire les tailles du miroir des sous-arbres. On conclut en utilisant la commutativité de l'addition.
@@ -662,10 +664,10 @@ peut pas être démontrable en calcul propositionnel intuitionniste.
%
%
-\exercice
+\exercice[Problème]
-\textbf{Rappels de quelques définitions habituelles.} On rappelle
-qu'un \textbf{mot binaire [fini]} est une suite finie (éventuellement
+\textbf{Rappels de quelques définitions et notations habituelles.} On rappelle
+qu'un \textbf{mot binaire} est une suite finie (éventuellement
vide, c'est-à-dire de longueur nulle) de $0$ et de $1$. On notera
$\{0,1\}^* = \{\varepsilon, 0, 1, 00, 01, 10, 11, 000, \ldots\}$ (ici,
$\varepsilon$ désigne le mot vide) l'ensemble de tous les mots
@@ -701,21 +703,24 @@ lorsque, pour chaque $0 \leq i < |w|$, le bit numéroté $i$ de $w$ vaut
attestant $\varphi_i(0) = 0$,
\item $1$ s'il existe un arbre de calcul (codé par un entier) $<|w|$
attestant $\varphi_i(0) = r$, où $r\neq 0$,
-\item et arbitraire sinon
+\item et arbitraire sinon,
\end{itemize}
-où $\varphi_i$ désigne la $i$-ième fonction générale récursive.
+où $\varphi_i$ désigne la $i$-ième fonction générale récursive
+(d'arité $1$).
+
\emph{Si on préfère} parler en termes de machines de Turing, on pourra
changer la définition en :
\begin{itemize}
\item $0$ si la $i$-ième machine de Turing
termine\footnote{Sous-entendu : à partir d'une bande vierge (ou
d'une bande représentant le nombre $0$, ou tout autre état initial
- fixé, peu importe).} en $<|w|$ étapes et renvoie $0$,
+ fixé sans importance).} en $<|w|$ étapes et renvoie $0$,
\item $1$ si la $i$-ième machine de Turing termine en $<|w|$
étapes et renvoie une valeur $r \neq 0$,
\item et arbitraire sinon
\end{itemize}
(cela ne changera rien de substantiel aux raisonnements).
+
Informellement dit, l'appartenance d'un mot $w$ à $\mathscr{K}$ est
déterminée par le résultat de l'exécution des $|w|$ premiers
programmes, chacun jusqu'à la borne $|w|$, et le bit numéroté $i$
@@ -751,14 +756,15 @@ les sommets sont les éléments de $\mathscr{K}$, avec une arête de $u$
à $v$ lorsque $u$ est un préfixe de $v$, est un arbre (infini) au sens
de la théorie des graphes. Cette remarque n'est pas utile pour le
présent exercice.} pour exprimer la propriété démontrée par cette
-question (1) (formellement, un arbre de mots binaires est une partie
+question (1). (Formellement, un arbre de mots binaires est une partie
$\mathscr{T} \subseteq \{0,1\}^*$ telle que si $v\in\mathscr{T}$ et
-que $u$ est un préfixe de $v$, alors $u\in\mathscr{T}$).
+que $u$ est un préfixe de $v$, alors $u\in\mathscr{T}$.)
\medskip
\textbf{(2)} Montrer que $\mathscr{K}$ est une partie \emph{décidable}
-(i.e., calculable) de $\{0,1\}^*$.
+(i.e., calculable) de $\{0,1\}^*$. Sa fonction indicatrice est-elle
+primitive récursive ?
\begin{corrige}
On veut montrer qu'il existe un algorithme qui, donné un $w \in
@@ -773,9 +779,9 @@ lance l'exécution de la $i$-ième machine pour au plus $|w|-1$ étapes
et le reste est analogue.) Si une des conditions échoue, le mot $w$
n'est pas dans $\mathscr{K}$, tandis que si toutes réussissent, le mot
est dans $\mathscr{K}$. Il s'agit bien là d'un algorithme qui termine
-à coup sûr en temps fini (il est même primitif récursif puisqu'on a
+à coup sûr en temps fini. Il est même primitif récursif puisqu'on a
essentiellement deux boucles imbriquées, une sur $i$ et une sur $j$,
-bornées par $|w|$).
+bornées par $|w|$.
\end{corrige}
\medskip
@@ -822,6 +828,7 @@ qu'il n'existe pas d'algorithme qui prend en entrée un $e \in
\item et une valeur arbitraire sinon (i.e., si $\varphi_e(0)$ n'est
pas définie).
\end{itemize}
+
\emph{Si on préfère} parler en termes de machines de Turing, on pourra
montrer qu'il n'existe pas d'algorithme qui prend en entrée le code
$e$ d'une machine de Turing, \emph{termine toujours en temps fini}, et
@@ -896,11 +903,11 @@ n'a pas branche infinie calculable.
Le \textbf{lemme de Kőnig} est l'affirmation suivante : « tout arbre
de mots binaires contenant des mots de longueur arbitrairement grande
-a une branche infinie » (les termes « arbre », « contenant des mots de
-longueur arbitrairement grande » et « branche infinie » ont été
-définis précisément ci-dessus). On ne demande pas de démontrer cette
-affirmation : néanmoins, c'est un théorème des mathématiques
-classiques usuelles.
+a une branche infinie » (les termes « arbre de mots binaires »,
+« contenant des mots de longueur arbitrairement grande » et « branche
+infinie » ont été définis précisément ci-dessus). On ne demande pas
+de démontrer cette affirmation : néanmoins, c'est un théorème des
+mathématiques classiques usuelles.
\medskip