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:L→Lμ ( 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 : S→ TFFe : S→ T .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×GF→G
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.
Inductive Blah : Prop := Foo : (Blah -> Blah) -> Blah
même chose qu'autre chose?Inductive prop : Prop := prop_intro : Prop -> prop.
contreInductive set : Set := set_intro: Set -> set.
. Pourquoi la distinction si la prédicativité ne concerne pas la définition inductive?Type@{i}
, doit vivre dans un univers plus grand, au moinsType@{i+1}
.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
donne une bonne analyse du sujet, si vous pouvez mettre la main dessus. Ces diapositives donnent un aperçu.
la source
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:
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:
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 .
la source
-impredicative-set
dans son livre: adam.chlipala.net/cpdt/html/Universes.html , et mentionne certaines restrictions sur l'élimination, mais cela me semble également obscur.