<?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=Church-Kodierung</id>
	<title>Church-Kodierung - 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=Church-Kodierung"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Church-Kodierung&amp;action=history"/>
	<updated>2026-06-27T21:03:54Z</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=Church-Kodierung&amp;diff=910081&amp;oldid=prev</id>
		<title>imported&gt;Moraxno: /* growthexperiments-addlink-summary-summary:1|1|0 */</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Church-Kodierung&amp;diff=910081&amp;oldid=prev"/>
		<updated>2024-12-11T19:33:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:1|1|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Unter &amp;#039;&amp;#039;&amp;#039;Church-Kodierung&amp;#039;&amp;#039;&amp;#039; versteht man die Einbettung von Daten und Operatoren in den [[Lambda-Kalkül]]. Die bekannteste Form sind die &amp;#039;&amp;#039;&amp;#039;Church-Numerale&amp;#039;&amp;#039;&amp;#039;, welche die [[Natürliche Zahl|natürlichen Zahlen]] repräsentieren. Benannt sind sie nach [[Alonzo Church]], der Daten als Erster auf diese Weise modellierte.&lt;br /&gt;
&lt;br /&gt;
== Church-Numerale ==&lt;br /&gt;
&lt;br /&gt;
=== Definition ===&lt;br /&gt;
&lt;br /&gt;
Die Grundidee zur Kodierung beruht auf den [[Peano-Axiome]]n, wonach die natürlichen Zahlen durch einen Startwert – die 0 – und einer Nachfolger-Funktion definiert sind. Demnach sind die Church-Numerale wie folgt definiert:&lt;br /&gt;
&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λf.λx. x&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λf.λx. f x&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λf.λx. f (f x)&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λf.λx. f (f (f x))&amp;lt;/code&amp;gt;&lt;br /&gt;
: ...&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λf.λx. f&amp;lt;sup&amp;gt;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;lt;/sup&amp;gt; x&amp;lt;/code&amp;gt;&lt;br /&gt;
In der obigen Liste ist &amp;lt;code&amp;gt;f&amp;lt;/code&amp;gt; die Nachfolger-Funktion und &amp;lt;code&amp;gt;x&amp;lt;/code&amp;gt; der Startwert, beides sind Parameter der Definition. Die Definition ist unabhängig von der Ausprägung des Startwertes oder der Nachfolger-Funktion. Somit sind die Numerale nur repräsentativ. Jedes einzelne Numeral benutzt die beiden Parameter für seine Implementation. Solange man sich aber nicht festlegt, worin genau der Startwert und die Nachfolger-Funktion besteht, ist auch nicht festgelegt, was die Numerale schlussendlich machen. Die Definition basiert lediglich auf den Annahme, dass es so etwas wie einen Startwert und eine dazu passende Nachfolger-Funktion geben mag, wie immer die auch aussehen mögen. Unter dieser Annahme machen die Numerale das Folgende:&lt;br /&gt;
&lt;br /&gt;
* Das Numeral &amp;#039;&amp;#039;&amp;#039;0&amp;#039;&amp;#039;&amp;#039; benutzt die Nachfolger-Funktion gar nicht, weil es nur den Startwert zurückgibt.&lt;br /&gt;
* Das Numeral &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; benutzt sowohl Nachfolger-Funktion als auch Startwert, indem es die Nachfolge-Funktion genau einmal auf den Startwert anwendet.&lt;br /&gt;
* Das Numeral &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; benutzt wie Numeral 1 und alle folgenden Numerale ebenfalls Nachfolger-Funktion und Startwert, wendet die Nachfolger-Funktion aber zweimal auf den Startwert an.&lt;br /&gt;
* Das Numeral &amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039; macht das gleiche wie Numeral 2, nur wendet es die Nachfolger-Funktion diesmal dreimal auf den Startwert an.&lt;br /&gt;
* Das Numeral &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; folgt der Regel und wendet die Nachfolger-Funktion n mal auf den Startwert an.&lt;br /&gt;
&lt;br /&gt;
=== Rechnen mit Church-Numeralen ===&lt;br /&gt;
&lt;br /&gt;
Im Lambda-Kalkül sind arithmetische Funktionen durch korrespondierende Funktionen über Church-Numerale darstellbar. Diese Funktionen können in [[Funktionale Programmierung|funktionalen Programmiersprachen]] direkt durch Übertragen der Lambda-Ausdrücke implementiert werden. &lt;br /&gt;
&lt;br /&gt;
Die Nachfolger-Funktion wird wie folgt definiert:&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;succ&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λn.λf.λx. f (n f x)&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Die Addition zweier Zahlen &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; ist die &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;-malige Anwendung der Nachfolger-Funktion auf &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;plus&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λm.λn.λf.λx. m f (n f x)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Multiplikation zweier Zahlen &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; ist die &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;-malige Anwendung der Addition &amp;lt;math&amp;gt;(+n)&amp;lt;/math&amp;gt; auf &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;:&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;mult&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λm.λn.λf.λx. m (n f) x&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Vorgänger-Funktion:&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;pred&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λn.λf.λx. n (λg.λh. h (g f)) (λu. x) (λu. u)&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Boolesche Ausdrücke ==&lt;br /&gt;
&lt;br /&gt;
Analog zu den natürlichen Zahlen lassen sich auch (zweiwertige) [[Wahrheitswert]]e im Lambda-Kalkül modellieren.&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;true&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λx.λy. x&amp;lt;/code&amp;gt;&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;false&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λx.λy. y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daraus lässt sich auch eine einfache [[Kontrollstruktur]] ([[Verzweigung (Programmierung)|IF THEN ELSE]]) ableiten:&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;ifthenelse&amp;#039;&amp;#039;&amp;#039; ≡ &amp;lt;code&amp;gt;λb.λx.λy.b x y&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dabei ist die Variable &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; als Bedingung zu verstehen, &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; als „THEN“ und &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; als „ELSE“.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Mathematische Logik]]&lt;br /&gt;
[[Kategorie:Berechenbarkeitstheorie]]&lt;br /&gt;
[[Kategorie:Mathematische Notation]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Moraxno</name></author>
	</entry>
</feed>