Quel est le rôle de la prédicativité dans les définitions inductives dans la théorie des types?

16

Nous voulons souvent définir un objet selon certaines règles d'inférence. Ces règles désignent une fonction génératrice qui, lorsqu'elle est monotone, donne un point moins fixe . Nous prenons pour être la "définition inductive" de . De plus, la monotonie de nous permet de raisonner avec le "principe d'induction" pour déterminer quand un ensemble contient (c'est-à-dire quand une propriété détient universellement ).UNEUFμFUNE: =μFUNEFUNEUNE

En Coq, cela correspond à l'écriture d'une de avec des termes d'introduction explicites. Bien que cette définition désigne une fonction particulière , cette fonction n'est pas nécessairement monotone. Coq utilise donc quelques vérifications syntaxiques pour garantir la "bonne forme" de la définition. Dans une certaine approximation, il rejette les occurrences de en positions négatives dans les types de termes d'introduction.jenuctjeveUNEFUNE

(Si ma compréhension jusqu'à présent est défectueuse, veuillez me corriger!)

Tout d'abord, quelques questions dans le contexte de Coq:

1) La vérification syntaxique dans Coq sert-elle simplement à garantir que la définition de est prédicative ? (Dans l'affirmative, l'imprédicativité est-elle la seule façon dont la définition serait mal définie?) Ou vérifie-t-elle la monotonie? (En conséquence, la non-monotonie peut-elle la tuer?)UNE

2) Est -ce que cette occurrence négative de implique nécessairement que la définition de l » est imprédicative / non-monotones? Ou est-ce que Coq est tout simplement incapable de vérifier qu'il est bien défini dans ce cas?AUNEUNE

Et plus généralement:

3) Quelle est la relation entre la prédicativité d'une définition inductive et la monotonie de la fonction génératrice de cette définition? Sont-ils les deux faces d'une même pièce? Sont-ils sans rapport? Informellement, lequel importe le plus?

Scott Kilpatrick
la source

Réponses:

14

Non, dans ce cas, la prédicativité et la monotonie ne sont pas étroitement liées.

Le contrôle de positivité dans Coq / Adga sert à vous assurer que vous prenez le point le moins fixe d'une chose monotone, à peu près.

Voici comment penser les types inductifs en termes de réseaux et d'opérateurs monotones. Rappelons que le théorème de Knaster-Tarski dit que sur un réseau complet , tout opérateur monotone f : L L a un point μ ( f ) le moins fixe . Ensuite, nous pouvons considérer les types dans une théorie des types comme formant un réseau sous prouvabilité. C'est de type S est inférieure à T si la vérité de S implique celle de T . Maintenant, ce que nous aimerions faire, c'est prendre un opérateur monotone F sur les types, et utiliser Knaster-Tarski pour obtenir une interprétation du point le moins fixe de cet opérateurLf:LLμ(F)STSTF . μ(F)

Cependant, les types dans la théorie des types ne sont pas seulement un réseau: ils forment une catégorie. Ainsi, compte tenu de deux types et T , il y a potentiellement plusieurs façons de S à être en dessous de T , avec une façon pour chaque épreuve e : S T . Un opérateur de type F doit donc également faire quelque chose de sensé sur ces preuves. La généralisation appropriée de la monotonie est la fonctorialité . Autrement dit, nous voulons que F ait un opérateur sur les types, et également une action sur les preuves, de sorte que si e : S T , alors F (STSTe:STFFe:ST .F(e):F(S)F(T)

Maintenant, la fonctorialité est préservée par les sommes et les produits (par exemple, si et G sont des endofoncteurs sur les types, alors F + G et F × G (agissant de façon ponctuelle) sont également des foncteurs sur les types (en supposant que nous avons des sommes et des produits dans notre algèbre de Cependant, il n'est pas préservé par l'espace de fonction, car le bifoncteur exponentiel F G est contravariant dans son argument de gauche. Ainsi, lorsque vous écrivez une définition de type inductif, vous définissez un foncteur dont le point le moins fixe est. Pour vous assurer qu'il s'agit bien d'un foncteur, vous devez exclure les occurrences du paramètre récursif sur le côté gauche des espaces fonctionnels --- d'où la vérification de la positivité.FGF+GF×GFG

L'imprédicativité (au sens du système F) est généralement évitée, car c'est un principe qui vous oblige à choisir entre la logique classique et les modèles de théorie des ensembles. Vous ne pouvez pas interpréter les types comme des ensembles dans la théorie des ensembles classiques si vous avez une indexation de style F. (Voir le fameux "Le polymorphisme n'est pas un ensemble théorique" de Reynolds.)

De façon catégorique, l'imprédicativité de style F indique que la catégorie de types et de termes forme une petite catégorie complète (c'est-à-dire que les homs et les objets sont tous les deux des ensembles, et les limites de tous les petits diagrammes existent). Classiquement, cela oblige une catégorie à être un poset. Beaucoup de constructivistes sont constructifs parce qu'ils veulent que leurs théorèmes tiennent dans plus de systèmes que la simple logique classique, et donc ils ne veulent rien prouver qui serait classiquement faux. Par conséquent, ils se méfient du polymorphisme imprédicatif.

Cependant, le polymorphisme vous permet de dire de nombreuses conditions qui sont classiquement "grandes" en interne à votre théorie des types - et la positivité en fait partie! Un opérateur de type est fonctorial, si vous pouvez produire un terme polymorphe:F

Fmap:α,β.(αβ)(F(α)F(β))

Voyez comment cela correspond à la fonctorialité? IMO, ce serait une très bonne option à avoir dans Coq, car cela vous permettrait de faire de la programmation générique beaucoup plus facilement. La nature syntaxique du contrôle de positivité est un gros obstacle à la programmation générique, et je serais heureux d'échanger la possibilité d'axiomes classiques pour des programmes fonctionnels plus flexibles.

EDIT: La question que vous posez sur la différence entre Prop et Set vient du fait que les développeurs de Coq veulent vous permettre de penser aux théorèmes de Coq en termes naïfs de théorie des ensembles si vous le souhaitez, sans vous forcer à le faire. Techniquement, ils divisent Prop et Set, puis interdisent aux ensembles de dépendre du contenu informatique de Prop.

Vous pouvez donc interpréter Prop comme des valeurs de vérité dans ZFC, qui sont les booléens true et false. Dans ce monde, toutes les preuves de propositions sont égales, et vous ne devriez donc évidemment pas pouvoir vous appuyer sur la preuve d'une proposition. L'interdiction des ensembles en fonction du contenu informatique des preuves de Prop est donc tout à fait sensée. De plus, le réseau booléen à 2 éléments est évidemment un réseau complet, il devrait donc prendre en charge l'indexation imprédicative, car il existe des rencontres arbitraires à valeurs définies. La restriction de prédicativité sur les ensembles provient du fait (mentionné ci-dessus) que l'indexation de style F est dégénérée dans les modèles classiques de la théorie des ensembles.

Coq a d'autres modèles (c'est une logique constructive!) Mais le fait est que tout prêt, il ne prouvera jamais quoi qu'un mathématicien classique serait perplexe.

Neel Krishnaswami
la source
Merci pour votre réponse, Neel. Votre définition de «définition inductive» semble correspondre davantage à l' approche de «l'algèbre initiale »: au lieu de fonctions monotones (qui ne disent rien des preuves et du contenu de calcul), nous nous intéressons aux (la notion plus générale de) foncteurs. Donc, plutôt que de vérifier la monotonie, Coq vérifie vraiment la fonctorialité. Cependant, si la prédicativité n'est pas en cause, pourquoi Coq fait-il une distinction entre la vérification d'occurrence positive pour les objets définis dans P r o p et ceux dans S e t ou T y p e ? FPropSetType
Scott Kilpatrick
Je ne comprends pas votre question: Coq déteste la Inductive Blah : Prop := Foo : (Blah -> Blah) -> Blahmême chose qu'autre chose?
Neel Krishnaswami
1
Ah, je prends peut-être le contrôle de positivité pour un autre contrôle lié à l'imprédicativité. Tenez compte Inductive prop : Prop := prop_intro : Prop -> prop.contre Inductive set : Set := set_intro: Set -> set.. Pourquoi la distinction si la prédicativité ne concerne pas la définition inductive?
Scott Kilpatrick
@ScottKilpatrick: c'est en effet un contrôle différent, et sur la (im) prédicativité. Les types Sigma forts imprédicatifs permettent d'encoder le paradoxe de Girard, donc un type de données stockant un membre d'un univers, par exemple Type@{i}, doit vivre dans un univers plus grand, au moins Type@{i+1}.
Blaisorblade
6

Il existe un lien très profond entre les définitions inductives et l'imprédicativité, mais je crois comprendre que dans le contexte de ce dont vous parlez (im) la prédicativité n'est pas particulièrement pertinente et que le test vise uniquement à garantir la monotonie, de sorte que la théorie du point fixe peut être appliqué, à savoir que le principe d'induction est bien défini. (Je suis prêt à être corrigé sur ce point.)

La relation entre l'imprédicativité et les définitions inductives est explorée dans cet exposé de Coquand. Il revient à certains résultats des années 50 de G. Takeuti que les définitions imprédicatives peuvent être réduites à des définitions inductives. Le livre

  • Théorie de la preuve des sous-systèmes d'analyse imprédicatifs - Monographies et manuels de sciences physiques 2 par W. Buchholz, K. Schutte

donne une bonne analyse du sujet, si vous pouvez mettre la main dessus. Ces diapositives donnent un aperçu.

Dave Clarke
la source
4

Pour compléter l'excellente explication de Neil, l'imprédicativité a un sens "doux": la définition de décors ou de collections en utilisant une référence à eux-mêmes. Dans ce sens:

Inductive Lam : Set :=
| Var : Nat -> Lam
| App : Lam -> Lam -> Lam
| Abs : (Lam -> Lam) -> Lam

est une définition imprédicative, car elle définit un type inductif, Lam utilisant un espace de fonction (Lam -> Lam) qui se réfère à la collection elle-même. Dans cette situation, l'imprédicativité est néfaste : il est possible d'utiliser le théorème de Cantor pour prouver Faux. En fait, c'est la même marque d'imprédicativité qui exclut la théorie naïve des ensembles comme une base cohérente pour les mathématiques. Il est donc interdit dans Coq. Une autre forme d'imprédicativité est autorisée, comme vous le savez:

Definition Unit : Prop := forall X:Prop, X -> X

La définition de l'unité en tant que proposition fait référence à la collection de toutes les propositions dont elle est membre. Cependant, pour des raisons quelque peu obscures pour moi, cette imprédicativité n'est pas nuisible car elle est présente dans ZFC (sous forme de compréhension illimitée ) qui n'est pas connue pour être incohérente.

En conclusion, les occurrences négatives de types inductifs dans les définitions sont une forme d'imprédicativité, mais pas celle généralement désignée lorsque l'on parle de CoC comme d'un cadre imprédicatif .

cody
la source
Je comprends que vous dites que ZFC a une compréhension illimitée. Mais cela semble faux - math.stackexchange.com/q/24507/79293 . Chlipala en discute en discutant -impredicative-setdans son livre: adam.chlipala.net/cpdt/html/Universes.html , et mentionne certaines restrictions sur l'élimination, mais cela me semble également obscur.
Blaisorblade
1
AxBxB
Ah merci! Je vois également comment l'imprédicativité ci-dessus correspond à celle de ZFC (bien que le mappage que j'utilise est probablement trop naïf). Pouvez-vous ajouter le lien dans la réponse?
Blaisorblade
Malheureusement, cela semble difficile à Google (ou je ne connais pas les bons mots clés). Pire encore, Wikipédia et nLab font la distinction entre "compréhension restreinte" (dans ZFC, en.wikipedia.org/wiki/Axiom_schema_of_specification ) et "séparation restreinte / délimitée" (ce à quoi vous avez lié). Voir ncatlab.org/nlab/show/axiom+of+separation . Mais toute cette terminologie ressemble à un malentendu qui attend de se produire - je raisonne généralement que "séparation ~ compréhension", comme vous et l'auteur mathforum.org/kb/message.jspa?messageID=4492130 le font aussi.
Blaisorblade
Peut-être que les meilleurs mots-clés pour ce genre de discussions sont "Constructive Set Theory", voir par exemple wikipedia , ou ce très bel article de Rathjen.
cody