• Aucun résultat trouvé

Une preuve simple de résultats classiques en lambda-calcul

N/A
N/A
Protected

Academic year: 2021

Partager "Une preuve simple de résultats classiques en lambda-calcul"

Copied!
9
0
0

Texte intégral

(1)

HAL Id: hal-00384995

https://hal.archives-ouvertes.fr/hal-00384995

Submitted on 18 May 2009

HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Une preuve simple de résultats classiques en lambda-calcul

René David

To cite this version:

René David. Une preuve simple de résultats classiques en lambda-calcul. Comptes rendus de l’Académie des sciences. Série I, Mathématique, Elsevier, 1995, 320, p 1401-1406. �hal-00384995�

(2)

Une preuve simple de résultats classiques en λλλλ calcul (A simple proof of basic results in λ calculus)

René David

Résumé : Nous donnons une preuve simple de 3 théorèmes " de base " du lambda calcul pur : le théorème de Church - Rosser, le théorème de standardisation et le théorème des développements finis. Nous donnons également une généralisation - dans le lambda calcul pur - du théorème des développements finis qui a comme corollaire immédiat le théorème de normalisation forte dans le système de types simples avec intersection . Abstract : We give a simple proof of 3 basic theorems of pure lambda calculus : the Church-Rosser theorem, the standardisation theorem and the finiteness of developpements theorem . We also give an extension - in the pure lambda calculus - of the later that immediately gives the strong normalisation theorem for the type system D (simple types with intersection).

Abridged version

Usually in courses on Lambda Calculus, the Church-Rosser theorem is first proved and then the standardisation theorem and the finiteness of developpements theorem . I give here a complete proof of these theorems by showing first the standardisation theorem, then the finiteness of developpements theorem and finally the Church-Rosser theorem.

notations : Red(t) denotes the set of redexes in t. For F Red(t), a sequence - finite or infinite - of reductions t = t

0

-> t

1

-> ... is an F developpement of t ( it is denoted by t ->

F t’ if it is finite and finishes with t' ) iff the reduced redexes are residues of redexes in F.

t -> R t' means that t gives t' by reducing the redex R. A sequence - finite or infinite - of reductions t = t

0

-> R0 t

1

-> R1 ... is a standard reduction ( it is denoted t ->

st

t' if it is finite and finishes with t' ) if there is no pair (i,j) such that i>j and R

i

is a residue of a redex in t

j

on the left of R

j

. t ->

st,F

t' denotes a sequence of reductions that is both standard and an F developement of t.

Sketch of proofs : - The standardisation theorem is proved by induction on lg(t->* t') (where lg(t->* t') is the length of the reduction t->* t' ) by showing : 1) that ->

st

, ->

F

, -

>

st,F

, are congruences (lemma 1, proved by induction on (lg(u-> u'), cxte(u)) where cxte(t) represents the complexity of t ) and 2) that if t ->

st

t

1

-> R t

2

then t ->

st

t

2

( lemma 2, proved by induction on (lg(t ->

st

t

1

), cxte(t) ).

- The theorem on the finiteness of developpements is proved by induction on cxte(t),

after having proved (lemma 1, proved by induction on cxte(t), using the theorem I) that if

t and a satify the theorem, then so does t[ a/x ], where a is any sequence of terms.

(3)

- The Church-Rosser theorem is proved by showing that ->

F

is confluent. This follows immediately from the standardisation theorem and the fact that ->

F

is strongly normalizing.

- The theorem IV is an immediate consequence of the following extension of the theorem II. First, a slight extension of the notion of redex is necessary to - I believe - better capture the notion of creation of a redex : a term (a b) is a (generalized) redex if a ->* λ x a'. For F Red(t), associate to every R in F a natural number. Define F developpements as follows : Recursively allow the reduction of the redex S iff the number associated to S is positive. If S is a residue of R, associate to S the same number as the one of R. If S has been created by the reduction of R ( and n is associated to R ) , associate (n-1) to S.

With this notion of developpement, every term is strongly normalizing and the proof is essentially the same as the one of the theorem II.

0 Définitions et notations

Les notions ( notamment celles de résidus ) et notations sont standards. Voir [Bar] ou [Kr]. L'application de u à v est notée (u v) ( voir [Bar] ). Le système de types simples avec intersection est le système appelé système D dans [Kr].

- t -> t' (resp t -> * t' ) signifie qu'on passe de t à t' par une (resp un nombre quelconque de ) β réductions . On utilisera indistinctement cette notation pour indiquer que t peut se réduire à t' ou pour représenter une réduction particulière ( dans ce cas on notera

lg(t->* t') la longueur de cette réduction ), le contexte indiquant clairement le sens.

- t -> R t' signifie qu'on passe de t à t' en réduisant le radical R . - cxté(t) représente la complexité de t .

- On note Red(t) l'ensemble des radicaux de t . soit F Red(t) : une suite - finie ou infinie - de réductions t = t

0

-> t

1

-> ... est un F développement de t ( et on la notera t ->

F t’ si elle est finie et se termine par t' ) ssi les radicaux réduits sont tous des résidus de radicaux dans F. t -> F t’ est un F développement complet de t si t' ne contient pas de ( résidus de ) radicaux de F.

- Une suite - finie ou infinie - de réductions t = t

0

-> R0 t

1

-> R1 ... est une réduction standard ( et on la notera t ->

st

t' si elle est finie et se termine par t' ) ssi il n'y a pas de couple (i,j) tel que i>j et R

i

est le résidu d'un radical de t

j

qui est à gauche de R

j

.

- on notera t ->

st,F

t' une chaine de réductions qui est à la fois une réduction standard et un F développement de t.

- Dans toute la suite a , b , ... représenteront des suites de termes . - on notera (u a

1

a

2

...a

n

) pour (...(u a

1

) a

2

) ...)a

n

)

Théorème 1 ( de standardisation )

Si t ->* t' alors t ->

st

t' . De plus cette preuve est constructive et si t -> F t’ alors la réduction standard obtenue est aussi un F développement de t .

Corollaire

Si t n'est pas fortement normalisable alors il existe une réduction standard infinie :

t = t

0

-> t

1

-> ...

(4)

Théorème 2 (des développements finis)

Soit F Red(t) : Il n'existe pas de F développement infini de t.

Théorème 3 ( confluence de la β − réduction )

Si t ->* t

1

et t ->* t

2

alors il existe t

3

tel que t

1

->* t

3

et t

2

->* t

3 .

Théorème 4 ( de normalisation forte )

Tout terme typable dans le système de type simple avec intersection est fortement normalisable .

Remarques : les preuves ci dessous " correspondent " d'une certaine maniere à celles qu'on peut trouver dans la thèse de JJ Levy ( [Le] ) dans un cadre étiqueté . Dans [Le] la standardisation n'est prouvée que dans le cas de termes fortement normalisables . La notion de radical généralisée introduite au § IV semble être la "bonne " notion quand on étudie la création de radicaux .

I Preuve du théorème 1 Lemme I.1 :

->

st

, ->

F

, ->

st,F

, passent au contexte , i.e (par exemple) si u->

st

u' , a ->

st

a' alors u[a/x] ->

st

u'[a'/x] , λ x u ->

st

λ x u' et (u a) ->

st

(u' a')

preuve : ( pour ->

st

, les autres sont identiques ) Le résultat est clair pour λ x u et (u a) ; pour u[a/x] on le prouve par récurrence sur (lg(u->

st

u'), cxté(u)) ordonné lexicographiquement .

- si u= λ y v ou u=(y v ) où y est une variable : évident

- si u=( λ y b c d ) : si le radical ( λ y b c) n'est pas réduit dans u->

st

u' le résultat est clair, sinon il est réduit en premier et on a u->( b[c/y] d )->

st

u' et u[a/x] -> ( b[c/y] d )[a/x])->

st

u'[a'/x] est - par hypothèse de récurrence - standard

preuve du théorème : par récurrence sur lg( t ->* t') ; il suffit de prouver : Lemme I.2

Si t ->

st

t

1

-> R t

2

alors t ->

st

t

2

.

Preuve : par récurrence sur (lg(t ->

st

t

1

), cxté(t) ) ordonné lexicographiquement . - si t= λ x u ou t = (x a ) le résultat est trivial .

- si t= ( λ x a b c ) ; soit S le radical ( λ x.a b)

- si S n'a pas été réduit dans t ->

st

t

1

alors t

1

= ( λ x a

1

b

1

c

1

) avec a->

st

a

1

, b->

st

b

1

, c ->

st

c

1 .

- si R est le résidu de S alors ( par le lemme I.1 ) t -> (a[b/x] c ) ->

st

(a

1

[b

1

/x] c

1

) = t

2

est une réduction standard .

- sinon R est un radical dans a

1

ou dans b

1

ou dans c

1

; supposons qu'il est

dans a

1

( les autres cas sont identiques) alors

(5)

a->

st

a

1

-> R a

2

et t

2

= ( λ x a

2

b

1

c

1

) ; par hypothèse de récurrence ( appliquée à a ->

st

a

1

-> R a

2

) on a a ->

st

a

2

et donc ( par le lemme I.1) t ->

st

t

2

.

- si S a été réduit dans t ->

st

t

1

: comme la réduction est standard, il a été réduit en premier donc : t -> ( a[b/x] c) ->

st

t

1

; par hypothèse de récurrence appliquée à ( a[b/x]

c ) ->

st

t

1

->

R

t

2

on a ( a[b/x] c) ->

st

t

2

et donc t ->

st

t

2

preuve du corollaire : à partir d'une suite infinie de réductions on en construit une qui est

standard en itérant le processus suivant : on regarde le radical ( λ x a b) le plus à gauche ;

s'il n'est pas réduit au cours de la réduction infinie, a ou b admet une réduction infinie et

on itère avec a ou b ; sinon on utilise le théorème pour obtenir une nouvelle suite infinie

de réductions dans laquelle ce radical est réduit en premier

(6)

II Preuve du théorème 2 Lemme II.1

Soit t un terme, a une suite de termes et F Red(t) Red( a) . Si t[ a / x ] a un F développement infini , alors il y en a un dans t ou dans l'un des a

i

.

Preuve : par récurrence sur cxté(t) .

- si t= λ x u ou si t=(y b ) et y n'est pas dans x : trivial

- si t=(x b ) : t[ a / x ] = (a b [ a / x ] ) or l'application qui est à la racine de (a b [ a / x ] ) ne peut être réduite car ce n'est pas un résidu d'un radical de F et on conclut par récurrence . - si t= ( λ y b d c ) , soit S le radical ( λ y b d)

- si aucun résidu de S n'est réduit, l'hypothèse de récurrence permet de conclure . - sinon, par le théorème 1 on peut supposer que S est réduit le premier donc t[ a / x ] -> ( b[ a / x ,d[ a / x ]/y] c [ a / x ] ) ->

F

...

Or l'application qui est à la racine de ( b[ a / x ,d[ a / x ]/y] c [ a / x ] ) ne peut être réduite car ce n'est pas un résidu d'un radical de F ; on a donc un F développement infini dans c [ a / x ] ou dans b[ a / x ,d[ a / x ]/y] et on conclut en utilisant l'hypothèse de récurrence

Preuve du théorème : par récurrence sur cxté(t) ; on suppose qu'il existe un F développement infini de t .

- si t= λ x u ou t = (x a ) le résultat est trivial . - si t= ( λ x a b c ) , soit S le radical ( λ x a b) .

- si aucun résidu de S n'est réduit, l'hypothèse de récurrence permet de conclure . - sinon on a t ->

F

t

1

= ( λ x a

1

b

1

c

1

) ->

F

(a

1

[b

1

/x] c

1

) ->

F

... ; par le théorème 1 on a t ->

st,F

(a

1

[b

1

/x] c

1

) ->

F

... et donc t-> (a[b/x] c ) ->

F

(a

1

[b

1

/x] c

1

) ->

F

...; or l'application qui est à la racine de (a[b/x] c ) ne peut être réduite car ce n'est pas un résidu d'un radical de F, on a donc un F développement infini dans c ou dans a[b/x] ; on conclut en utilisant l'hypothèse de récurrence et le lemme II.1

III Preuve du théorème 3 Lemme III.1

La cloture transitive d'une relation qui a la propriété de Church - Rosser a aussi cette propriété .

Preuve : trivial

En appliquant le lemme III.1 à ->

F

où F = Red(t) , il suffit de prouver : Lemme III.2

Si t ->

F

t

1

et t ->

F

t

2

alors il existe t

3

tel que t

1

->

F

t

3

et t

2

->

F

t

3

preuve : Soit t ->

F

t

1

et t ->

F

t

2

; soit F

i

= { R / R Red(t

i

), R résidu d'un radical dans F }

; par le lemme III.3 ci-dessous soit t

i

-> u

i

un F

i

développement complet de t

i,

alors t ->

t

1

->u

1

et t -> t

2

->u

2

sont des F développements complets de t donc u

1

= u

2

(7)

Lemme III.3

Pour tout t et F Red(t) il existe un F développement complet de t ; si t -> t

1

et t -> t

2

sont des F développements complets de t alors t

1

= t

2 .

preuve : L'existence est conséquence immédiate du théorème 2 . Unicité : par le théorème 1 il suffit de montrer que si t ->

st,F

t

1

et

t ->

st, F

t

2

sont des F développements complets alors t

1

= t

2

. La preuve - par récurrence sur ( lg(t ->

st,F

t

1

)+lg(t ->

st,F

t

2

) , cxté(t)) - est immédiate

IV Preuve du théorème 4

Le théorème 4 est un corollaire immédiat de la proposition IV.1 et du lemme IV.2 . La proposition IV.1 signifie - intuitivement - que si on autorise la réduction des radicaux créés jusqu'à un ordre marqué, alors le théorème des développements finis reste valide.

Définitions

1) un radical généralisé est un terme de la forme (a b) où a ->* λ x a'. On note GRed(t) l'ensemble des radicaux généralisés de t.

2) Soit t un terme . On note FGRed(t) l'ensemble des fonctions de domaine un sous ensemble de GRed(t) à valeurs dans N.

3) Soit t->

R

t' et S GRed(t') . S est créé par la réduction de R si R est de la forme ( λ x ... (a b) ... c), (a b) n'est pas un radical généralisé et S est (a[c/x] b[c/x]).

Remarque : cette notion n'est pas exactement la notion usuelle de création . Il y a - avec la notion usuelle - 3 situations de création de radicaux : R = ( λ x λ y a b c) et S = ( λ y a[b/x] c), R = (( λ x x) ( λ y a) b) et S = ( λ y a b) et enfin R = ( λ x ... (x a) ... λ y b) et S = ( λ y b a[ λ y b/x] ). On considère ici que dans les deux premieres situations il n'y a pas création : les radicaux - généralisés - étaient déja présents .

4) Soient t un terme et F FGRed(t) : une suite - finie ou infinie - de réductions t

= t

0

-> t

1

-> ... est un F développement de t ( et on la notera t -> F t’ si elle est finie et se termine par t' ) ssi pour tout radical R réduit φ (R) est défini et positif où, pour tout R GRed(t

k

), φ (R) est défini par récurrence sur k par:

- si R GRed(t

0

): φ (R)=F(R)

- si R GRed(t

k+1

) et R est un résidu de S GRed(t

k

) : φ (R) = φ (S) - si R est créé par la réduction de S : φ (R) = φ (S)-1.

( note : la notion de résidu - habituellement défini pour les radicaux - se généralise immédiatement aux radicaux généralisés)

5) Soient t un terme et F FGRed(t) : t est F fortement normalisable ssi t n'a pas de F développement infini; on note alors Long(F,t) la longueur du plus grand F développement de t ( le lemme de König montre que ce nombre existe ) .

Proposition IV.1

Soit t un terme et F FGRed(t). Alors t est F fortement normalisable.

Définition

On définit la hauteur ht(a) d'un type par :

(8)

- si a est atomique : ht(a) = 0

- si a = b->c ou a = b c : ht(a)=max(ht(b), ht(c) ) +1

Soit t un terme typé et R = (a b) un radical généralisé de t alors ht(R) = ht( α ) où

α est le type de a.

Lemme IV.2

Si t ->

R

t' et S GRed(t') est créé par R alors ht(S) < ht(R) . preuve : immédiat

Définitions

1) Soient t un terme, a une suite de termes, G FGRed(t), A FGRed( a ) et n un entier, on note Subst(t, n, G, [<x

1

,a

1

,A

1

>, ...]) la fonction F FGRed(t[ a / x ]) définie par F = G A {(R,n) / R GRed(t[ a / x ]) - GRed(t) - GRed( a ) }

2) Si F FGRed(t) et u est obtenu à partir de sous termes de t, on parlera encore - pour éviter d'alourdir les notations - de F développement de u au lieu de F' développement où F' = F (GRed(u) N)

Lemme IV.3

Soit t un terme et F FGRed(t) ; si t ->

F

t' il existe F' FGRed(t') tel que pour tout t" : t' ->

F'

t" ssi t -> t' -> t" est un F développement. On note F' = Res(F, t ->

F

t') preuve : immédiat

Lemme IV.4

Soit t un terme et F FGRed(t) ; si t ->

F

t' alors t ->

st,F

t' . preuve : Elle est identique à celle du théorème 1 .

On montre d'abord l'analogue du lemme I.1, i.e que si F FGRed(u), A FGRed(a), u -

>

st,F

u' et a ->

st,A

a' alors λ x u ->

st,F

λ x u', (u a) ->

st,F≈A

(u' a') et u[a/x] ->

st,F≈A

u'[a'/x]

. On montre ensuite l'analogue du lemme I.2, i.e que si F FGRed(t) et t ->

st

t

1

-> R t

2

est un F développement de t alors t ->

st,F

t

2

. On vérifie simultanément que si t ->

st

,F t

1

est la standardisation de t ->F t1 alors Res( F, t ->F t1) = Res (F, t ->

st,

F t

1

) . Pour le dernier cas étudié dans cette preuve on applique l'hypothèse de récurrence à ( a[b/x] c ) -

>

st

t

1

->

R

t

2

et F'= Res(F, t ->

F

( a[b/x] c ) ) . Lemme IV.5

Soient t un terme, a une suite de termes, G FGRed(t), A FGRed( a ) et n un entier . Si t (resp a ) est G (resp A ) fortement normalisable alors t[ a / x ] est Subst(t, n, G, [< x , a , A >]) fortement normalisable.

preuve : par récurrence sur (n, Long(G,t), cxté(t)). Raisonnons par l'absurde : - si t = λ y u ou t = (y b ) et y n'est pas dans x le résultat est trivial.

- si t= ( λ y b c d ) : Si le radical ( λ y b c ) n'est pas réduit le résultat est trivial, sinon - par le lemme IV.4 - on peut supposer qu'il est réduit en premier : t[ a / x ] -> (b[c/y] d) [ a / x ]-

>... et on conclut par l'hypothèse de récurrence car Long(Res(G, t-> (b[c/y] d)), (b[c/y]

d)) < Long(G,t).

(9)

- si t = (x b c ) : le seul cas non trivial est celui où il existe un A développement de a aboutissant à λ y d et que le radical ( λ y d b[ a / x ]) est réduit. Par le lemme IV.4 on peut supposer que le début du développement est : t[ a / x ] ->* ( λ y d b[ a / x ] c [ a / x ]) -

>(d[b[ a / x ]/y] c [ a / x ]) ->... ; la suite est un D développement de (z c )[ a / x , d[b[ a / x ]/y]/z]

où D = Subst((z c ), n, G, [< x , a , A >,<z, d[b[ a / x ]/y], B>]) où B = Subst(d, n-1, Res(A,a-

> λ y d), [<y,b[ a / x ],C>]) où C = Subst(b,n,G,[< x , a , A >]). L'hypothèse de récurrence permet de conclure successivement que b[ a / x ] est C fortement normalisable, que d[b[ a / x ]/y] est B fortement normalisable et enfin que (d[b[ a / x ]/y] c [ a / x ]) est D fortement normalisable

preuve de la proposition IV.1 : par récurrence sur cxté(t) ; on suppose qu'il existe un F développement infini de t .

- si t= λ x u ou t = (x a ) le résultat est trivial . - si t= ( λ x a b c ) , soit S le radical ( λ x a b) :

- si aucun résidu de S n'est réduit, l'hypothèse de récurrence permet de conclure . - sinon par le lemme IV.4 on peut supposer que S est réduit en premier : t ->(

a[b/x] c ) ->

F

... . Soit n = F(( λ x a b)); l'hypothèse de récurrence et le lemme IV.5 permettent de conclure

Remarque

On peut également étendre le théorème des développements finis de la maniere suivante . Soient t un terme et F Red(t) ; il n'existe pas de F+ développement infini de t où dans un F+ développement on s'autorise à réduire les radicaux S créés - au sens usuel du terme - par la réduction de radicaux R dans l'une des situations suivantes : - R = ( λ x λ y a b c) et S = ( λ y a[b/x] c)

- R = (( λ x x) ( λ y a) b) et S = ( λ y a b) . Références

[Bar] H Barendregt : The lambda calculus, its syntax and semantics North Holland 1984

[Kr] J L Krivine : Lambda Calcul, types et modèles Masson 1992

[Le] J J Lévy : Réductions correctes et optimales dans le lambda calcul ( thèse Université Paris 7, 1978 )

R David Laboratoire de Mathématiques

Université de Chambéry

73376 Le Bourget du Lac (France)

email [email protected]

tel (33) 79 75 87 17

fax (33) 79 75 87 42

Références

Documents relatifs

for the heat equation (that is δ = 0 in (2); there, the authors prove a Liouville Theorem which turns to be the trivial case of the Liouville Theorem proved by Merle and Zaag in

For the sake of completeness, Figure 6 sketches the ordinary CBV translation from λ -terms (possibly with iterated applications) to proof nets (including the case for

Using, on the one side, a general result in linear algebra due to Klingenberg (see [Kli54]) and on the other side, a theorem on the holonomy of pseudo-Riemannian ma- nifolds

The Fundamental Theorem of Calculus

Since the proofs in the implicative propositional classical logic can be coded by Parigot’s λµ-terms and the cut elimination corresponds to the λµ-reduction, the result can be seen as

The main result of this paper is that B ¨ohm’s theorem fails in the ëì-calculus : We can find two closed terms in canonical normal form that are not âçíìñè -equivalent but

For now, we’ll just say that the correct way to define improper integrals is as a limit of well–defined approximating integrals. The approximating integrals have restricted domains

We give a simple proof of the “tree-width duality theorem” of Seymour and Thomas that the tree-width of a finite graph is exactly one less than the largest order of its brambles..