Dans un récent fil de discussion sur la liste de diffusion d'Agda, la question des lois est apparue, dans laquelle Peter Hancock a fait une remarque stimulante .
Ma compréhension est que les lois viennent avec des types négatifs, c'est-à-dire. connecteurs dont les règles d'introduction sont inversibles. Pour désactiver pour les fonctions, Hank suggère d'utiliser un éliminateur sur mesure, funsplit , au lieu de la règle d'application habituelle. Je voudrais comprendre la remarque de Hank en termes de polarités.
Par exemple, il existe deux présentations de types . Il y a le traditionnel éliminateur de split Martin-Löf , dans un style positif:
Et il y a la version négative:
Cette dernière présentation permet d'obtenir facilement pour les paires, ie. pour n'importe quelle paire (où == représente l'égalité de définition). En termes de prouvabilité, cette différence n'a pas d'importance: intuitivement, vous pouvez implémenter des projections avec split, ou inversement.
Maintenant, les types sont généralement (et sans controverse, je crois) pris négativement:
Ce qui nous donne pour les fonctions: λ x . f x = = f .
Cependant, dans ce courrier, Hank rappelle l’ éliminateur de funsplit (Programming in ML type theory, [http://www.cse.chalmers.se/research/group/logic/book/], p.56). Il est décrit dans le cadre logique par:
Fait intéressant, Nordstrom et al. motiver cette définition en disant que "[cette] forme non canonique alternative est basée sur le principe de l'induction structurelle". Cette affirmation dégage une forte odeur de positivité: les fonctions seraient «définies» par leur constructeur, .
Cependant, je ne peux pas tout à fait définir une présentation satisfaisante de cette règle en déduction naturelle (ou, mieux encore, en calcul séquentiel). L'utilisation (ab) du cadre logique pour introduire semble cruciale ici.
Alors, funsplit est- il une présentation positive des types ? Avons-nous également quelque chose de similaire dans le calcul séquentiel (non dépendant)? À quoi cela ressemblerait-il?
Est-ce courant / curieux pour les théoriciens de la preuve dans le domaine?
Voici une perspective légèrement différente sur la réponse de Fredrik. C'est généralement le cas que les encodages imprédicatifs de types Church satisfont aux lois pertinentes , mais ne satisfont pas aux lois η .β η
Cela signifie donc que nous pouvons définir une paire dépendante comme suit:
Maintenant, notons que π 1 est facilement définissable: π 1 : ∃ x :
Cependant, la deuxième projection est réalisable , et dans un modèle paramétrique, vous pouvez également montrer qu'elle a le bon comportement. (Voir mon récent projet avec Derek Dreyer sur la paramétricité dans le calcul des constructions pour en savoir plus à ce sujet.) Je pense donc que la projection exige fondamentalement de fortes propriétés d'extensionnalité pour que cela ait du sens.π2
En termes de calcul séquentiel, l'éliminateur faible a une règle qui ressemble un peu à:
la source
Richard Garner a écrit un bel article sur l'application vs funsplit, Sur la force des produits dépendants dans la théorie des types de Martin-Löf (APAL 160 (2009)), qui traite également de la nature d'ordre supérieur de la règle funsplit (avec une référence à Une extension naturelle de la déduction naturelle de Peter Schroeder-Heister (JSL 49 (1984))).
Richard montre qu'en présence de types d'identité (et de règles de formation et d'introduction pourΠ types), funsplit est interfonctionnable avec la règle d'application ci-dessus + propositionnelle eta, c'est-à-dire les deux règles suivantes:
That is, if you have funsplit, you can define application andη as above so that (Π-Prop-η-Comp) holds. More interestingly, if you have application and the propositional eta rules, then you can define funsplit.
De plus, funsplit est strictement plus fort que l'application: les règles propositionnelles eta ne sont pas définissables dans une théorie avec seulement application - donc funsplit n'est pas définissable, car alors les règles propositionnelles eta le seraient aussi. Intuitivement, c'est parce que les règles d'application vous donnent un peu plus de mou: contrairement à funsplit (et eta), elles ne vous disent pas quelles sont les fonctions, mais seulement qu'elles peuvent être appliquées aux arguments. Je crois que l'argument de Richard pourrait être répété pourΣ types également, pour afficher le même résultat pour s p l i t vs projections.
Notez que si vous aviez des règles ETA définitionnelles, vous les auriez certainement aussi de manière propositionnelle (avecη( m ) : = r e fl (m) ). Thus, I think your statements "[...] which gives us η for functions" and "[...] this latter presentation makes it easy to obtain η for pairs" are wrong. Agda, however, implements η for both functions and pairs (if Σ is defined as a record), but this does not follow from just application.
la source