Cours 1: Algèbre initiale
Algèbre intiale (pour un foncteur)
Soit $ℂ$ une catégorie et $F: ℂ ⟶ ℂ$ un foncteur.
- Une $F$-algèbre:
-
est une paire $(A, α)$ où $A ∈ ℂ$ et $α: FA ⟶ A$
- Un morphisme de $F$-algèbres $(A, α) ⟶ (B, β)$:
-
est un morphisme $f: A ⟶ B$ tq le diagramme suivant commute: \(\begin{xy} \xymatrix{ FA \ar[r]^\alpha \ar[d]_{Ff} & A \ar[d]^f \\ FB \ar[r]_\beta & B } \end{xy}\)
On note $Alg(F)$ la catégorie des $F$-algèbres.
- Algèbre initiale pour $F$:
-
un objet initial de $Alg(F)$: $(Z, ζ)$, avec $ζ: FZ ⟶ Z$ tel que $∀(A, α)$ $F$-algèbre $∃! i_A: (Z, ζ) ⟶ (A, α)$
Prop: Soit $(Z, ζ)$ une $F$-alg initiale. Alors \((FZ, Fζ) ≃ (Z, ζ)\)
NB: en un certain sens, c’est le plus petit point fixe de $F$.
Structures libres
- Structure libre:
-
est un $n$-uplet $(T, c_1, ⋯, c_n)$ où
- $T ∈ Set$
- $c_i: θ_i(T) ⟶ T$ pour des foncteurs $θ_1, ⋯, θ_n: Set ⟶ Set$ donnés
tq $(T, [c_1, ⋯, c_n])$ est la $(θ_1 + ⋯ + θ_n)$-algèbre initiale
- Co-pairing de $f: A ⟶ C, g: B ⟶C$:
-
$[f, g]: A+B ⟶ C$ (définition par cas, fonction donnée par la propriété universelle du coproduit)
Donc $[c_1, ⋯, c_n]: \underbrace{θ_1(T) + ⋯ + θ_n(T)}_{≝ (θ_1 + ⋯ + θ_n)(T)} ⟶ T$
En théorie des types: \(θ_i(X) ≝ θ_i^{k_1}(X) × ⋯ × θ_i^{k_i}(X)\)
Que signifie le caractère initial?
Point fixe:
\[T ≃ (θ_1 + ⋯ + θ_n)(T)\]Donc tout $x ∈ T$ s’écrit $c_i(y) ∈ θ_i(T)$ où $i ∈ \lbrace 1, ⋯, n \rbrace$ et $y∈T$ sont uniques.
Ex:
- $θ_1 ≝ id: Set ⟶ Set$
- $θ_2 ≝ 1: Set ⟶ Set$
Algèbre initiale: l’ensemble $ℕ$
- $θ_2$ est le constructeur zéro
- $θ_1$ est le constructeur successeur
Clôture par $id+1$ ⟹ on a tous les entiers
Les entiers dans le système F
\[Nat ≝ ∀X. (X → X) → X → X\]Lemme: les termes normaux de type $Nat$ sont de la forme
-
\[\underline{n} ≝ ΛX. λs^{X→X}. λz^X. s^n(z)\]
c’est-à-dire les entiers de Church!
- ou l’identité \(ΛX. λf^{X→X}. f ≃_η ΛX. λf^{X→X}. λx^X. f x\)
- Rappel: $η$-équivalence:
- \[M ≃_η λx. M x\]
Système T
\[M, N := x \mid λx. M \mid MN \mid 0 \mid SN \mid \texttt{if } z \texttt{ then } P \texttt{ else } x.M\\ \mid ⟨M, N⟩ \mid π_i M \mid \texttt{iter}(N, x. M, P)\]où
-
$\texttt{iter}(0, M, P) ⟶ P$
-
$\texttt{iter}(SN, M, P) ⟶ M[\texttt{iter}(N, M, P)/x]$
i.e.
\[\cfrac{Γ ⊢ N: Nat \qquad Γ,x:A ⊢ M: A \qquad Γ ⊢ P: A}{Γ ⊢ iter(N, x.M, P): A}\]Système T dans le système F
\[\cfrac{}{Γ ⊢ \underline{0}: Nat}\]c’est clair car tous les entiers de Church sont de type $Nat$
\[\cfrac{Γ ⊢ N: Nat}{Γ ⊢ SN: Nat}\]
Vérifions que
\[succ ≝ λn^{Nat}. (ΛX. λs^{X→X}. λz^X. n \, X \, s\, (sz)): Nat ⟶ Nat\] \[\cfrac{Γ ⊢ N: Nat \qquad Γ ⊢ succ: Nat → Nat}{Γ ⊢ succ \, N: Nat}\]- \[\underline{0} \, A \, (λx^A.M) P: P\]
- \[\underline{n+1} \, A \, (λx^A.M) P ⟶^\ast (λx^A.M) ( ⋯ (λx^A.M) P) ⋯) \\ ⟶ (λx^A.M) (iter(n, M, P)) ⟶ M[iter(n, M, P)/x]\]
Puis: règle du “if zero”
Donc système F contient le système T.
Par un argument diagonal: un langage de programmation total ne peut pas exprimer toutes les fonctions récursives totales.
- Système de réécriture (faiblement) normalisant:
-
ssi pour tout $M$, il existe $N$ normal (plus de réduction possible) tq $M ⟶^\ast N$ (mais: il se pourrait qu’il existe une stratégie de réduction qui ne termine pas)
Ex: $λ$-calcul pas normalisant ⟹ cf. $Ω ≝ δ δ ≝ (λx. xx) (λx. xx) ⟶ Ω ⟶ ⋯$
Gödel a introduit le système T pour réduire la cohérence de l’arithmétique de Peano à la normalisation de ce système
Gödel: Normalisation du système T ⟹ cohérence de PA
- Fortement normalisant:
-
ssi il n’existe pas de chemin de réécriture infini partant de $M$ (le graphe de réduction de tout terme est fini)
- Confluence:
-
il existe au plus une forme normale.
Girard: Normalisation (faible) du système F ⟹ cohérence de $PA_2$
En fait: systèmes T et F sont fortement normalisants, mais on ne va montrer que leur normalisation faible.
Système de réécriture du système F
- \[(λx^A. M) N ⟶ M[N/x]\]
- \[(ΛX. M) A ⟶ M[A/X]\]
La deuxième règle ne “fait rien”, on peut la vérifier sans à l’extérieur du système F.
Réductibilité (Tait)
- $λ$-calcul simplement typé ⟶ logique propositionelle
- Types pour le $λ$-calcul simplement typé:
- \[A, B := X \mid A → B\]
Candidats de réductibilité
On définit un prédicat sur les types: l’ensemble des termes réductibles de type $A$.
\[Red(X) ≝ WN_X ≝ \lbrace M : X \mid M \text{ normalisant}\rbrace \qquad \text{(WN = weakly normalisable)}\\ Red(A → B) ≝ \lbrace M: A → B \mid ∀N∈Red(A), MN∈Red(B) \rbrace\]- Un terme est neutre:
-
s’il n’est pas une abstraction (soit une variable, soit une application)
NB: on ne crée pas de nouveaux rédex quand on remplace les termes neutres par une variable
\[NN_A ≝ \lbrace M: A \mid M \text{ normal et neutre} \rbrace\]Lemme 1: Pour tout type $A$,
\[NN_A ⊆ Red(A) ⊆ WN_A\]
Lemme 2 (Adéquation):
Si $x_1: C_1, ⋯, x_n: C_n ⊢ M:A$ est dérivable, alors pour tout $i∈ \lbrace 1, ⋯, n\rbrace$, $N_i ∈ Red(C_i)$, on a \(M[N_1/x_1, ⋯, N_n/x_n] ∈ Red(A)\)
Attention: pour démontrer l’adéquation, on fait une induction qui dépend de types arbitrairement complexes ⟶ pas de borne sur les formules sur lesquelles on applique l’induction ⟹ ne marchera pas pour le système T à l’intérieur du système T (mais fonctionne dans le système F, au second ordre).
Conséquence: le $λ$-calcul simplement typé est faiblement normalisant, puisque que c’est le cas de toutes les variables, et on conclut par induction.
Pour le système F
\[Red(∀X. A) ≝ \lbrace M: ∀X.A \mid ∀B, MB ∈ Red(A[B/X]) \rbrace\]MAIS: définition circulaire !!! Pas bien fondée ⟶ $A[B/X]$ n’est pas “plus petit” que $A$
Leave a comment