En lisant la réponse d' Uday Reddy à Quelle est la relation entre les foncteurs en SML et la théorie des catégories? États Uday
La théorie des catégories ne sait pas encore comment gérer les fonctions d'ordre supérieur. Un jour, ce sera le cas.
Comme je pensais que la théorie des catégories pouvait servir de base aux mathématiques, il devrait être possible de dériver toutes les mathématiques et les fonctions d'ordre supérieur.
Alors, que signifie la théorie des catégories qui ne sait pas encore comment gérer les fonctions d'ordre supérieur? Est-il valable de considérer la théorie des catégories comme fondement des mathématiques?
functional-programming
category-theory
Guy Coder
la source
la source
Réponses:
Le problème des fonctions d'ordre supérieur est assez simple à énoncer.
Un constructeur de type comme n'est pas un foncteur. Ça aurait dû l'être.T( X) = [ X→ X]
Une fonction polymorphe comme n'est pas une transformation naturelle. Ça aurait dû l'être.t w i c eX: T( X) → T( X) = λ f.F∘ f
Si vous lisez le papier de la théorie de la catégorie d' origine de Eilenberg et MacLane , (PDF) les intuitions qu'ils présentent couvrent les cas. Mais leur théorie ne le fait pas. Leur était un grand papier pour 1945! Mais aujourd'hui, nous en avons besoin de plus.
La réaction des théoriciens des catégories à ces questions est un peu perplexe. Ils agissent comme si les opérations d'ordre supérieur formaient une idée informatique; ils sont sans conséquence pour les mathématiques. Si tel est le cas, alors une fondation en mathématiques ne serait pas assez bonne pour une fondation en informatique.
Mais je n'y crois pas sérieusement. Je pense que les fonctions d'ordre supérieur seraient également très importantes pour les mathématiques. Mais ils n'ont pas été sérieusement explorés. J'espère qu'un jour elles seront explorées et que les limites de la théorie des catégories se réaliseront.
la source
[Cette deuxième réponse présente un aperçu de ce à quoi pourrait ressembler une «théorie des catégories 2.0», qui traite correctement les fonctions d'ordre supérieur.]
Nous savons depuis longtemps comment traiter les fonctions d'ordre supérieur en raisonnant à leur sujet.
Lorsqu'une structure algébrique a des opérations d'ordre supérieur, les homomorphismes ne fonctionnent pas. Nous devons plutôt utiliser des relations logiques . En d'autres termes, nous devons passer de " fonctions préservant la structure" à " relations préservant la structure".
Pour parler de transformations "uniformes" ou "données simultanément" sur des types d'ordre supérieur, la naturalité ne fonctionne pas. Nous devons plutôt utiliser la paramétricité relationnelle . En d'autres termes, nous devons passer de "familles préservant tous les morphismes " à "familles préservant toutes les relations logiques ".
Une brève introduction à ces problèmes se trouve dans la section de Peter O'Hearn sur la "Paramétrie relationnelle" dans les domaines et la sémantique dénotationnelle: histoire, réalisations et problèmes ouverts (CiteSeerX) .
La première tentative de construction d'une «théorie des catégories 2.0» se trouve dans Parametricity and Local Variables (CiteSeerX) d' O'Hearn et Tennent .
La thèse de doctorat de Brian Dunphy: la paramétricité en tant que notion d'uniformité dans les graphes réflexifs (CiteSeerX) s'appuie sur leur cadre et axiomatise la structure relationnelle nécessaire pour obtenir des résultats de paramétrie. Je recommanderais la thèse de Dunphy pour avoir un bon aperçu de toutes les questions.
Par souci d'exhaustivité, je dois également mentionner la thèse de Claudio Hermida: Fibrations, Logical Predicates and Indeterminates (PDF) , qui a été la première à étudier les relations logiques dans une catégorie théorique, mais son traitement est peut-être trop technique pour la plupart des gens.
Je pourrais également ajouter que le raisonnement sur l' état est l'endroit où les fonctions d'ordre supérieur apparaissent en évidence. Les théoriciens des automates ont été les premiers à reconnaître que les homomorphismes ne fonctionnent pas correctement, dans un article historique intitulé Les produits des automates et le problème de la couverture . Ils ont utilisé des termes comme «homomorphismes faibles» et «relations de couverture» pour désigner des relations logiques. En temps voulu, des termes comme «simulation» et «bisimulation» ont été utilisés pour les désigner. L'article d'enquête de Davide Sangiorgi: Sur les origines de la bisimulation et de la coinduction couvre toute cette histoire ancienne et plus encore.
La nécessité d'un raisonnement relationnel se retrouve à plusieurs reprises dans le raisonnement sur l'état, en particulier la programmation impérative . Très peu de gens remarquent que l'humble "point-virgule" est une opération d'ordre supérieur. Donc, vous ne pouvez pas vous lancer dans la réflexion sur les programmes impératifs sans savoir comment gérer les fonctions d'ordre supérieur. Nous continuons d'ignorer les problèmes de programmation étatique et impérative dans la croyance erronée que les mathématiques ont toutes les réponses. Donc, si les mathématiciens ne comprennent pas l'état, ça ne doit pas être bon! Rien ne pouvait être plus loin de la vérité. L'État est au cœur de l'informatique. Nous ferons progresser la science en général en montrant aux gens comment gérer l'État!
la source