Zwei Gegenbeispiele sind:
- (λx.bx(bc))c und (Plotkin).(λx.xx)(bc)
- (λx.a(bx))(cd) und (Van Oostrom).a((λy.b(cy))d)
Das unten beschriebene Gegenbeispiel ist in The Lambda Calculus: Its Syntax and Semantics von HP Barenredgt, überarbeitete Ausgabe (1984), Übung 3.5.11 (vii), enthalten. Es wird Plotkin zugeschrieben (keine genaue Referenz). Ich gebe einen unvollständigen Beweis, der aus einem Beweis von Vincent van Oostrom eines anderen Gegenbeispiels in Take Five: a Easy Expansion Exercise (1996) [PDF] übernommen wurde .
Grundlage des Beweises ist der Standardisierungssatz, der es uns ermöglicht, nur Beta-Erweiterungen einer bestimmten Form zu betrachten. Intuitiv gesehen ist eine Standardreduktion eine Reduktion, bei der alle Kontraktionen von links nach rechts ausgeführt werden. Genauer gesagt ist eine Reduzierung nicht Standard, wenn es einen Schritt dessen Redex ein Rest eines Redex links vom Redex eines vorherigen Schritts ; "Links" und "rechts" für einen Redex werden durch die Position des , die eliminiert wird, wenn der Redex kontrahiert wird. Der Standardisierungssatz besagt, dass dort, wenn ist, eine Standardreduktion von auf .MiMjλM→∗βNMN
Sei und . Beide Begriffe werden in einem Schritt auf reduziert .L=(λx.bx(bc))cR=(λx.xx)(bc)bc(bc)
Nehmen wir an, dass es einen gemeinsamen Vorfahren , so dass . Dank des Standardisierungssatzes können wir davon ausgehen, dass beide Reduktionen Standard sind. Nehmen wir ohne Verlust der Allgemeinheit an, dass der erste Schritt ist, bei dem sich diese Reduzierungen unterscheiden. Von diesen beiden Reduktionen sei diejenige, bei der der Redex des ersten Schritts links vom anderen liegt, und schreibe wobei der Kontext dieser Kontraktion ist und ist der Redex. Sei die andere Reduktion.AL←∗βA→∗βRAσA=C1[(λz.M)N]C1(λz.M)Nτ
Da Standard ist und sein erster Schritt rechts vom Loch in , kann es sich weder bei noch links davon zusammenziehen. Daher hat der endgültige Term von die Form wobei die Teile von und links von ihren Löchern identisch sind, und . Da mit der Reduktion bei beginnt und nie weiter links reduziert, muss sein endgültiger Term die Form wobei der Teil vonτC1C1τC2[(λz.M′)N′]C1C2M→∗βM′N→∗βN′σC1C3[S]C3um das ihrem Loch links zu dem linken Teil von identischen und und .C1C2M[z←N]→∗βS
Beachten Sie, dass und ein einzelnes Lambda enthalten, das sich links vom Anwendungsoperator auf der obersten Ebene befindet. Da das Lambda von , dieses Lambda ist dasjenige, in dem oder der letzte Term von , und in diesem Term wird das Argument der Anmeldung durch Reduzieren von . Der Redex befindet sich auf der obersten Ebene, was bedeutet, dass .LRτλz.MLRτNC1=C2=C3=[]
Wenn mit endet , dann sind , und . Wenn einen Nachkommen in hat, muss dieser Nachkomme auch auf reduziert werden, was die normale Form von . Insbesondere kann kein Nachkomme von ein Lambda sein, so dass kein Subterm der Form kontrahieren kann, wobei ein Nachkomme von . Da der einzige Teil von , der sich auf reduziertτRM→∗βzzN→∗βbcM[z←N]→∗β(λx.bx(bc))cNLbcNNσNˇPNˇNLbcist , der einzig mögliche Nachkomme von in ist das einzige Vorkommen von selbst.bcNLbc
Wenn mit endet , dann , und . Wenn einen Nachkommen in hat, muss dieser Nachkomme auch durch Konfluenz auf reduziert werden.τLM→∗βbz(bc)N→∗βcM[z←N]→∗β(λx.xx)(bc)NRc
An dieser Stelle sollte die Schlussfolgerung laut van Oostrom leicht folgen, aber mir fehlt etwas: Ich sehe nicht, wie die Verfolgung der Nachkommen von Informationen über liefert . Entschuldigung für den unvollständigen Beitrag, ich werde über Nacht darüber nachdenken.NM