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.