Les types dépendants
Yves Bertot
Familles de types
IReprésenter des collections de types A1,A2,...
IExemple : tableaux de longueur 1, 2, . . .
IAussi : nombres inférieurs à 1, 2, . . .
IUtiliser des fonctions de type nat -> Type pour représenter
ces familles
IZarray : nat -> Type
Ibound : nat -> Type
IChoix arbitraire pour le type des indices
IPas nécessairement un type de nombres
IN’importe quel type déjà défini
Fonctions à type dépendant
IPossibilité de définir des fonctions sur les types indicés
Iread2 : Zarray 2 -> bound 2 -> Z
Ipermet par exemple de décrire l’accès sans erreur entre les
bornes d’un tableau
ISuggère l’existence de familles de fonctions à type indicé
Iread3 : Zarray 3 -> bound 3 -> Z
Iread4 : Zarray 4 -> bound 4 -> Z
I...
ILa famille de fonctions peut directement être représentée
comme une fonction
ISi iest un indice de type nat read i doit avoir le type
Zarray i -> bound i -> Z
IBesoin d’une notation nouvelle pour le type de cette nouvelle
fonction
Iread : forall i:nat, Zarray i -> bound i -> Z
Le type produit dépendant
INotation forall x : A, E x
IDécrit le type d’une fonction qui attend un argument de type A
ILe type de retour dépend de la valeur en entrée
Isi faletypeforall x : A, E x, si l’expression baletype
A, alors l’expression fbaletypeEb
IExemple avec read
Iread : forall i:nat, Zarray i -> bound i -> Z
Iread 2 : Zarray 2 -> bound 2 -> Z
Bonne formation du produit dépendant
IConditions pour que l’expression forall x : A, E x soit
bien formée
IIl faut que Asoit un type (de type Set,Type,Prop),
IIl faut que Exsoit un type (de type Set,Type,Prop)dèsque
xde type A
ISi Zarray et bound ont le type Type
IDès que ia le type nat,Zarray i et bound i ont le type
Type,
IAlors Zarray i -> bound i -> Z a le type Type,
IAlors forall i : nat, Zarray i -> bound i -> Z est
bien formé
Iforall i : nat, Zarray i -> bound i -> Z a le type
Type
1 / 51 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !