• Aucun résultat trouvé

Retour sur Curry-Howard On peut prendre System-F comme une logique:

N/A
N/A
Protected

Academic year: 2022

Partager "Retour sur Curry-Howard On peut prendre System-F comme une logique:"

Copied!
12
0
0

Texte intégral

(1)

Retour sur Curry-Howard

On peut prendre System-F comme une logique:

Correspond (presque) `a la logique classique propositionnelle

Qu’en est-il de la logique des pr ´edicats?

Comment dire (et prouver):

∀x, y ∈ N, x N + y = y + x

?

Stefan Monnier IFT-6172 1

(2)

Nombres naturels et addition

Nat : Type;

type Nat

| zero

| succ Nat;

_+_ : Nat → NatNat;

x + y = case x

| zero ⇒ y

| succ n ⇒ succ (n + y);

(3)

Nombres naturels et addition de Church

Nat : Type;

Nat = (t : Type) → t(tt)t;

zero = λ t (x:t) (f:t → t)x;

succ n = λ t (x:t) (f:t → t) → f (n t x f);

_+_ : Nat → NatNat;

x + y = x Nat y succ;

Stefan Monnier IFT-6172 3

(4)

L’ ´egalit ´e, comme un type?

Il faut d ´efinir une ´egalit ´e:

_=_ : Nat → NatType;

Mais on sait que

Nat : Type

et

Type :

!

Donc il faut dans

R

qqch du genre

( Type , , ?)

En clair: des fonctions de valeurs `a types!

Aussi connu comme: des types d ´ependents

(5)

Le calcul des constructions

CoC = System-Fω + types d ´ependents:

({∗, }, {∗ : }, {(∗, ∗, ∗), ( , ∗, ∗), ( , , ), (∗, , )})

Encore strongly normalizing

logique coh ´erente!

Correspond `a une sorte de logique des pr ´edicats d’ordre sup ´erieur Dor ´enavant,

(x : τ

1

) → τ

2 n’est plus n ´ecessairement

τ

1

→ τ

2

Cependant

t

est encore effac¸able dans

λ(t : κ) → e

Stefan Monnier IFT-6172 5

(6)

Egalit ´e de Leibniz ´

x = y ⇔ ∀P.P (x) ⇒ P (y )

Pour le cas qui nous int ´eresse:

(x = y) = (P : Nat → Type)P xP y;

Cas de base: preuve de la r ´eflexivit ´e et commutativit ´e

refl : (x : Nat) → (x = x);

refl x = λ (P : NatType) → λ (p : P x)p;

comm : (x = y) → (y = x);

comm p = p ( λ (y’ : Nat) → (y’ = x)) (refl x);

(7)

Limites de l’encodage impr ´edicatif

Essayons de prouver:

0 6= 1

obvious? : (0 = 1) → ⊥ ;

obvious? = λ (p : (0 = 1)) → p ( λ (x : Nat)

→ x Type Unit ( λ _ → ⊥ )) unit;

Le premier argument de

x

doit ˆetre un type, pas un kind!

Stefan Monnier IFT-6172 7

(8)

D’autres PTS

λ∗

est un PTS extr ˆeme; aussi d ´ecrit par

Type : Type λ ∗ ≡ ({∗}, {∗ : ∗}, {(∗, ∗, ∗)})

System-U: System-Fω o `u STLC est remplac ´e par System-F!

({∗, , 4}, {∗ : , : 4},

{(∗, ∗, ∗), ( , ∗, ∗), ( , , ), (4, , )})

Ni l’un ni l’autre ne sont strongly normalizing On peut y trouver un terme de type

!

Mais c’est toujours un terme qui ne termine pas!

(9)

Reality check

Pas strongly normalizing

typage non-d ´ecidable

Pas grave en soi

Effets de bord

casse tout (e.g readNat

"N=" =

readNat

"N="

) Preuves qui ne terminent pas

pas effac¸able!

Stefan Monnier IFT-6172 9

(10)

Impr ´edicativit ´e

Dans System-F la deuxi `eme r `egle est impr ´edicative:

Unit = (t : Type) → tt;

unit = λ (t : Type) → λ (x : t)x;

unitUnit = unit Unit;

Le quantificateur

s’applique `a lui-m ˆeme!

La repr ´esentation extensionnelle de id est tr `es infinie:

elle associe `a chaque valeur, cette m ˆeme valeur

elle associe aussi id `a id

C’est une fonction infinie qui se contient elle-m ˆeme!

(11)

System-F ω pr ´edicatif

({∗, }, {∗ : },

{(∗, ∗, ∗), ( , ∗, ), ( , , )})

Une fonction comme id vit alors dans la sorte

:

On ne peut plus passer son type `a un

Λ

On ne peut plus la passer en argument `a une fonction

Cependant, on peut l’appeler exactement comme avant

id

Int

est une fonction normale (dans la sorte

)

E.g. on peut encore faire:

id (Int → Int) (id Int)

Stefan Monnier IFT-6172 11

(12)

PTS avec univers

Eviter l’impr ´edicativit ´e excessive de´

λ∗

par stratification:

({ Type n | n ∈ N}, N

{ Type n

1

: Type n

2

| n

2

= n

1

+ 1},

{( Type n

1

, Type n

2

, Type n

3

) | n

3

=

max

(n

1

, n

2

)})

Pas d’impr ´edicativit ´e du tout

Type d’une fonction toujours “plus haut” que ses arguments Syst `eme strongly normalizing et donc logique coh ´erente

Variantes: universe inclusion, universe polymorphism

Références

Documents relatifs

C’est que la correspondance de Curry-Howard ne donne un programme à partir d’une preuve qu’en logique pure c’est-à-dire sans axiome.. Il faut la compléter par des

En fait c’est un cours sur la r´ ecursivit´ e, les r´ ef´ erences, et la preuve de programmes, revisit´ ees dans les langages fonctionnels!. C’est aussi l’occasion de voir

In Figure 1 we define a type assignment for lambda terms, called proof terms, which is isomorphic to natural deduction for intuitionistic logic extended with Dummett’s axiom.. We

After completing the proofs of our current conjectures, we want to extend our language to linear combinations of terms and coinductive constructions in order to study purely

• En premier lieu, on se reportera à la circulaire rectorale annuelle qui organise la collecte des demandes de retraite (ne pas chercher d’instructions pour les mères de trois

Le suivi à long terme de cette maladie nécessite une réévaluation régulière et doit être soutenu par un diététicien et par les associations des intolérants au

logic focuses on propositions (types) type theory focuses on programs (proofs). non-trivial type systems allow non-terminating programs such terms can be

logic focuses on propositions (types) type theory focuses on programs (proofs). non-trivial type systems allow non-terminating programs such terms can be