Das Problem der Darstellung gebundener Variablen in der Syntax und insbesondere der Substitution zur Vermeidung von Captures ist bekannt und hat eine Reihe von Lösungen: benannte Variablen mit Alpha-Äquivalenz, De-Bruijn-Indizes, lokale Namenslosigkeit, nominale Mengen usw.
Aber es scheint einen anderen ziemlich offensichtlichen Ansatz zu geben, den ich dennoch nirgendwo verwendet habe. In der Grundsyntax haben wir nämlich nur einen "Variablen" -Term, der mit , und dann geben wir separat eine Funktion, die jede Variable einem Ordner zuordnet, in dessen Bereich sie liegt. Also ein λ- Term wie
würde geschrieben werden . ( λ . ∙ ∙ ) , und die Funktion würde das erste ∙ auf das erste λ und das zweite ∙ auf das zweite λ abbilden . Es ist also ein bisschen wie bei de Bruijn-Indizes, nur anstatt " λ s zählen" zu müssen, wenn Sie den Begriff verlassen, um das entsprechende Bindemittel zu finden, bewerten Sie einfach eine Funktion. (Wenn dies als Datenstruktur in einer Implementierung dargestellt wird, würde ich daran denken, jedes Objekt mit variablem Term mit einem einfachen Zeiger / Verweis auf das entsprechende Objekt mit Binderterm auszustatten.)
Offensichtlich ist dies nicht sinnvoll, um Syntax auf eine Seite zu schreiben, die der Mensch lesen kann, aber es gibt auch keine de Bruijn-Indizes. Es scheint mir, dass es mathematisch absolut sinnvoll ist, und insbesondere macht es die Substitution, die das Erfassen vermeidet, sehr einfach: Geben Sie einfach den Begriff ein, den Sie ersetzen, und nehmen Sie die Vereinigung der Bindungsfunktionen. Es ist wahr, dass es keinen Begriff von "freier Variable" gibt, aber (wieder) auch nicht wirklich de Bruijn-Indizes; In beiden Fällen wird ein Begriff, der freie Variablen enthält, als Begriff mit einer Liste von "Kontext" -Bindemitteln dargestellt.
Vermisse ich etwas und es gibt einen Grund, warum diese Darstellung nicht funktioniert? Gibt es Probleme, die es so viel schlimmer machen als die anderen, dass es sich nicht lohnt, darüber nachzudenken? (Das einzige Problem, an das ich im Moment denken kann, ist, dass die Menge der Begriffe (zusammen mit ihren Bindungsfunktionen) nicht induktiv definiert ist, aber das scheint nicht unüberwindbar.) Oder gibt es tatsächlich Orte, an denen sie verwendet wurden?