• Aucun résultat trouvé

Continuit´ e et calculabilit´ e

Le fait de pouvoir interpr´eter des sch´emas r´ecursifs partiels g´en´eraux permet d’imaginer le paradigme suivant : notre s´emantique ne donne que des fonctions continues, ce que l’on va prouver un peu plus bas. De fa¸con plus g´en´erale, le credo est,les fonctions calculables sont les fonctions continues.

Rappelons que pour une fonctionf : Env →Env, ˆetre continue veut dire ˆ La continuit´e est donc dans ce cas exactement le fait que l’on peut calcu-ler par limite d’approximations finies ; ceci est directement li´e aux sch´emas de d´efinition r´ecursifs.

Prouvons dans un premier temps la croissance de l’interpr´etation des expres-sions. Les expressions arithm´etiques a∈AExpr ou bool´eennes b∈BExpr :

[[a]] : Env→Val

[[b]] : Env→ {true, f alse}

sont croissantes, par r´ecurrence structurelle sur les expressions : si σ est une extension deρ, [[a]]ρest d´efinie (6=⊥) implique [[a]]σd´efinie ; de mˆeme pour [[b]].

On prouve ais´ement un peu plus, que [[a]] et [[b]] sont continues.

Venons en maintenant `a la croissance de l’interpr´etation de l’affectation. Soit φ≤ψ∈Env, alors [[v=e]]φ=φ[[[e]]σ/v], o`u, pouru, v∈Var etn∈Val :

N´ecessairement : φ[n/v] restriction de ψ[n/v] si φrestriction de ψ. On prouve

´

egalement ais´ement que [[v = e]] est continue. C’est en effet `a v´erifier pour

6.5. CONTINUIT ´E ET CALCULABILIT ´E 111 chaque variableu: enu=vcons´equence de la continuit´e de [[e]] et enu6=v de par la continuit´e de l’identit´e.

Examinons maintenant la croissance de l’interpr´etation des tests. Ceci se prouve par r´ecurrence sur les termes. Supposons que [[p1]], [[p2]] sont croissantes ; on consid`ere le termei∼ifb p1 elsep2 :

De mˆeme, ceci est continu. C’est en fait ´evident, il suffit de s´eparer le cas [[b]]ρ= truedu cas [[b]]ρ=f alse.

Enfin, pour ce qui est de l’interpr´etation des boucles, on proc`ede par r´ ecur-rence sur les termes c du langage. On suppose [[c]]∈ D0 (continue), alors pour φ∈ D0 (continue) :

est continue (car la compos´ee de fonctions continues est continue).

Exercices

1. Soient D et E deux CPOs et e∈E. Soitf la fonction deD vers E qui associe `a tout ´el´ement deD la constantee. Prouver quef est continue.

2. SoitN le domaine des entiers naturels plus les deux ´el´ements>et⊥avec l’ordre partiel d´efini par :

– Pour toutx,⊥ ≤x; – Pour toutx,x≤ >;

– Pour toutx, yentiers naturels, on n’a ni x≤y niy≤x.

Prouver queN est un CPO. Est-ce un treillis complet ?

3. Soitf une fonction partielle deNversN, son extension deN versN est la fonction :f(⊥) =⊥,f(x) =⊥sif(x) est non-d´efinie etf(x) =f(x) sif(x) est d´efinie. Prouver quef est continue.

4. D´efinir un produit de CPOs v´erifiant le diagramme d´efinissant les types produits du chapitre 4. Est-ce un CPO ? Quand on part de treillis, et de treillis complets, obtient-on des treillis, et des treillis complets, respecti-vement ?

5. Montrez que les fonctions de curryfication et l’´evaluation d´efinis au cha-pitre 9, o`u X, Y et Z sont des CPOs, et X → Y d´enote le CPO des

112 CHAPITRE 6. S ´EMANTIQUE D ´ENOTATIONNELLE fonctions continues de X `a Y, etX ×Y est le CPO produit d´efini juste avant :

eval: (X →Z)×X→Z

curry: ((X×Y)→Z)→(X→(Y →Z)) sont continues.

6. Calculer le plus petit point fixe, par le th´eor`eme de Kleene, de la fonc-tionnelle associ´ee au programme (par la s´emantique d´enotationnelle du cours) :

Y =1;

w h i l e ( X >0) { Y = Y * X ; X = X -1;

}

7. (++) Essayez de donner une s´emantique d´enotationnelle de PCF typ´e, en vous inspirant de la s´emantique d´enotationnelle du langage imp´eratif de ce chapitre.

Chapitre 7

Logique, mod` eles et preuve

On en arrive `a bientˆot pouvoir raisonner (et prouver) sur les programmes, comme sur des objets math´ematiques dont vous avez plus l’habitude, grˆace `a la s´emantique du chapitre pr´ec´edent. Avant cela, il nous faut parler de logique, format naturel dans lequel ´ecrire les preuves. On commence par d´efinir dans ce chapitre quelques concepts ´el´ementaires en logique des pr´edicats du premier ordre. Cette logique nous sera ´egalement utile au chapitre 9 o`u elle nous per-mettra de pr´esenter l’isomorphisme de Curry-Howard.

La logique a ´et´e cr´e´ee dans un effort de formalisation des math´ematiques, si l’on ignore comme ici sa partie philosophique. En particulier, les axiomes de l’arithm´etique de P´eano, la th´eorie des ensembles de Zermelo-Fraenkel, sont des th´eories exprimables dans la logique des pr´edicats du premier ordre.

7.1 Syntaxe de la logique des pr´ edicats du pre-mier ordre

Celle-ci est d´efinie syntaxiquement comme suit :

– Elle comprend des op´erateurs binaires (infixe)∧(et),∨(ou),⇒ (implica-tion),⇔ (´equivalence), unaire¬ (n´egation), 0-aire (constantes) 1 (vrai), 0 (faux) et un ensemble de variables infini

– Les quantificateurs : ∀ (pour tout), ∃ (il existe), des pr´edicats de base, d’arit´e variable, P(x), Q(x, y),x≤y, x=y etc. et des fonctions d’arit´e variable ´egalement,f(x),g(x, y),x2,x−y etc.

On appelletermesde la logique des pr´edicats les ´el´ements de syntaxe form´es

`

a partir des variables, et inductivement, par application r´ep´et´ee de fonctions.

Autrement dit, une variable xest un terme, et sit1, . . . , tn sont des termes, et f une fonction n-aire, alors f(t1, . . . , tn) est un terme. On appelle formule en logique des pr´edicats les ´el´ements de syntaxe d´efinis comme suit :

– P(t1, . . . , tn) est une formule quandP est un pr´edicatn-aire, ett1, . . . , tn sont des termes

– ¬Φ est une formule quand Φ est une formule 113

114 CHAPITRE 7. LOGIQUE, MOD `ELES ET PREUVE – Φ∧Ψ, Φ∨Ψ, Φ⇒Ψ, Φ⇔Ψ sont des formules quand Φ et Ψ sont des

formules

– ∀x.Φ et ∃x.Φ sont des formules quand Φ est une formule

Dans une formule, on dit qu’une variable estlibrequand elle n’est pas quan-tifi´ee. A contrario, une variable estli´eequand elle est quantifi´ee. Par exemple, dans la formule∀x.P(x, y, z)xest li´ee, yet zsont libres.

7.2 S´ emantique de la logique des pr´ edicats du