Pourquoi le travail de Schönfinkel sur l'élimination des «variables liées» dans la logique était-il si crucial?


15

AFAIK, La première preuve de l'utilisation de fonctions d'ordre supérieur remonte à l'article de Schönfinkel de 1924: "Sur les blocs de construction de la logique mathématique" - où il permettait à quelqu'un de passer des fonctions comme arguments à d'autres fonctions.

Cela semble intéressant. Cependant, tout ce que j'ai lu sur son travail (et Curry par extension) semble faire allusion à une chose sous une forme ou une autre: [fonctions d'ordre supérieur] ... cela élimine le besoin de variables liées ...

Ce que je n'ai pas pu comprendre, c'est - quel est le problème? Pourquoi les logiciens et mathématiciens de cette époque se sont-ils souciés de cela? Et en tant que théoriciens, nous soucions-nous de cela aujourd'hui? Pourquoi était-il «révolutionnaire» de se débarrasser des variables liées et quel impact cela a-t-il (ou fait-il) sur le calcul (théoriquement) tel que nous le connaissons?

PS: Je sais comment son travail a ouvert la voie à -calculus et l'impact de "it" sur l'informatique et la programmation fonctionnelle en général. Ma question porte principalement sur l'époque "antérieure" à la création de -calculus et "après" l'article de Schönfinkel. Le fait que le Curry ait repris indépendamment cette ligne de travail, qui fut plus tard connue sous le nom de "logique combinatoire", fait également allusion à l'importance du travail de Schönfinkel.λλλ


2
L'article de Schönfinkel est disponible ici .
Martin Berger

Réponses:


17

TL; DR. Les métamathématiques de la liaison sont subtiles : elles semblent triviales mais ne le sont pas - que vous ayez affaire à des logiques (d'ordre supérieur) ou au 𝜆-calcul. Ils sont si subtils que les représentations contraignantes forment un champ de recherche ouvert, avec un concours ( le défi POPLmark ) il y a quelques années. Il y a même des blagues sur le terrain concernant la complexité des approches de la liaison.

Donc, si vous vous souciez de la métamathématique (et la plupart des mathématiciens ne le font pas), vous devez gérer la liaison. Mais de nombreux mathématiciens peuvent traiter en toute sécurité la formalisation de la liaison comme s'il s'agissait d'un problème "fondamental".

Un autre point est que la liaison était le seul "nouveau" problème dans les langues avec des fonctions d'ordre supérieur, parce que la théorie des langues avec liaison est juste algèbre (pour les constantes) + liaison. Les «fondements des langages de programmation» de Mitchell présentent les choses dans cet ordre et sont plutôt instructifs.

Je suis conscient de la façon dont son travail a ouvert la voie au λ-calcul et à l'impact de "it" sur l'informatique et la programmation fonctionnelle en général. Ma question porte principalement sur l'époque «antérieure» à la création du λ-calcul et «après» l'article de Schönfinkel.

Je dois manquer quelque chose, mais cette remarque ne semble faire aucune différence. La liaison dans les logiques d'ordre supérieur et la liaison dans le λ-calcul semblent aussi difficiles, aussi longtemps que les gens se soucient des logiques d'ordre supérieur, ils doivent gérer la liaison. Je suis biaisé en utilisant des démonstrateurs de théorèmes basés sur l'isomorphisme de Curry-Howard qui implémentent la logique en implémentant simplement une théorie des types (où les types sont des formules et les programmes sont des termes de preuve), de sorte que je ne traite qu'une fois de la liaison.

D'autre part, l'IIRC, à l'époque en effet, peu se souciait du travail de Schönfinkel - en partie à cause de la façon dont il ne l'a pas (publié) - les articles ont été principalement rédigés par des collègues sur la base de ses recherches (voir ici , page 4) ; Curry a ensuite redécouvert la théorie indépendamment.

Avertissement: je ne suis pas historien, mais doctorant en PL, donc le mien est une perspective moderne (et, espérons-le, exacte) sur le sujet.

ÉDITER:

Pourquoi la reliure est-elle subtile, un peu plus concrètement

Il y a deux facettes: premièrement, sa mise en œuvre est difficile. Deuxièmement, la métamathématique est la mathématique de la manipulation de preuves: cette manipulation est généralement automatique, c'est-à-dire qu'il s'agit d'un algorithme - donc, essentiellement, vous faites face à toutes les difficultés de mise en œuvre, en plus de faire des preuves à leur sujet. Ci-dessous, je donne des exemples. Les exemples ont une perspective moderne - ils concernent des preuves réellement formalisées. Cependant, certaines des difficultés s'étendraient aux épreuves manuelles précises - tant que vous ne trichez pas sur les détails.

Cela montre que Schönfinkel a simplement donné la première solution à ce problème, mais ce n'était pas définitif.

Sa mise en œuvre est subtile en raison de l' observation

Le problème fondamental de la mise en œuvre est l'observation. Habituellement, on ne réutilise pas le même nom pour différentes variables liées. Mais vous ne pouvez pas l'éviter dans le calcul lambda, au moins parce que les fonctions (et leurs variables liées) sont dupliquées: réduit à . Ce n'est pas encore un problème, mais à partir de vous donne puis : vous devez maintenant vous occuper de l'observation. Vous pouvez éviter cela, au prix de compliquer la règle de réduction bêta.( λ x . x ) 1 + ( λ x . x ) 2 ( λ f x . f ( f x ) ) ( λ g y . g y ) z ( λ g y . g y ) ( λ(λF.F 1+F 2)(λX.X)(λX.X) 1+(λX.X) 2(λFX.F(FX)) (λgy.g y) z(λgy.g y) (λgy.g y) z(λy.(λgy.g y) y)  z

Une fois que vous avez différentes variables portant le même nom, vous devez également empêcher la capture. L'exemple le plus simple de capture est celui de l'application de la fonction (retourne le premier argument) à ne doit pas donner (la fonction d'identité), mais (une fonction constante).λXy.Xyλy.yλy.y

Le pire est que les contre-exemples d'algorithmes naïfs sont difficiles à construire lorsque vous connaissez déjà le problème, et encore moins quand vous ne le savez pas. Les bogues dans des algorithmes presque corrects restent souvent non détectés pendant des années. J'entends que même les bons élèves ne parviennent généralement pas à trouver (par eux-mêmes) la définition correcte de la substitution évitant la capture. En fait, les doctorants (moi y compris) et les professeurs ne sont pas exemptés de ces problèmes.

C'est une des raisons pour lesquelles certains (y compris l'un des meilleurs manuels sur les langages de programmation, les types et les langages de programmation de Benjamin Pierce) recommandent une représentation sans nom (pas tout à fait logique combinatoire, même si elle a été utilisée, mais plutôt des index deBrujin).

Les preuves à ce sujet sont subtiles

Il s'avère que les preuves de liaison ne sont pas plus simples que la mise en œuvre, comme mentionné ci-dessus. Bien sûr, des algorithmes corrects existent et des preuves existent - mais sans mécanisme avancé, pour chaque langue utilisant la reliure, vous devez répéter les épreuves, et ces épreuves sont simplement très grandes et ennuyeuses si vous utilisez les définitions de la reliure sur stylo et papier .

BUNEUNEBB

Ensuite, j'ai recherché mon meilleur exemple de "ce qui ne va pas si vous essayez de formaliser la définition standard". Russell O'Connor (qui est sur ce site) a formalisé le premier théorème d'incomplétude de Gödel dans Coq (un prouveur de théorème du type mentionné ci-dessus) - et ce théorème implique une logique (avec tous les algorithmes pertinents) dans une autre logique (avec la syntaxe de la première logique codée en nombres). Il a utilisé les définitions qui sont utilisées sur papier et les a formalisées directement. Recherchez «substitution» ou «variable» et comptez la fréquence à laquelle ils apparaissent en référence aux problèmes pour vous faire une idée. http://r6.ca/Goedel/goedel1.html

Je n'utilise jamais ces définitions dans mon travail, mais chaque approche alternative a ses inconvénients.


Je suis biaisé en utilisant des prouveurs de théorèmes basés sur l'isomorphisme de Curry-Howard, de sorte que je ne traite qu'une fois de la liaison - Pourriez-vous expliquer ce que vous voulez dire?
PhD

3
Vous dites que c'est subtil, mais ne dites jamais ce qui le rend exactement et pourquoi vous en souciez si vous êtes métamathéticien? C'est la perspective que je recherche.
PhD

Sur votre premier commentaire: j'ai rendu explicite le lien avec Curry-Howard, mais je vais devoir vous référer à Wikipedia ou à une autre question. Je suis d'accord avec votre deuxième commentaire; Je vais élaborer pour les personnes peu familières avec le calcul lambda.
Blaisorblade

@PhD: J'espère que ce que j'ai ajouté aide un peu, bien que cela ne remplace pas une bonne conférence sur ce matériel (et malheureusement, le matériel que j'ai croisé est généralement distribué parmi de nombreux autres matériaux liés à la PPL).
Blaisorblade

1
Merci beaucoup! C'était vraiment utile. Ce lien peut également vous intéresser: home.uchicago.edu/~wwtx/Varfreelogic_revised.pdf - Logique du premier ordre sans variables liées.
PhD
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.