<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Kombinatorische_Logik</id>
	<title>Kombinatorische Logik - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Kombinatorische_Logik"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Kombinatorische_Logik&amp;action=history"/>
	<updated>2026-06-24T13:07:15Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Kombinatorische_Logik&amp;diff=431168&amp;oldid=prev</id>
		<title>imported&gt;Horst Gräbner: Verlage in Literaturangaben werden nicht verlinkt, siehe Wikipedia:Zitierregeln#Grundformat</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Kombinatorische_Logik&amp;diff=431168&amp;oldid=prev"/>
		<updated>2024-11-14T15:21:36Z</updated>

		<summary type="html">&lt;p&gt;Verlage in Literaturangaben werden nicht verlinkt, siehe &lt;a href=&quot;/index.php/Wikipedia:Zitierregeln#Grundformat&quot; title=&quot;Wikipedia:Zitierregeln&quot;&gt;Wikipedia:Zitierregeln#Grundformat&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Begriffsklärungshinweis|Zum bisweilen ebenfalls &amp;#039;&amp;#039;kombinatorische Logik&amp;#039;&amp;#039; genannten Netz aus logischen Schaltgliedern siehe [[Schaltnetz]].}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Kombinatorische Logik&amp;#039;&amp;#039;&amp;#039; (Abgekürzt &amp;#039;&amp;#039;CL&amp;#039;&amp;#039; für engl. Combinatory Logic) ist eine Notation, die von [[Moses Schönfinkel]] und [[Haskell Brooks Curry]] eingeführt wurde, um die Verwendung von [[Variable (Logik)|Variablen]] in der [[Mathematische Logik|Mathematischen Logik]] zu vermeiden. Sie wird besonders in der Informatik als theoretisches Modell für Berechnung, als auch als Grundlage zum Design funktionaler Programmiersprachen eingesetzt.&lt;br /&gt;
&lt;br /&gt;
== Kombinatorische Logik in der Mathematik ==&lt;br /&gt;
Die Kombinatorische Logik war als einfachere Logik gedacht, die die Bedeutung von quantifizierten Variablen in der Notation von Logik klären und sie tatsächlich unnötig machen sollte.&lt;br /&gt;
&lt;br /&gt;
Siehe Curry, 1958–1972.&lt;br /&gt;
&amp;lt;!-- Hier fehlt, laut engl Originalseite, noch eine ganze Menge --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kombinatorische Logik in der Informatik ==&lt;br /&gt;
In der Informatik dient die kombinatorische Logik als einfaches Modell einer Berechnung. Dieses wird in der [[Berechenbarkeitstheorie]] und der [[Beweistheorie]] benötigt. In der Tat erfasst die kombinatorische Logik viele Aspekte natürlicher Berechnung.&lt;br /&gt;
&lt;br /&gt;
Man kann die kombinatorische Logik als Variation des [[Lambda-Kalkül]]s auffassen, wobei die Ausdrücke des Lambda-Kalküls durch einige wenige &amp;#039;&amp;#039;Kombinatoren&amp;#039;&amp;#039; ersetzt werden. Kombinatoren sind primitive Funktionen, die keine freien Variablen enthalten. Da es sehr einfach ist, Lambda-Ausdrücke in Terme der CL umzuwandeln, und sich die Reduktion von Kombinatoren wesentlich einfacher gestaltet als die Lambda-Reduktion, wird die CL gerne als Implementationsgrundlage für [[Auswertung (Informatik)|nicht-strikte]] Sprachen verwendet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Wie übersetze ich diesen Literaturverweis? --&amp;gt;&lt;br /&gt;
Man kann die CL auch auf viele andere Art und Weisen betrachten, so zeigen viele frühere Abhandlungen die Äquivalenz verschiedener Kombinatoren zu Axiomen der Logik. [Hindley and Meredith, 1990].&lt;br /&gt;
&lt;br /&gt;
== Eine kurze Zusammenfassung des Lambda-Kalküls ==&lt;br /&gt;
Eine ausführliche Beschreibung des [[Lambda-Kalkül]]s findet sich unter dessen Artikel.&lt;br /&gt;
&amp;lt;!-- Hier nur ganz kurz Zusammengefasst, es existiert ja ein großer Artikel dazu... --&amp;gt;&lt;br /&gt;
Lambda-Terme bestehen aus&lt;br /&gt;
* Variablen &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt;,&lt;br /&gt;
* Abstraktionen &amp;lt;math&amp;gt;\lambda v.T&amp;lt;/math&amp;gt;,&lt;br /&gt;
* Applikationen &amp;lt;math&amp;gt;(T1~T2)&amp;lt;/math&amp;gt;,&lt;br /&gt;
wobei &amp;lt;math&amp;gt;v&amp;lt;/math&amp;gt; hier für einen beliebigen Variablennamen und &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\mathit T1&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;T2&amp;lt;/math&amp;gt;&lt;br /&gt;
wiederum für Lambda-Terme stehen.&lt;br /&gt;
Lambda-Terme werden durch Beta-Reduktion vereinfacht, wobei die&lt;br /&gt;
Applikation &amp;lt;math&amp;gt;(\lambda v.E)~a&amp;lt;/math&amp;gt; ersetzt wird durch die Ersetzung &amp;lt;math&amp;gt;E[v := a]&amp;lt;/math&amp;gt;.&lt;br /&gt;
&amp;lt;!-- Viel weggelassen, was schon im Artikel „Lambda-Kalkül“ steht --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Kombinatorische Logik ist ein Berechnungsmodell, das äquivalent zum&lt;br /&gt;
Lambda-Kalkül ist, aber ohne die Abstraktion auskommt.&lt;br /&gt;
&lt;br /&gt;
== Der kombinatorische Kalkül ==&lt;br /&gt;
Da Abstraktion im Lambda-Kalkül verwendet wird, um Funktionen zu modellieren,&lt;br /&gt;
muss es im kombinatorischen Kalkül etwas Vergleichbares geben. Hier gibt es statt der&lt;br /&gt;
Abstraktion einige wenige primitive Funktionen (&amp;#039;&amp;#039;Kombinatoren&amp;#039;&amp;#039;), aus denen nun weitere Funktionen zusammengesetzt werden können.&lt;br /&gt;
&lt;br /&gt;
=== Kombinatorische Terme ===&lt;br /&gt;
Kombinatorische Terme bestehen aus&lt;br /&gt;
&amp;lt;!-- Hier wird im engl. Originalartikel die Variable genannt. Ein grober Schnitzer,&lt;br /&gt;
wenn oben gesagt wird, dass CL keine Variablen verwendet? --&amp;gt;&lt;br /&gt;
* Kombinatoren &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt;&lt;br /&gt;
* Applikationen &amp;lt;math&amp;gt;(T1~T2)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;T1&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;T2&amp;lt;/math&amp;gt; sind wiederum kombinatorische Terme. Die Applikation ist, wie im Lambda-Kalkül, [[Linksassoziativer Operator|linksassoziativ]], das heißt &amp;lt;math&amp;gt;T1~T2~T3~T4&amp;lt;/math&amp;gt; ist gleichbedeutend mit&lt;br /&gt;
&amp;lt;math&amp;gt;(((T1~T2)~T3)~T4)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Beispiele von Kombinatoren ===&lt;br /&gt;
&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; usw. bezeichnen im Folgenden beliebige Terme.&lt;br /&gt;
&lt;br /&gt;
Der einfachste Kombinator ist &amp;lt;math&amp;gt;\mathbf I&amp;lt;/math&amp;gt;, der Identitätskombinator. Für ihn gilt:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;({\mathbf I}~x) = x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein weiterer, einfacher Kombinator ist &amp;lt;math&amp;gt;\mathbf K&amp;lt;/math&amp;gt;, der Konstantenkombinator.&lt;br /&gt;
&amp;lt;math&amp;gt;({\mathbf K}~x)&amp;lt;/math&amp;gt; modelliert eine Funktion, die für ein weiteres Argument immer &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;&lt;br /&gt;
zurückgibt, also:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;({\mathbf K}~x~y) = x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein dritter Kombinator ist &amp;lt;math&amp;gt;\mathbf S&amp;lt;/math&amp;gt;, er stellt eine generalisierte Version der&lt;br /&gt;
Applikation dar:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;({\mathbf S}~x~y~z) = (x~z~(y~z))&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf S&amp;lt;/math&amp;gt; wendet &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; auf &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; an, setzt jedoch zuvor &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; in beide ein.&lt;br /&gt;
&lt;br /&gt;
Eigentlich ist &amp;lt;math&amp;gt;\mathbf I&amp;lt;/math&amp;gt; unnötig, wenn man &amp;lt;math&amp;gt;\mathbf S&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;\mathbf K&amp;lt;/math&amp;gt; hat, denn&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;(({\mathbf S}~{\mathbf K}~{\mathbf K})~x)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~{\mathbf K}~{\mathbf K}~x)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf K}~x~({\mathbf K}~x))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Fixpunktkombinator ===&lt;br /&gt;
&lt;br /&gt;
Noch interessanter ist der Fixpunktkombinator &amp;lt;math&amp;gt;\mathbf Y&amp;lt;/math&amp;gt;, der verwendet wird, um Rekursion zu implementieren.&lt;br /&gt;
&amp;lt;!-- Hinzugefügt: Regel für Y --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;({\mathbf Y}~{\mathbf x}) = {\mathbf x}~({\mathbf Y}~{\mathbf x})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auch &amp;lt;math&amp;gt;\mathbf Y&amp;lt;/math&amp;gt; ist unnötig. Es kann, falls keine Typisierung erforderlich ist, als&lt;br /&gt;
:&amp;lt;math&amp;gt; {\mathbf Y} = {\mathbf S}~{\mathbf I}~{\mathbf I}~({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))({\mathbf S}~{\mathbf I}~{\mathbf I}))&amp;lt;/math&amp;gt;&lt;br /&gt;
dargestellt werden.&lt;br /&gt;
&lt;br /&gt;
=== Vollständigkeit der Grundlage S-K ===&lt;br /&gt;
Erstaunlich ist, dass man aus &amp;lt;math&amp;gt;\mathbf S&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;\mathbf K&amp;lt;/math&amp;gt; allein Kombinatoren zusammensetzen kann, die [[Extensionale Identität|extensional gleich]] &amp;#039;&amp;#039;jedem&amp;#039;&amp;#039; beliebigen Lambda-Term sind, und daher, gemäß der [[These von Church]], extensional gleich jeder beliebigen berechenbaren Funktion. Als Beweis dient eine Transformation &amp;lt;math&amp;gt;T[~]&amp;lt;/math&amp;gt;, die&lt;br /&gt;
Lambda-Terme in äquivalente CL-Terme verwandelt.&lt;br /&gt;
&amp;lt;!-- Eigentlich ist Bedingung, dass diese Lambda-Terme keine freien Variablen enthalten --&amp;gt;&lt;br /&gt;
Einzige Voraussetzung ist, dass der zu transformierende Lambda-Term keine freien Variablen enthält.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;T[~]&amp;lt;/math&amp;gt; kann folgendermaßen definiert werden:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;math&amp;gt;T[V] \Rightarrow V&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;T[(E1~E2)] \Rightarrow (T[E1]~T[E2])&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.E] \Rightarrow ({\mathbf K}~T[E])&amp;lt;/math&amp;gt; (nur, wenn &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; nicht frei in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt;)&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.x] \Rightarrow {\mathbf I}&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.\lambda y.E] \Rightarrow T[\lambda x.T[\lambda y.E]]&amp;lt;/math&amp;gt; (falls &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; freie Variable von &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt;)&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.(E1~E2)] \Rightarrow ({\mathbf S}~T[\lambda x.E1] T[\lambda x.E2])&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Die Transformation eines Lambda-Terms in einen CL-Term ====&lt;br /&gt;
Als Beispiel wird der Term &amp;lt;math&amp;gt;\lambda x.\lambda y.(y~x)&amp;lt;/math&amp;gt; in einen CL-Term übersetzt:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;T[\lambda x.\lambda y.(y~x)]&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = T[\lambda x.T[\lambda y.(y~x)]]&amp;lt;/math&amp;gt; (Regel 5)&lt;br /&gt;
::&amp;lt;math&amp;gt; = T[\lambda x.({\mathbf S}~T[\lambda y.y]~T[\lambda y.x])]&amp;lt;/math&amp;gt; (Regel 6)&lt;br /&gt;
::&amp;lt;math&amp;gt; = T[\lambda x.({\mathbf S}~{\mathbf I}~T[\lambda y.x])]&amp;lt;/math&amp;gt; (Regel 4)&lt;br /&gt;
::&amp;lt;math&amp;gt; = T[\lambda x.({\mathbf S}~{\mathbf I}~({\mathbf K}~x))]&amp;lt;/math&amp;gt; (Regel 3 und Regel 1)&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~T[\lambda x.({\mathbf S}~{\mathbf I})]~T[\lambda x.({\mathbf K}~x)])&amp;lt;/math&amp;gt; (Regel 6)&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))~T[\lambda x.({\mathbf K}~x)])&amp;lt;/math&amp;gt; (Regel 3)&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))~({\mathbf S}~T[\lambda x.{\mathbf K}]~T[\lambda x.x]))&amp;lt;/math&amp;gt; (Regel 6)&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))~({\mathbf S}~({\mathbf K}~{\mathbf K})~T[\lambda x.x]))&amp;lt;/math&amp;gt; (Regel 3)&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))~({\mathbf S}~({\mathbf K}~{\mathbf K})~{\mathbf I}))&amp;lt;/math&amp;gt; (Regel 4)&lt;br /&gt;
&lt;br /&gt;
Wenn nun dieser Kombinator auf zwei Terme &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; angewendet wird, sieht die Reduktion folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))~({\mathbf S}~({\mathbf K}~{\mathbf K})~{\mathbf I})~x~y)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf K}~({\mathbf S}~{\mathbf I})~x~({\mathbf S}~({\mathbf K}~{\mathbf K})~{\mathbf I}~x)~y)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~{\mathbf I}~({\mathbf S}~({\mathbf K}~{\mathbf K})~{\mathbf I}~x)~y)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf I}~y~({\mathbf S}~({\mathbf K}~{\mathbf K})~{\mathbf I}~x~y))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (y~({\mathbf S}~({\mathbf K}~{\mathbf K})~{\mathbf I}~x~y))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (y~({\mathbf K}~{\mathbf K}~x~({\mathbf I}~x)~y))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (y~({\mathbf K}~({\mathbf I}~x)~y))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (y~({\mathbf I}~x))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (y~x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die kombinatorische Repräsentation &amp;lt;math&amp;gt;({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))~({\mathbf S}~({\mathbf K}~{\mathbf K})~{\mathbf I}))&amp;lt;/math&amp;gt; ist viel länger als der Lambda-Term &amp;lt;math&amp;gt;\lambda x.\lambda y.(y~x)&amp;lt;/math&amp;gt;. Das ist typisch für die Transformation. Generell kann es passieren, dass eine &amp;lt;math&amp;gt;T[~]&amp;lt;/math&amp;gt;-Konstruktion einen Lambda-Term der Länge &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; in einen Kombinator der Länge &amp;lt;math&amp;gt;\Theta(3^n)&amp;lt;/math&amp;gt; umwandelt.&lt;br /&gt;
&lt;br /&gt;
==== Erläuterung der T[ ]-Transformation ====&lt;br /&gt;
Die Motivation der &amp;lt;math&amp;gt;T[~]&amp;lt;/math&amp;gt;-Transformation ist die Eliminierung von Abstraktionen.&lt;br /&gt;
Drei der Regeln sind trivial:&lt;br /&gt;
Regel 4 transformiert &amp;lt;math&amp;gt;\lambda x.x&amp;lt;/math&amp;gt; in seine eindeutige Äquivalenz &amp;lt;math&amp;gt;\mathbf I&amp;lt;/math&amp;gt;,&lt;br /&gt;
Regel 3 transformiert &amp;lt;math&amp;gt;\lambda x.E&amp;lt;/math&amp;gt; zu &amp;lt;math&amp;gt;({\mathbf K}~T[E])&amp;lt;/math&amp;gt;, was allerdings nur funktioniert,&lt;br /&gt;
wenn die gebundene Variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; nicht verwendet wird (i.e.: in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; nicht frei ist).&lt;br /&gt;
Regel 2 transformiert die Applikation zweier Terme, was auch in den Termen der CL erlaubt ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Das muss man noch schöner schreiben, (evtl. beweisen) im englischen Originalartikel fehlt dieser Hinweis ganz! --&amp;gt;&lt;br /&gt;
Regel 1 ist etwas schwierig, denn sie konvertiert Variablen: Variablen können nur durch Regel 4 aufgelöst werden, daher bleiben sie fürs Erste erhalten. Da es keine freien Variablen im Gesamtterm gibt und jede Transformation von Abstraktionen die gebundenen Variablen berücksichtigt (Regeln 3, 4, 5, 6), werden irgendwann alle Variablen aufgelöst.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Im engl. Originalartikel falsch beschrieben, denn Regel 6 eliminiert keine Abstraktionen! --&amp;gt;&lt;br /&gt;
Die Regeln 5 und 6 verschieben die Abstraktionen ins Innere des Funktionskörpers, bis sie von Regel 4 aufgelöst werden können.&lt;br /&gt;
Regel 5 konvertiert dazu zuerst den Körper der äußeren Abstraktion, danach die Abstraktion selbst.&lt;br /&gt;
Regel 6 verteilt die Abstraktion über einer Applikation auf deren Teilterme:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\lambda x.(E1~E2)&amp;lt;/math&amp;gt; ist eine Funktion, die ein Argument nimmt und im Lambda-Term&lt;br /&gt;
&amp;lt;math&amp;gt;(E1~E2)&amp;lt;/math&amp;gt; für &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; einsetzt. Genau dies tut der Kombinator &amp;lt;math&amp;gt;\mathbf S&amp;lt;/math&amp;gt;, nur für Funktionen&lt;br /&gt;
&amp;lt;math&amp;gt;E1[x]&amp;lt;/math&amp;gt; bzw. &amp;lt;math&amp;gt;E2[x]&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; (\lambda x.(E1~E2)~a) = ((\lambda x.E1~a)~(\lambda x.E2~a))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~\lambda x.E1~\lambda x.E2~a)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (({\mathbf S}~\lambda x.E1~\lambda x.E2)~a)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daher gilt, gemäß extensionaler Gleichheit:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \lambda x.(E1~E2) = ({\mathbf S}~\lambda x.E1~\lambda x.E2)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um nun einen Kombinator für &amp;lt;math&amp;gt;\lambda x.(E1~E2)&amp;lt;/math&amp;gt; zu finden, reicht es aus, einem Kombinator für &amp;lt;math&amp;gt;({\mathbf S}~\lambda x.E1~\lambda x.E2)&amp;lt;/math&amp;gt; zu finden, also:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf S}~T[\lambda x.E1]~T[\lambda x.E2])&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;!-- Es fehlt: ein vollständiger Beweis für die Terminierung von T[]. Da der engl. Artikel&lt;br /&gt;
     nur Regeln 5,6 betrachtet und auch das Problem mit Variablen nicht genau genug erläutert,&lt;br /&gt;
     habe ich den dadurch unvollständigen Beweis hier weggelassen. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vereinfachung der Transformation ===&lt;br /&gt;
&lt;br /&gt;
==== η-Reduktion ====&lt;br /&gt;
Die Kombinatoren, die &amp;lt;math&amp;gt;T[~]&amp;lt;/math&amp;gt; liefert, werden kürzer wenn wir die &amp;#039;&amp;#039;η-Reduktion&amp;#039;&amp;#039; aus&lt;br /&gt;
dem Lambda-Kalkül verwenden:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;T[\lambda x.(E~x)] = T[E]&amp;lt;/math&amp;gt;   (nur, wenn &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; nicht frei in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;[[\lambda x.(E~x)]]&amp;lt;/math&amp;gt; ist die Funktion, die ein Argument &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; nimmt, und&lt;br /&gt;
es in die Funktion &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; einsetzt; dies ist extensional gleich der Funktion &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; selbst.&lt;br /&gt;
Es ist daher ausreichend, einfach &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; in seine Kombinatorische Form zu transformieren.&lt;br /&gt;
&lt;br /&gt;
Mit dieser Vereinfachung wird das obige Beispiel zu:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; T[\lambda x.\lambda y.(y~x)] &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = \ldots&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))~T[\lambda x.({\mathbf K}~x)]) &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))~{\mathbf K})&amp;lt;/math&amp;gt; (durch η-Reduktion)&lt;br /&gt;
&lt;br /&gt;
Dieser Kombinator ist (extensional) gleich dem längeren aus dem vorangegangenen Beispiel:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf S}~({\mathbf K}~({\mathbf S}~{\mathbf I}))~{\mathbf K}~x~y)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf K}~({\mathbf S}~{\mathbf I})~x~({\mathbf K}~x)~y)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~{\mathbf I}~({\mathbf K}~x)~y)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf I}~y~({\mathbf K}~x~y))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (y~({\mathbf K}~x~y))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (y~x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ganz ähnlich würde die normale &amp;lt;math&amp;gt;T[~]&amp;lt;/math&amp;gt;-Transformation die Identitätsfunktion &amp;lt;math&amp;gt;\lambda f.\lambda x.(f~x)&amp;lt;/math&amp;gt; verwandeln in &amp;lt;math&amp;gt;({\mathbf S}~({\mathbf S}~({\mathbf K}~{\mathbf S})~({\mathbf S}~({\mathbf K}~{\mathbf K})~{\mathbf I}))~({\mathbf K}~{\mathbf I}))&amp;lt;/math&amp;gt;. Mit der neuen η-Reduktionsregel wird aus &amp;lt;math&amp;gt;\lambda f.\lambda x.(f~x)&amp;lt;/math&amp;gt; einfach nur &amp;lt;math&amp;gt;\mathbf I&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== Die Kombinatoren B, C von Curry ====&lt;br /&gt;
Die Kombinatoren &amp;lt;math&amp;gt;\mathbf S&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;\mathbf K&amp;lt;/math&amp;gt; tauchen bereits in der Arbeit von&lt;br /&gt;
[[Moses Schönfinkel|Schönfinkel]] auf (allerdings hieß &amp;lt;math&amp;gt;\mathbf K&amp;lt;/math&amp;gt; dort &amp;lt;math&amp;gt;\mathbf C&amp;lt;/math&amp;gt;),&lt;br /&gt;
[[Haskell Brooks Curry|Curry]] führte in seiner Dissertation &amp;#039;&amp;#039;Grundlagen der kombinatorischen Logik&amp;#039;&amp;#039; weiterhin &amp;lt;math&amp;gt;\mathbf B&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\mathbf C&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\mathbf W&amp;lt;/math&amp;gt; (und &amp;lt;math&amp;gt;\mathbf K&amp;lt;/math&amp;gt;) ein.&lt;br /&gt;
&amp;lt;!-- Hinweis auf David Turner weggelassen. Kenne ich leider nicht. --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf B&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;\mathbf C&amp;lt;/math&amp;gt; können viele Reduktionen vereinfachen, sie sehen folgendermaßen aus:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf C}~a~b~c) = (a~c~b)&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf B}~a~b~c) = (a~(b~c))&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für diese beiden Kombinatoren werden die Regeln folgendermaßen erweitert:&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;math&amp;gt;T[V] \Rightarrow V&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;T[(E1~E2)] \Rightarrow (T[E1]~T[E2])&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.E] \Rightarrow ({\mathbf K}~T[E])&amp;lt;/math&amp;gt; (nur, wenn &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; nicht frei in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt;)&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.x] \Rightarrow {\mathbf I}&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.\lambda y.E] \Rightarrow T[\lambda x.T[\lambda y.E]]&amp;lt;/math&amp;gt; (falls &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; freie Variable von &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt;)&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.(E1~E2)] \Rightarrow ({\mathbf S}~T[\lambda x.E1]~T[\lambda x.E2])&amp;lt;/math&amp;gt; (falls &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; freie Variable von &amp;lt;math&amp;gt;E1&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;E2&amp;lt;/math&amp;gt;)&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.(E1~E2)] \Rightarrow ({\mathbf C}~T[\lambda x.E1]~T[E2])&amp;lt;/math&amp;gt; (falls &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; freie Variable von &amp;lt;math&amp;gt;E1&amp;lt;/math&amp;gt; aber nicht von &amp;lt;math&amp;gt;E2&amp;lt;/math&amp;gt;)&lt;br /&gt;
# &amp;lt;math&amp;gt;T[\lambda x.(E1~E2)] \Rightarrow ({\mathbf B}~T[E1]~T[\lambda x.E2])&amp;lt;/math&amp;gt; (falls &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; freie Variable von &amp;lt;math&amp;gt;E2&amp;lt;/math&amp;gt; aber nicht von &amp;lt;math&amp;gt;E1&amp;lt;/math&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Zum Beispiel sieht die Transformation von &amp;lt;math&amp;gt;\lambda x.\lambda y.(y~x)&amp;lt;/math&amp;gt; so aus:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; T[\lambda x.\lambda y.(y~x)] &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = T[\lambda x.T[\lambda y.(y~x)]]&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = T[\lambda x.({\mathbf C}~T[\lambda y.y]~x)]&amp;lt;/math&amp;gt; (Regel 7)&lt;br /&gt;
::&amp;lt;math&amp;gt; = T[\lambda x.({\mathbf C}~{\mathbf I}~x)]&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf C}~{\mathbf I})&amp;lt;/math&amp;gt; (η-Reduktion)&lt;br /&gt;
::&amp;lt;math&amp;gt; = {\mathbf C}_\ast&amp;lt;/math&amp;gt; (Notation für: &amp;lt;math&amp;gt;{\mathbf X}_\ast = {\mathbf X}~{\mathbf I}&amp;lt;/math&amp;gt;)&lt;br /&gt;
::&amp;lt;math&amp;gt; = {\mathbf I}&amp;#039;&amp;lt;/math&amp;gt; (Notation für: &amp;lt;math&amp;gt;{\mathbf X}&amp;#039; = {\mathbf C}~{\mathbf X}&amp;lt;/math&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Tatsächlich reduziert &amp;lt;math&amp;gt;({\mathbf C}~{\mathbf I}~x~y)&amp;lt;/math&amp;gt; zu &amp;lt;math&amp;gt;(y~x)&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf C}~{\mathbf I}~x~y)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf I}~y~x)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (y~x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Heißt es wirklich „der Applikant“ ? --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;\mathbf B&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;\mathbf C&amp;lt;/math&amp;gt; stellen beschränkte Versionen von &amp;lt;math&amp;gt;\mathbf S&amp;lt;/math&amp;gt; dar.&lt;br /&gt;
Während &amp;lt;math&amp;gt;\mathbf S&amp;lt;/math&amp;gt; einen Wert sowohl in den Applikanten als auch in das Argument einsetzt,&lt;br /&gt;
setzt &amp;lt;math&amp;gt;\mathbf C&amp;lt;/math&amp;gt; diesen nur in den Applikanten und &amp;lt;math&amp;gt;\mathbf B&amp;lt;/math&amp;gt; nur in das Argument ein.&lt;br /&gt;
&lt;br /&gt;
=== Umgekehrte Transformation ===&lt;br /&gt;
Die Transformation &amp;lt;math&amp;gt;L[~]&amp;lt;/math&amp;gt; von CL-Termen in Lambda-Terme ist denkbar einfach, da wir im&lt;br /&gt;
Lambda-Kalkül alle Möglichkeiten haben, die auch in der CL zur Verfügung stehen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; L[{\mathbf I}] = \lambda x.x&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; L[{\mathbf K}] = \lambda x.\lambda y.x&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; L[{\mathbf C}] = \lambda x.\lambda y.\lambda z.(x~z~y)&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; L[{\mathbf B}] = \lambda x.\lambda y.\lambda z.(x~(y~z))&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; L[{\mathbf S}] = \lambda x.\lambda y.\lambda z.(x~z~(y~z))&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; L[(E1~E2)] = (L[E1]~L[E2])&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig ist jedoch zu wissen, dass diese Transformation nicht das Inverse der &amp;lt;math&amp;gt;T[~]&amp;lt;/math&amp;gt;-Transformation ist,&lt;br /&gt;
da &amp;lt;math&amp;gt;T[L[x]]&amp;lt;/math&amp;gt; zwar extensional gleich &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; ist, aber der Term dabei nicht zwingend erhalten bleibt.&lt;br /&gt;
&lt;br /&gt;
== Unentscheidbarkeit des kombinatorischen Kalküls ==&lt;br /&gt;
Es ist unentscheidbar, ob ein genereller Kombinator eine Normalform hat, ob zwei Kombinatoren gleich sind usw.&lt;br /&gt;
Dies ergibt sich schon aus der Ähnlichkeit zum Lambda-Kalkül, aber hier noch einmal ein direkter Beweis:&lt;br /&gt;
&lt;br /&gt;
Der Term&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; {\mathbf \Omega} = ({\mathbf S}~{\mathbf I}~{\mathbf I}~({\mathbf S}~{\mathbf I}~{\mathbf I}))&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
hat keine Normalform, da er mit drei Schritten wieder zu sich selbst reduziert:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf S}~{\mathbf I}~{\mathbf I}~({\mathbf S}~{\mathbf I}~{\mathbf I}))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf I}~({\mathbf S}~{\mathbf I}~{\mathbf I})~({\mathbf I}~({\mathbf S}~{\mathbf I}~{\mathbf I})))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~{\mathbf I}~{\mathbf I}~({\mathbf I}~({\mathbf S}~{\mathbf I}~{\mathbf I})))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf S}~{\mathbf I}~{\mathbf I}~({\mathbf S}~{\mathbf I}~{\mathbf I}))&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
und es keinen anderen Weg geben kann, der den Kombinator kürzer macht.&lt;br /&gt;
&lt;br /&gt;
Sei nun &amp;lt;math&amp;gt;\mathbf N&amp;lt;/math&amp;gt; ein Kombinator, der auf Normalform testet, so dass&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf N}~x) \Rightarrow {\mathbf T}&amp;lt;/math&amp;gt;, wenn &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; eine Normalform hat,&lt;br /&gt;
:&amp;lt;math&amp;gt; {\mathbf F}&amp;lt;/math&amp;gt;, andernfalls.&lt;br /&gt;
&lt;br /&gt;
(&amp;lt;math&amp;gt;\mathbf T&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;\mathbf F&amp;lt;/math&amp;gt; sind hier die korrespondierenden Kombinatoren zu &amp;lt;math&amp;gt;true&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;false&amp;lt;/math&amp;gt; aus dem&lt;br /&gt;
Lambda-Kalkül:&lt;br /&gt;
:&amp;lt;math&amp;gt; true = \lambda x.\lambda y.x = {\mathbf K} = {\mathbf T}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; false = \lambda x.\lambda y.y = ({\mathbf K}~{\mathbf I}) = {\mathbf F}&amp;lt;/math&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Sei nun&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;Z = ({\mathbf C}~({\mathbf C}~({\mathbf B}~{\mathbf N}~({\mathbf S}~{\mathbf I}~{\mathbf I}))~{\mathbf \Omega})~{\mathbf I})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Untersuchen wir den Term &amp;lt;math&amp;gt;({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)&amp;lt;/math&amp;gt;. Hat &amp;lt;math&amp;gt;({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)&amp;lt;/math&amp;gt; eine Normalform?&lt;br /&gt;
Falls ja, müssen auch die folgenden Ableitungen eine Normalform haben:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf I}~Z~({\mathbf I}~Z))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (Z~({\mathbf I}~Z))&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = (Z~Z) &amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf C}~({\mathbf C}~({\mathbf B}~{\mathbf N}~({\mathbf S}~{\mathbf I}~{\mathbf I}))~{\mathbf \Omega})~{\mathbf I}~Z)&amp;lt;/math&amp;gt; (Definition von &amp;lt;math&amp;gt;Z&amp;lt;/math&amp;gt;)&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf C}~({\mathbf B}~{\mathbf N}~({\mathbf S}~{\mathbf I}~{\mathbf I}))~{\mathbf \Omega}~Z~{\mathbf I})&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf B}~{\mathbf N}~({\mathbf S}~{\mathbf I}~{\mathbf I})~Z~{\mathbf \Omega}~{\mathbf I})&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf N}~({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)~{\mathbf \Omega}~{\mathbf I})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun wenden wir &amp;lt;math&amp;gt;\mathbf N&amp;lt;/math&amp;gt; auf &amp;lt;math&amp;gt;({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)&amp;lt;/math&amp;gt; an.&lt;br /&gt;
Entweder hat &amp;lt;math&amp;gt;({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)&amp;lt;/math&amp;gt; eine Normalform oder nicht.&lt;br /&gt;
&lt;br /&gt;
Wenn ja, dann wäre:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;({\mathbf N}~({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)~{\mathbf \Omega}~{\mathbf I})&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf K}~{\mathbf \Omega}~{\mathbf I})&amp;lt;/math&amp;gt; (Definition von &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt;)&lt;br /&gt;
::&amp;lt;math&amp;gt; = {\mathbf \Omega}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
aber &amp;lt;math&amp;gt;\mathbf \Omega&amp;lt;/math&amp;gt; hat &amp;#039;&amp;#039;keine&amp;#039;&amp;#039; Normalform. &amp;lt;math&amp;gt;\mathbf \Omega&amp;lt;/math&amp;gt; haben wir durch Ableitungen aus &amp;lt;math&amp;gt;({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)&amp;lt;/math&amp;gt; erhalten,&lt;br /&gt;
also hat auch &amp;lt;math&amp;gt;({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)&amp;lt;/math&amp;gt; keine Normalform. Dies ist ein Widerspruch.&lt;br /&gt;
&lt;br /&gt;
Falls &amp;lt;math&amp;gt;({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;keine&amp;#039;&amp;#039; Normalform hat, reduziert sich der Term folgendermaßen:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; ({\mathbf N}~({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)~{\mathbf \Omega}~{\mathbf I})&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf K}~{\mathbf I}~{\mathbf \Omega}~{\mathbf I})&amp;lt;/math&amp;gt; (Definition von &amp;lt;math&amp;gt;\mathbf N&amp;lt;/math&amp;gt;)&lt;br /&gt;
::&amp;lt;math&amp;gt; = ({\mathbf I}~{\mathbf I})&amp;lt;/math&amp;gt;&lt;br /&gt;
::&amp;lt;math&amp;gt; = {\mathbf I}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
was bedeutet, dass &amp;lt;math&amp;gt;({\mathbf S}~{\mathbf I}~{\mathbf I}~Z)&amp;lt;/math&amp;gt; als Normalform einfach &amp;lt;math&amp;gt;\mathbf I&amp;lt;/math&amp;gt; hat, also wieder ein Widerspruch.&lt;br /&gt;
Daher kann es keinen solchen Kombinator &amp;lt;math&amp;gt;\mathbf N&amp;lt;/math&amp;gt; geben.&lt;br /&gt;
&amp;lt;!--== Kombinatorische Terme als Graphen == --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Im engl. Artikel noch nicht vorhanden --&amp;gt;&lt;br /&gt;
&amp;lt;!--(NOCH ZU TUN: Details inklusive Illustrationen, eine Diskussion über den Effekt des Fixpunktkombinators Y)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anwendungsgebiete ==&lt;br /&gt;
&lt;br /&gt;
=== Übersetzung funktionaler Programmiersprachen ===&lt;br /&gt;
[[Funktionale Programmiersprache]]n basieren häufig auf der einfachen,&lt;br /&gt;
aber universellen Semantik des Lambda-Kalküls.&lt;br /&gt;
&amp;lt;!-- Hier bitte noch mehr Details, fehlen auch im engl. Artikel --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
David Turner benutzte CL für die Sprache SASL.&lt;br /&gt;
&amp;lt;!-- Hier fehlt ebenfalls alles im englischen Artikel:&lt;br /&gt;
     - strikte vs nicht-strikte Auswertung&lt;br /&gt;
     - Effizienzprobleme bei nicht-strikter Auswertung, z.&amp;amp;nbsp;B.:&lt;br /&gt;
       (square AUFWÄNDIGER_TERM) ⇒ (AUFWÄNDIGER_TERM * AUFWÄNDIGER_TERM)&lt;br /&gt;
     - Vorteile der Graphenreduktion in diesem Fall, da&lt;br /&gt;
       AUFWÄNDIGER_TERM nur noch einmal ausgewertet wird.&lt;br /&gt;
&lt;br /&gt;
=== Logik ===&lt;br /&gt;
Der [[Curry-Howard Isomorphismus]] zeigt die Verwandtschaft von Logik und Programmierung:&lt;br /&gt;
Gültige Beweise eines Theorems in der Logik entsprechen direkt den Reduktionen eines Lambda-Terms,&lt;br /&gt;
und umgekehrt.&lt;br /&gt;
Theoreme selbst werden mit Typsignaturen von Funktionen gleichgesetzt, insbesondere&lt;br /&gt;
korrespondieren getypte CLs mit Hilbert-Systemen in der [[Beweistheorie]]. --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Stimmt die Übersetzung „Hilbert system“ ⇒ „Hilbert-System“? Stimmt es überhaupt im englischen? --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Hier fehlen weitere Ausführungen zum Thema. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quellen ==&lt;br /&gt;
&amp;lt;!-- Ich hab die Referenzen eins zu eins übersetzt, ich bin mir sicher, dass es im Deutschen andere, vielleicht bessere Quellen gibt. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* „Über die Bausteine der mathematischen Logik“, Moses Schönfinkel, 1924, übersetzt als „On the Building Blocks of Mathematical Logic“ in &amp;#039;&amp;#039;From Frege to Gödel: a source book in mathematical logic, 1879–1931&amp;#039;&amp;#039;, ed. Jean van Heijenoort, Harvard University Press, 1977. ISBN 0-674-32449-8 – Die Originalpublikation über kombinatorische Logik.&lt;br /&gt;
* &amp;#039;&amp;#039;Combinatory Logic&amp;#039;&amp;#039;. Curry, Haskell B. &amp;#039;&amp;#039;et al.&amp;#039;&amp;#039;, North-Holland, 1972. ISBN 0-7204-2208-6 – Eine umfassende Übersicht der CL, inklusive der historischen Umrisse.&lt;br /&gt;
* &amp;#039;&amp;#039;Functional Programming&amp;#039;&amp;#039;. Field, Anthony J. and Peter G. Harrison. Addison-Wesley, 1998. ISBN 0-201-19249-7&lt;br /&gt;
* [https://www.cl.cam.ac.uk/teaching/Lectures/founds-fp/Founds-FP.ps.gz „Foundations of Functional Programming“] ([[gzip|GZIP]]; 105&amp;amp;nbsp;kB). Lawrence C. Paulson. University of Cambridge, 1995.&lt;br /&gt;
* [https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.7385 „Lectures on the Curry-Howard Isomorphism“]. Sørensen, Morten Heine B. and Pawel Urzyczyn. University of Copenhagen and University of Warsaw, 1998.&lt;br /&gt;
* „Principal Type-Schemes and Condensed Detachment“, Hindley and Meredith, Journal of Symbolic Logic (JSL), Volume 55 (1990), Number 1, pages 90–105&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* {{SEP|https://plato.stanford.edu/entries/logic-combinatory/|Combinatory Logic|Katalin Bimbó}}&lt;br /&gt;
&lt;br /&gt;
{{Normdaten|TYP=s|GND=4164750-6|LCCN=sh/85/28814}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mathematische Logik]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Horst Gräbner</name></author>
	</entry>
</feed>