Cours 4 : Introduction à la réécriture et la décision modulo, par Frédéric Blanqui
Rappels
Arithmétique comme théorie axiomatique.
- Objets : $0, S, +, ×$
- Propositions : $\bot, ⟹, ∀, ⋯$, Prédicats : $=, ⋯$
- Axiomes / Schémas d’axiomes (quand il y en un ensemble infini) ⟶ hypothèses
-
Règles de déduction/inférence :
- $\vdash$ : relation de prouvabilité = la plus petite relation $⊆ ℙ(𝒫) × 𝒫$
- langage pour représenter les preuves basé sur le $𝜆$-calcul
Exemple de système d’inférence :
Déduction naturelle (Gentzen, 1934) :
\[\cfrac{𝛤 \vdash A \quad 𝛤 \vdash B}{𝛤 \vdash A∧B} (∧ intro)\] \[\cfrac{𝛤 \vdash A∧B}{𝛤 \vdash A} (∧ elim left)\] \[\cfrac{𝛤 \vdash A∧B}{𝛤 \vdash B} (∧ elim right)\] \[\cfrac{𝛤, A \vdash B}{𝛤 \vdash A ⟹ B} (⟹ intro)\] \[\cfrac{𝛤 \vdash A ⟹ B \quad 𝛤 \vdash A}{𝛤 \vdash B} (⟹ elim)\] \[\cfrac{𝛤 \vdash \bot}{𝛤 \vdash A} (\bot elim)\] \[\cfrac{\qquad}{𝛤 \vdash A}(Axiom) A∈𝛤\]En $𝜆$-calcul :
\[\cfrac{𝛤, x:A \vdash u:B}{𝛤 \vdash 𝜆x. u : A ⟹ B} (⟹ intro)\] \[\cfrac{𝛤 \vdash u: A ⟹ B \quad 𝛤 \vdash v : A}{𝛤 \vdash uv : B} (⟹ elim)\] \[\cfrac{𝛤 \vdash u :A \quad 𝛤 \vdash v:B}{𝛤 \vdash (u, v) : A∧B} (∧ intro)\] \[\cfrac{𝛤 \vdash u:A∧B}{𝛤 \vdash 𝜋_1(u): A} (∧ elim left)\]Arithmétique de Peano :
-
Théorie de l’égalité (avec ses schémas d’axiomes) :
- réflexivité, symétrie, transitivité
-
schéma d’axiomes de passage au contexte :
\[∀i, j. i=j ⟹ F ⟹ F[i:=j]\]
-
Arithmétique élémentaire $Q$
- définition de l’addition par réc à droite
- définition de la multiplication par réc à droite
- injectivité du successeur
- zéro n’est pas un successeur
- tout élément non nul est un successeur
-
Schéma de récurrence/induction :
\[F[i:=0] ⟹ (∀i, F[i:=j] ⟹ F[i:=S j]) ⟹ ∀i, F\]
Correspondance de Curry-de Bruijn-Howard
NB : de Bruijn : système AUTOMATH dans les années 60/70
Preuves ⟺ Programmes
Propositions/Formules ⟺ Types
On peut déduire des choses sur la complexité d’une fonction en fonction de son type, dans un système de types donné.
- Coupure (Cut) :
-
règle d’introduction suivie d’une règle d’élimination
Simplification des preuves = élimination des coupures ⟺ $𝛽$-réduction
Un même terme peut avoir plusieurs coupures ⟶ élimination des coupures = une relation.
Problèmes :
-
est-ce que l’ordre d’élimination a une importance ?
- si non : propriété de confluence
-
terminaison ?
-
choix du sous-terme à réduire ? (dans les langages de programmation : stratégie d’évaluation)
\[𝜋_1(u, v) ⟶ u\] \[\lbrace (a,b) \mid ∃c; a=𝜋_1(b, c) \rbrace\]
Plus petit couple : $(𝜋_1(𝛼, 𝛽), 𝛼)$
- Règle de réécriture :
-
ex : $(\underbrace{𝜋_1(𝛼, 𝛽)}_{\text{ motif (pattern) }}, 𝛼) ⟶ 𝛼$ : filtrage
On veut définir une relation avec un nombre fini de règles.
- Relation engendrée par un ensemble de règles de réécriture $⟶_R$ :
-
plus petite relation contenant $R$ et stable par substitution et contexte
Question qui se pose : $t$ est-il une instance de $l$ ? i.e est-ce qu’il existe une substitution $𝜃$ tq
\[t = l 𝜃 \quad \text{ ( noté } l \preceq t \text{ )}\](cas particulier d’unification : on veut $t = l 𝜃$ au lieu de $t 𝜃 = l 𝜃$)
Ou bien : on utilise la notion de position $p$ dans un arbre syntaxique (représentant un terme) : on remplace le sous-terme $l 𝜃$ à la position $p$ par un sous-terme $r 𝜃$ (filtrage par la règle $l ⟶_R r$)
NB : il peut y avoir ambiguïté : à une même position, plusieurs règles peuvent s’appliquer.
Elimination des coupures :
-
consistance/cohérence
- on peut montrer qu’on ne peut pas avoir de preuves sans coupures de $\bot$ ⟹ si on exhibe une preuve sans coupure, ça ne peut pas être une preuve de $\bot$
-
En logique intuitionniste, l’élimination des coupures dans une preuve de $A∨B$ permet de déterminer si $A$ ou si $B$ est vrai (avec la règle d’introduction du $∨$)
-
Pareil pour les règles d’introduction du quantificateur existentiel $∃$ : l’élimination des coupures donne un témoin existentiel effectif.
Intérêt en génie logiciel : si on a une preuve constructive de :
\[∀ \underbrace{x}_{\text{ input }}, ∃ \underbrace{y}_{\text{ input }}, P(x, y)\]on peut en extraire un programme effectif, qui à chaque input $x$ donne un output $y$.
Règles de conversion
Relation sur les termes :
- $i+0 ⟶_ℕ i$
- $i+s j ⟶_ℕ s(i+j)$
- $i×0 ⟶_ℕ 0$
- $i × s j ⟶_ℕ i × j + i$
- $\vdots$
Relation sur les propositions :
- $0 = s i ⟶ \bot$
- $s i = s j ⟶ i = j$
on peut prouver :
\[\cfrac{𝛤 \vdash F \quad F \longleftrightarrow^\ast_ℕ G}{𝛤 \vdash G}\]- Déduction modulo :
-
une théorie =
- un ensemble d’axiomes
- une congruence (rel. d’éq. monotone (= qui passe au contexte)) sur les propositions $≡$
on a des règles :
\[\cfrac{𝛤 \vdash A \quad A ≡ B}{𝛤 \vdash B}\] \[\cfrac{𝛤 \vdash C \quad C ≡ A ∧ B}{𝛤 \vdash A}\]Avantages :
- preuves + petites
- séparation entre les déductions “créatives” (qui demandent de l’intuition, où les hommes sont meilleurs que les machines) et le calcul mécanique (ou les machines sont meilleures que les hommes)
- élimination des coupures / propriété du témoin (= constructivisme des preuves)
Propriété de témoin/disjonction
-
$∃x, A(x)$ ⟶ on a un témoin explicite
-
$A∨B$ ⟶ on a $A$ ou $B$
-
$\bot$ ⟶ pas possible de le dériver
Idée : convertir les schémas d’axiomes (théories purement axiomatique) en congruence (déduction modulo ⟶ théories purement calculatoire), pour éliminer les axiomes, et ainsi avoir ces trois propriétés.
Théories purement calculatoire (cf. cours de déduction modulo par Gilles Dowek en M2 au MPRI) :
- Arithmétique
- Théorie des ensembles
- Théorie des types simples (HOL)
NB : on essaye d’avoir des congruences décidables :
Exs :
-
la congruences des formules équivalentes à $\top$ n’est pas décidable : on ne peut pas dire si une formule est vraie.
-
si on a $A∨B ≡ C ∧ D$ : on ne peut pas éliminer la coupure $A \vdash C∧D \vdash C$ (intro puis élim)
Donc on peut que la congruence soit non-confusing = préserve la structure des connecteurs :
-
si $A ≡ A’$ alors
- soit $A$ ou $A’$ est atomique
- soit si $A= B ∧ C$, alors $A’ = B’ ∧ C’$ avec $B ≡ B’$ et $C≡C’$
On a une congruence définie par un ensemble d’équations $E$ : on en prend la clôture réflexive symétrique transitive $\longleftrightarrow_E^\ast$ :
Comment décider $\longleftrightarrow_E^\ast$ ?
Procédure de complétion de Knuth-Bendix, i.e. essayer de trouver $R$ un ensemble de règles de réécriture tq
- $\longleftrightarrow_E^\ast = \longleftrightarrow_R^\ast$
- $R$ termine (⟹ existence d’une forme normale)
- $R$ conflue (⟹ unicité de la forme normale)
⟹ en partant des équations, on essaye de les “orienter” (pour transformer les équations via des règles de réécriture)
Dans le cas de l’arithmétique : représentation purement calculatoire :
-
termes avec 2 sortes :
-
$𝜄$ pour les objets
- constructeurs : $0, s, +, ×, pred$
-
$𝜅$ pour les classes (ou ensembles d’objets)
-
-
propositions avec connecteurs logiques habituels $∧, ∨, ⋯ \mid t = u \mid t∈c \mid \underbrace{Null(t)}_{“t=0”} \mid Nat(t)$
-
schéma de compréhension $∀x_1, ⋯, ∀x_n, ∃c, ∀y \; (y ∈ c ⟺ A)$
- $”∈” ∉ A$
- $fv(A) ⊆ \lbrace x_1, ⋯, x_n \rbrace$
-
Schéma de récurrence $∀y, \, Nat(y) ⟺ ∀c, \, (0∈c ⟹ (∀x, \; Nat(x) ⟹ x∈c ⟹ s x ∈ c) ⟹ y ∈ c)$
- $pred \, 0 ⟶ 0$
- $pred \, s x ⟶ x$
- addition, multiplication, …
- $Null(0) ⟶ \top$
- $Null( s \, x) ⟶ \bot$
- sorte de Skolémisation : $y∈ f_{x_1, \ldots, x_n, y, A} ⟶ A$
de cette manière, on a une présentation purement calculatoire : pas d’axiomes, que des règles de réécriture.
Leave a comment