Article de reference

Type inductif

En théorie des types , un système possède des types inductifs s'il offre la possibilité de créer un nouveau type à partir de constantes et de fonctions générant des termes de ce...

En théorie des types , un système possède des types inductifs s'il offre la possibilité de créer un nouveau type à partir de constantes et de fonctions générant des termes de ce type. Cette fonctionnalité joue un rôle similaire à celui des structures de données dans un langage de programmation et permet à une théorie des types d'intégrer des concepts tels que les nombres , les relations et les arbres . Comme son nom l'indique, les types inductifs peuvent être autoréférentiels, mais généralement uniquement de manière à autoriser la récursivité structurelle .

L'exemple classique consiste à encoder les nombres naturels à l'aide de l'encodage de Peano . Il peut être défini dans Rocq (anciennement Coq ) comme suit :

nat inductif : Type := | O : nat | S : nat -> nat .

Ici, un nombre naturel est créé soit à partir de la constante « O » (représentant zéro), soit en appliquant la fonction « S » à un autre nombre naturel. « S » est la fonction successeur qui représente l'ajout de un à un nombre. Ainsi, « S O » vaut un, « S (S O) » vaut deux, « S (S (S O)) » vaut trois, et ainsi de suite.

Depuis leur introduction, les types inductifs ont été étendus pour encoder de plus en plus de structures, tout en restant prédicatifs et en prenant en charge la récursivité structurelle.

Principe d'induction

Les types inductifs sont généralement accompagnés d'une fonction permettant de prouver leurs propriétés. Ainsi, « nat » peut être accompagné (en syntaxe Rocq) de :

nat_ind : ( pour tout P : nat -> Prop , ( P O ) -> ( pour tout n , P n -> P ( S n )) -> ( pour tout n , P n )).

En d'autres termes : pour tout prédicat « P » sur les nombres naturels, étant donné une preuve de « P ⊆ 0 » et une preuve de « P ∩ n → P ∩ (n+1) », on obtient une preuve de « pour tout n, P ∩ n ». C'est le principe d'induction classique pour les nombres naturels.

Mises en œuvre

Types W et M

Les types W sont des types bien fondés en théorie des types intuitionnistes (TTI). Ils généralisent les nombres naturels, les listes, les arbres binaires et d'autres types de données « en forme d'arbre ». Soit univers de types . Étant donné un type : famille dépendante : arité (potentiellement infinie) de chaque constructeur. Les types W (resp. les types M) peuvent également être compris comme des arbres bien fondés (resp. non bien fondés) dont les nœuds sont étiquetés par des éléments : foncteur polynomial .

Soient 0 , 1 , 2 , etc. des types finis avec des habitants 1 <sub>1</sub> : 1 , 1<sub> 2</sub> , 2<sub>2 </sub> : 2 , etc. On peut définir les nombres naturels comme le type W : 2 2 ) = 0 (représentant le constructeur pour zéro, qui ne prend aucun argument), et 2 ) = 1 (représentant la fonction successeur, qui prend un argument).

On peut définir des listes sur un type : 1 est le seul habitant de 1. La valeur deLe constructeur des éléments d'un type W générique

The elimination rule for W-types works similarly to structural induction on trees. If, whenever a property (under the propositions-as-types interpretation)

In extensional type theories, W-types (resp. M-types) can be defined up to isomorphism as initial algebras (resp. final coalgebras) for polynomial functors. In this case, the property of initiality (res. finality) corresponds directly to the appropriate induction principle. In intensional type theories with the univalence axiom, this correspondence holds up to homotopy (propositional equality).

M-types are dual to W-types, and represent coinductive (potentially infinite) data such as streams. M-types can be derived from W-types.

Mutually inductive definitions

This technique allows some definitions of multiple types that depend on each other. For example, defining two parity predicates on natural numbers using two mutually inductive types in Rocq:

Inductiveeven:nat->Prop:=|zero_is_even:evenO|S_of_odd_is_even:(foralln:nat,oddn->even(Sn))withodd:nat->Prop:=|S_of_even_is_odd:(foralln:nat,evenn->odd(Sn)).

Induction-recursion

Induction-recursion started as a study into the limits of ITT. Once found, the limits were turned into rules that allowed defining new inductive types. These types could depend upon a function and the function on the type, as long as both were defined simultaneously.

Universe types can be defined using induction-recursion.

Induction-induction

Induction-induction allows definition of a type and a family of types at the same time. So, a type .

Higher inductive types

Il s'agit d'un domaine de recherche actuel en théorie des types homotopiques (HoTT). Celle-ci diffère de la théorie des types inductifs (ITT) par son type identité (égalité). Les types inductifs supérieurs définissent un nouveau type à l'aide de constantes et de fonctions qui créent des éléments de ce type, ainsi que de nouvelles instances du type identité qui les relient.

Un exemple simple est le type : cercle

et une boucle ;

: base = base .

L'existence d'un nouveau constructeur pour le type identité fait

  • Univalent Foundations Program (2013). Homotopy Type Theory: Univalent Foundations of Mathematics. Institute for Advanced Study.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index