• Keine Ergebnisse gefunden

Rekursives Programmieren

N/A
N/A
Protected

Academic year: 2022

Aktie "Rekursives Programmieren"

Copied!
84
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Rekursives Programmieren - Theorie

Rekursives Programmieren

Alexander Steinicke Montanuniversit¨at Leoben

Vorlesung, 5.3.2020

(2)

Rekursives Programmieren - Theorie

1 Algorithmen

2 Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring

3 Primitiv-rekursive Funktionen

(3)

Rekursives Programmieren - Theorie Algorithmen

Was sind Algorithmen?

Charakteristika:

Verfahren zur L¨osung von Problemen einer (klar definierten) Klasse

“Rezeptcharakter” des Algorithmus

Determinierte, nicht determinierte Algorithmen Abbrechende, nicht abbrechende Algorithmen Algorithmus vollzieht sich in Schritten

Sukzessive Herstellung von Konfigurationen in einer Apparatur Diskretheit der Konfigurationen (kein Analogrechner)

(4)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen

1 Algorithmen

2 Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring

(5)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen

Definition

SeiA 6=∅ eine endliche Menge.

Die MengeW(A) :=S

n≥0An heißt Menge derW¨orter¨uber dem AlphabetA.

F¨ur jedesu = (a1, . . . ,an) =a1· · ·an∈ W(A) heißt n die L¨ange

vonu,n =`(u).

Es gibt genau ein Wort der L¨ange 0, dasleere Wort. Bezeichnung:

♦∈ A0.

Elemente vonA heißen Buchstaben, Symbole, Zeichen, Chars.

Statt W¨orter auch: Zeichenketten, Strings.

(6)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen

Man beobachtet sofort:

Lemma

1 F¨ur jedes AlphabetA istW(A) abz¨ahlbar unendlich.

2 Mit der Verkn¨upfung

(a1· · ·an,b1· · ·bm)7→a1· · ·anb1· · ·bm

(Verkettung, Concatenation) istW(A) ein Monoid (Verkn¨upfung assoziativ) mit neutralem Element ♦.

(7)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen

Definition

SeienA,B Alphabete.

Eine Funktionf:W(A)→ W(B) heißt berechenbar, wenn es einen Algorithmus so gibt, dass f¨ur jedesu ∈ W(A) das f(u)∈ W(B) durch Anwendung eines Algorithmus in endlich vielen Schritten berechnet werden kann.

Bemerkungen:

1 W(A),W(B) sind abz¨ahlbare Mengen.

⇒ Nur Funktionen, die auf einer abz¨ahlbaren Menge definiert sind, k¨onnen berechenbar sein.

zB.f :I →R, wobeiI ⊆RIntervall mit mehr als 1 Punkt ist, ist nicht berechenbar.

2 W(A),W(B) sind abz¨ahlbar unendlich.

⇒ Menge aller Funktionen f:W(A)→ W(B) ist nicht abz¨ahlbar.

(8)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen

Definition

SeienA,B Alphabete.

Eine Funktionf:W(A)→ W(B) heißt berechenbar, wenn es einen Algorithmus so gibt, dass f¨ur jedesu ∈ W(A) das f(u)∈ W(B) durch Anwendung eines Algorithmus in endlich vielen Schritten berechnet werden kann.

Bemerkungen:

1 W(A),W(B) sind abz¨ahlbare Mengen.

⇒ Nur Funktionen, die auf einer abz¨ahlbaren Menge definiert sind, k¨onnen berechenbar sein.

zB.f :I →R, wobeiI ⊆RIntervall mit mehr als 1 Punkt ist, ist nicht berechenbar.

2 W(A),W(B) sind abz¨ahlbar unendlich.

⇒ Menge aller Funktionenf :W(A)→ W(B) ist nicht abz¨ahlbar.

(9)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen

Definition

SeienA,B Alphabete.

Eine Funktionf:W(A)→ W(B) heißt berechenbar, wenn es einen Algorithmus so gibt, dass f¨ur jedesu ∈ W(A) das f(u)∈ W(B) durch Anwendung eines Algorithmus in endlich vielen Schritten berechnet werden kann.

Bemerkungen:

1 W(A),W(B) sind abz¨ahlbare Mengen.

⇒ Nur Funktionen, die auf einer abz¨ahlbaren Menge definiert sind, k¨onnen berechenbar sein.

zB.f :I →R, wobeiI ⊆RIntervall mit mehr als 1 Punkt ist, ist nicht berechenbar.

2 W(A),W(B) sind abz¨ahlbar unendlich.

⇒ Menge aller Funktionenf :W(A)→ W(B) ist nicht abz¨ahlbar.

(10)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen

2 W(A),W(B) sind abz¨ahlbar unendlich.

⇒ Menge aller Funktionenf :W(A)→ W(B) ist nicht abz¨ahlbar.

3 Es gibt nur abz¨ahlbar viele Algorithmen

(Beschreibung eines jeden Algorithmus durch einen endlichen Text in einer fix gew¨ahlten Sprache)

und daher nur abz¨ahlbar viele berechenbare Funktionen f :W(A)→ W(B).

(11)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen

2 W(A),W(B) sind abz¨ahlbar unendlich.

⇒ Menge aller Funktionenf :W(A)→ W(B) ist nicht abz¨ahlbar.

3 Es gibt nur abz¨ahlbar viele Algorithmen

(Beschreibung eines jeden Algorithmus durch einen endlichen Text in einer fix gew¨ahlten Sprache)

und daher nur abz¨ahlbar viele berechenbare Funktionen f :W(A)→ W(B).

(12)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

1 Algorithmen

2 Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring

(13)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

A) SeiAein Alphabet. Dann ist W(A) abz¨ahlbar unendlich.

Es existiert also eine BijektionW(A)→N.

Beschreibung einer BijektiongA:W(A)↔N: SeiA={a1, . . . ,ap} (p ≥1).

Graduiert-lexikographische Ordnung aufW(A):

♦,

a1,a2, . . . ,ap,

a1a1,a1a2, . . . ,a1ap,a2a1, . . . ,a2ap, . . . ,apa1, . . . ,apap, a1a1a1, . . . ,apapap,

a1a1a1a1, . . . ...

Die Ordnung liefert eine BijektiongA:W(A)↔Ndurch gA(♦) = 0, gA(a1) = 1, gA(a1a1) =p+ 1, . . .

(14)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

A) SeiAein Alphabet. Dann ist W(A) abz¨ahlbar unendlich.

Es existiert also eine BijektionW(A)→N.

Beschreibung einer BijektiongA:W(A)↔N: SeiA={a1, . . . ,ap} (p ≥1).

Graduiert-lexikographische Ordnung aufW(A):

♦,

a1,a2, . . . ,ap,

a1a1,a1a2, . . . ,a1ap,a2a1, . . . ,a2ap, . . . ,apa1, . . . ,apap, a1a1a1, . . . ,apapap,

a1a1a1a1, . . . ...

Die Ordnung liefert eine BijektiongA:W(A)↔Ndurch gA(♦) = 0, gA(a1) = 1, gA(a1a1) =p+ 1, . . .

(15)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

A) SeiAein Alphabet. Dann ist W(A) abz¨ahlbar unendlich.

Es existiert also eine BijektionW(A)→N.

Beschreibung einer BijektiongA:W(A)↔N: SeiA={a1, . . . ,ap} (p ≥1).

Graduiert-lexikographische Ordnung aufW(A):

♦,

a1,a2, . . . ,ap,

a1a1,a1a2, . . . ,a1ap,a2a1, . . . ,a2ap, . . . ,apa1, . . . ,apap, a1a1a1, . . . ,apapap,

a1a1a1a1, . . . ...

Die Ordnung liefert eine BijektiongA:W(A)↔Ndurch

gA(♦) = 0, gA(a1) = 1, gA(a1a1) =p+ 1, . . . 8 / 30

(16)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

Damit:

WennA geordnet ist, dann istgA:W(A)→N“berechenbar”.

EbensogA−1.

B)N={0,1,2, . . .} ist kein Wortmonoid.

Aber: Elemente vonNk¨onnen “codiert” werden.

1. M¨oglichkeit: Strichcode:

S={|}, W(S) ={♦,|,||,|||, . . .}. Die Funktion s:N→ W(S),n7→ ||| · · · |

| {z }

nmal

heißt Strichcodierung vonNund ist berechenbar.

(17)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

Damit:

WennA geordnet ist, dann istgA:W(A)→N“berechenbar”.

EbensogA−1.

B)N={0,1,2, . . .} ist kein Wortmonoid.

Aber: Elemente vonNk¨onnen “codiert” werden.

1. M¨oglichkeit: Strichcode:

S={|}, W(S) ={♦,|,||,|||, . . .}. Die Funktion s:N→ W(S),n 7→ ||| · · · |

| {z }

nmal

heißt Strichcodierung vonNund ist berechenbar.

(18)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

2. M¨oglichkeit: q-adische Codierungen: q∈N,q ≥2.

Zq :={0, . . . ,q−1} ...q paarweise verschiedene Ziffern. Zifferndarstellung:

N↔ Zq

n=k0q0+k1q1+· · ·+kdgd ↔kdkd−1· · ·k1k0

ki ∈ {0, . . . ,q−1},kd 6= 0.

(19)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

2. M¨oglichkeit: q-adische Codierungen: q∈N,q ≥2.

Zq :={0, . . . ,q−1} ...q paarweise verschiedene Ziffern.

Zifferndarstellung:

N↔ Zq

n=k0q0+k1q1+· · ·+kdgd ↔kdkd−1· · ·k1k0

ki ∈ {0, . . . ,q−1},kd 6= 0.

(20)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

2. M¨oglichkeit: q-adische Codierungen: q∈N,q ≥2.

Zq :={0, . . . ,q−1} ...q paarweise verschiedene Ziffern.

Zifferndarstellung:

N↔ Zq

n=k0q0+k1q1+· · ·+kdgd ↔kdkd−1· · ·k1k0

ki ∈ {0, . . . ,q−1},kd 6= 0.

(21)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

SeienA,B Alphabete,gA:W(A)→N,gB:W(B)→N.

F¨ur eine Funktionf :W(A)→ W(B) erh¨alt man folgendes Diagramm:

W(A) −→ Wf (B)

↓gA ↓gB

N

f˜

→ N

↓s ↓s W(S)

˜˜

f

→ W(S)

wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1. Definition

Eine Funktion ˜f:N→Nheißt arithmetisch berechenbar, wenn die dazugeh¨orige Funktion ˜˜f =s◦f˜◦s−1 (nach obigem Diagramm) berechenbar ist.

(22)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

SeienA,B Alphabete,gA:W(A)→N,gB:W(B)→N. F¨ur eine Funktionf :W(A)→ W(B) erh¨alt man folgendes Diagramm:

W(A) −→ Wf (B)

↓gA ↓gB

N

f˜

→ N

↓s ↓s W(S)

˜˜

f

→ W(S)

wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1.

Definition

Eine Funktion ˜f:N→Nheißt arithmetisch berechenbar, wenn die dazugeh¨orige Funktion ˜˜f =s◦f˜◦s−1 (nach obigem Diagramm) berechenbar ist.

(23)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

SeienA,B Alphabete,gA:W(A)→N,gB:W(B)→N. F¨ur eine Funktionf :W(A)→ W(B) erh¨alt man folgendes Diagramm:

W(A) −→ Wf (B)

↓gA ↓gB

N

f˜

→ N

↓s ↓s W(S)

˜˜

f

→ W(S)

wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1. Definition

Eine Funktion ˜f:N→Nheißt arithmetisch berechenbar, wenn die dazugeh¨orige Funktion ˜˜f =s◦f˜◦s−1 (nach obigem Diagramm) berechenbar ist.

(24)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

W(A) −→ Wf (B)

↓gA ↓gB

N

f˜

→ N

↓s ↓s W(S)

˜˜

f

→ W(S)

wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1. Es gilt:

f berechenbar⇔ f˜arithmetisch berechenbar⇔ ˜˜f berechenbar.

Fazit: Man braucht nur arithmetisch berechenbare Funktionen.

(25)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Arithmetische berechenbare Funktionen

W(A) −→ Wf (B)

↓gA ↓gB

N

f˜

→ N

↓s ↓s W(S)

˜˜

f

→ W(S)

wobei ˜f =gB◦f ◦gA−1 und ˜˜f =s◦gB◦f ◦gA−1◦s−1. Es gilt:

f berechenbar⇔ f˜arithmetisch berechenbar⇔ ˜˜f berechenbar.

Fazit: Man braucht nur arithmetisch berechenbare Funktionen.

(26)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Definition

1 A Alphabet,W(A).

M ⊆ W(A) heißtaufz¨ahlbar:⇔

M=∅oder ∃f:N→ W(A) berechenbar und M={f(0),f(1),f(2), . . .}.

2 M ⊆Nheißt aufz¨ahlbar:⇔

M =∅oder ∃f:N→N arithmetisch berechenbar und M ={f(0),f(1),f(2), . . .}.

Achtung:

aufz¨ahlbar6= abz¨ahlbar ! engl:

enumerable, recursively enumerable6= countable, denumerable !

(27)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Definition

1 A Alphabet,W(A).

M ⊆ W(A) heißtaufz¨ahlbar:⇔

M=∅oder ∃f:N→ W(A) berechenbar und M={f(0),f(1),f(2), . . .}.

2 M ⊆Nheißt aufz¨ahlbar:⇔

M =∅oder ∃f:N→N arithmetisch berechenbar und M ={f(0),f(1),f(2), . . .}.

Achtung:

aufz¨ahlbar6= abz¨ahlbar ! engl:

enumerable, recursively enumerable6= countable, denumerable !

(28)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beispiel: M = die Menge aller Primzahlen.

Bestimmung vonf:N→NmitM =f[N]: f(0) = kleinste Primzahl = 2

f(1) = kleinste Primzahl >f(0) = 2

Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3

-wenn nein, dann untersuche ob 4 Primzahl ...

Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)

wesentlich: Menge aller Primzahlen ist nicht endlich;f ist

“berechenbar”

(29)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beispiel: M = die Menge aller Primzahlen.

Bestimmung vonf:N→NmitM =f[N]:

f(0) = kleinste Primzahl = 2

f(1) = kleinste Primzahl >f(0) = 2

Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3

-wenn nein, dann untersuche ob 4 Primzahl ...

Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)

wesentlich: Menge aller Primzahlen ist nicht endlich;f ist

“berechenbar”

(30)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beispiel: M = die Menge aller Primzahlen.

Bestimmung vonf:N→NmitM =f[N]:

f(0) = kleinste Primzahl = 2

f(1) = kleinste Primzahl >f(0) = 2

Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3

-wenn nein, dann untersuche ob 4 Primzahl ...

Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)

wesentlich: Menge aller Primzahlen ist nicht endlich;f ist

“berechenbar”

(31)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beispiel: M = die Menge aller Primzahlen.

Bestimmung vonf:N→NmitM =f[N]:

f(0) = kleinste Primzahl = 2

f(1) = kleinste Primzahl >f(0) = 2

Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3

-wenn nein, dann untersuche ob 4 Primzahl ...

Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)

wesentlich: Menge aller Primzahlen ist nicht endlich;f ist

“berechenbar”

(32)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beispiel: M = die Menge aller Primzahlen.

Bestimmung vonf:N→NmitM =f[N]:

f(0) = kleinste Primzahl = 2

f(1) = kleinste Primzahl >f(0) = 2

Berechnung vonf(1): Untersuche ob 3 Primzahl -wenn ja, dannf(1) = 3

-wenn nein, dann untersuche ob 4 Primzahl ...

Allgemein: f(0), . . . ,f(k) schon definiert f(k+ 1) := kleinste Primzahl >f(k)

wesentlich: Menge aller Primzahlen ist nicht endlich;f ist

(33)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Definition

1 A Alphabet,W(A).

M ⊆ W(A) heißtentscheidbar :⇔

χM:W(A)→ {0,1},u 7→

(0, u ∈ M, 1, u ∈ M/ ist berechenbar.

2 M ⊆Nheißt entscheidbar:⇔

χM:N→ {0,1},n7→

(0, n∈M, 1, u ∈/M ist berechenbar.

Beispiel: M = Menge aller Primzahlen ist entscheidbar und aufz¨ahlbar

(34)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Definition

1 A Alphabet,W(A).

M ⊆ W(A) heißtentscheidbar :⇔

χM:W(A)→ {0,1},u 7→

(0, u ∈ M, 1, u ∈ M/ ist berechenbar.

2 M ⊆Nheißt entscheidbar:⇔

χM:N→ {0,1},n7→

(0, n∈M, 1, u ∈/M ist berechenbar.

(35)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Satz

Sei M⊆N. Dann gilt

M entscheidbar ⇔M und N\M aufz¨ahlbar.

(analog f¨urM ⊆ W(A))

Achtung:M aufz¨ahlbar alleine gen¨ugt nicht!

(36)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beweis: ⇒:

SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.

Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist

χN\M(k) =

(0, χM(k) = 1 1, χM(k) = 0. Also ist auchN\M entscheidbar.

Daher gen¨ugt: ZeigeM ist aufz¨ahlbar. 1. Fall: M =∅. Dann istM aufz¨ahlbar.

2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:

(37)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beweis: ⇒:

SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.

Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist

χN\M(k) =

(0, χM(k) = 1 1, χM(k) = 0.

Also ist auchN\M entscheidbar.

Daher gen¨ugt: ZeigeM ist aufz¨ahlbar. 1. Fall: M =∅. Dann istM aufz¨ahlbar.

2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:

(38)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beweis: ⇒:

SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.

Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist

χN\M(k) =

(0, χM(k) = 1 1, χM(k) = 0.

Also ist auchN\M entscheidbar.

Daher gen¨ugt: ZeigeM ist aufz¨ahlbar.

1. Fall: M =∅. Dann istM aufz¨ahlbar.

2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:

(39)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beweis: ⇒:

SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.

Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist

χN\M(k) =

(0, χM(k) = 1 1, χM(k) = 0.

Also ist auchN\M entscheidbar.

Daher gen¨ugt: ZeigeM ist aufz¨ahlbar.

1. Fall: M =∅. Dann istM aufz¨ahlbar.

2. Fall: M 6=∅.

Definiere eine berechenbare Funktion f:N→N mitM =f[N] rekursiv so:

(40)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Beweis: ⇒:

SeiM entscheidbar. Dann istχM:N→ {0,1} berechenbar.

Also istχN\M:N→ {0,1}berechenbar, denn f¨ur k ∈N ist

χN\M(k) =

(0, χM(k) = 1 1, χM(k) = 0.

Also ist auchN\M entscheidbar.

Daher gen¨ugt: ZeigeM ist aufz¨ahlbar.

1. Fall: M =∅. Dann istM aufz¨ahlbar.

2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:

(41)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:

F¨ur jedesk ∈Nsei

f(k) :=









kleinstes Element von fallsM \ {f(0), . . . ,f(k−1)} 6=∅ M\{f(0), . . . ,f(k−1)}

f(0), sonst.

Es ist also

f(0) = kleinstes Element von M (in endl. vielen Schritten findbar, daM entscheidbar.) f(1) = kleinstes Element von M\ {f(0)}

...

Zeige noch: M =f[N] ={f(0),f(1), . . .}.

(42)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:

F¨ur jedesk ∈Nsei

f(k) :=









kleinstes Element von fallsM \ {f(0), . . . ,f(k−1)} 6=∅ M\{f(0), . . . ,f(k−1)}

f(0), sonst.

Es ist also

f(0) = kleinstes Element von M (in endl. vielen Schritten findbar, daM entscheidbar.) f(1) = kleinstes Element von M\ {f(0)}

...

Zeige noch: M =f[N] ={f(0),f(1), . . .}.

(43)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:

F¨ur jedesk ∈Nsei

f(k) :=









kleinstes Element von fallsM \ {f(0), . . . ,f(k−1)} 6=∅ M\{f(0), . . . ,f(k−1)}

f(0), sonst.

Es ist also

f(0) = kleinstes Element von M (in endl. vielen Schritten findbar, daM entscheidbar.) f(1) = kleinstes Element von M\ {f(0)}

...

Zeige noch: M =f[N] ={f(0),f(1), . . .}.

(44)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

2. Fall: M 6=∅. Definiere eine berechenbare Funktionf:N→N mitM =f[N] rekursiv so:

F¨ur jedesk ∈Nsei

f(k) :=









kleinstes Element von fallsM \ {f(0), . . . ,f(k−1)} 6=∅ M\{f(0), . . . ,f(k−1)}

f(0), sonst.

Es ist also

f(0) = kleinstes Element von M (in endl. vielen Schritten findbar, daM entscheidbar.) f(1) = kleinstes Element von M\ {f(0)}

..

(45)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Zeige noch: M =f[N] ={f(0),f(1), . . .}.

Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M. Annahme: f[N]6=M.

Dann existiert ein kleinstes Elementp∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.

Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.

F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.

Das ist ein Widerspruch zur Definition vonf(0) resp. f(k). Damit istM =f[N].

(46)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Zeige noch: M =f[N] ={f(0),f(1), . . .}.

Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M.

Annahme: f[N]6=M.

Dann existiert ein kleinstes Elementp∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.

Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.

F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.

Das ist ein Widerspruch zur Definition vonf(0) resp. f(k). Damit istM =f[N].

(47)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Zeige noch: M =f[N] ={f(0),f(1), . . .}.

Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M.

Annahme: f[N]6=M.

Dann existiert ein kleinstes Elementp ∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.

Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.

F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.

Das ist ein Widerspruch zur Definition vonf(0) resp. f(k). Damit istM =f[N].

(48)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Zeige noch: M =f[N] ={f(0),f(1), . . .}.

Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M.

Annahme: f[N]6=M.

Dann existiert ein kleinstes Elementp ∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.

Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.

F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.

Das ist ein Widerspruch zur Definition vonf(0) resp. f(k). Damit istM =f[N].

(49)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

Zeige noch: M =f[N] ={f(0),f(1), . . .}.

Es gilt: ∀k ∈N:f(k)∈M nach Def. vonf. Also istf[N]⊆M.

Annahme: f[N]6=M.

Dann existiert ein kleinstes Elementp ∈M\f[N].Nachdem M!\f[N]6=∅folgt, dass M\{f(0), . . . ,f(k−1)} 6=∅ f¨ur alle k≥0.

Also ist 0≤f(0)<f(1)<f(2)<f(3)<· · ·.

F¨urp gilt also entweder 0≤p ≤f(0) oder f(k−1)<p<f(k) f¨ur eink ≥0.

Das ist ein Widerspruch zur Definition vonf(0) resp. f(k).

Damit istM =f[N].

(50)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

⇐: Annahme: M und N\M aufz¨ahlbar.

Wie eine Entscheidung finden f¨ur k ∈M?

Es gibt:

f:N→Nberechenbar mit M ={f(0),f(1), . . .} g:N→Nberechenbar mit N\M ={g(0),g(1), . . .}. Berechne sukzessivef(0),g(0),f(1),g(1), . . .

Es existiert entweder ein kleinstesi mitf(i) =k oder ein kleinstes j mitg(j) =k. Genau einer dieser beiden F¨alle tritt nach endlich vielen Schritten ein. Damit istM entscheidbar.

(51)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

⇐: Annahme: M und N\M aufz¨ahlbar.

Wie eine Entscheidung finden f¨ur k ∈M? Es gibt:

f:N→Nberechenbar mit M ={f(0),f(1), . . .} g:N→Nberechenbar mit N\M ={g(0),g(1), . . .}.

Berechne sukzessivef(0),g(0),f(1),g(1), . . .

Es existiert entweder ein kleinstesi mitf(i) =k oder ein kleinstes j mitg(j) =k. Genau einer dieser beiden F¨alle tritt nach endlich vielen Schritten ein. Damit istM entscheidbar.

(52)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

⇐: Annahme: M und N\M aufz¨ahlbar.

Wie eine Entscheidung finden f¨ur k ∈M? Es gibt:

f:N→Nberechenbar mit M ={f(0),f(1), . . .} g:N→Nberechenbar mit N\M ={g(0),g(1), . . .}.

Berechne sukzessivef(0),g(0),f(1),g(1), . . .

Es existiert entweder ein kleinstesi mitf(i) =k oder ein kleinstes j mitg(j) =k. Genau einer dieser beiden F¨alle tritt nach endlich vielen Schritten ein. Damit istM entscheidbar.

(53)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Aufz¨ahlbare und entscheidbare Mengen

⇐: Annahme: M und N\M aufz¨ahlbar.

Wie eine Entscheidung finden f¨ur k ∈M? Es gibt:

f:N→Nberechenbar mit M ={f(0),f(1), . . .} g:N→Nberechenbar mit N\M ={g(0),g(1), . . .}.

Berechne sukzessivef(0),g(0),f(1),g(1), . . .

Es existiert entweder ein kleinstesi mitf(i) =k oder ein kleinstes j mitg(j) =k. Genau einer dieser beiden F¨alle tritt nach endlich vielen Schritten ein. Damit istM entscheidbar.

(54)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Verallgemeinerung f¨ur mehrere Komponenten

1 Algorithmen

2 Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring

(55)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Verallgemeinerung f¨ur mehrere Komponenten

Alle obigen Definitionen sind erweiterbar:

SeienA1, . . . ,Ap,BAlphabete und

f:W(A1)× · · · × W(Ap)→ W(B).

Definition

f ist berechenbar :⇔

F¨ur jedes (u1, . . . ,up)∈ W(A1)× · · · × W(Ap) istf(u1, . . . ,up) berechenbar durch einen Algorithmus.

Ebenso: Entscheidbar, aufz¨ahlbar ¨ahnlich definiert f¨ur mehrere Komponenten.

Analog f¨ur arithmetische Funktionenf:Np→N.

(56)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Verallgemeinerung f¨ur mehrere Komponenten

Alle obigen Definitionen sind erweiterbar:

SeienA1, . . . ,Ap,BAlphabete und

f:W(A1)× · · · × W(Ap)→ W(B).

Definition

f ist berechenbar :⇔

F¨ur jedes (u1, . . . ,up)∈ W(A1)× · · · × W(Ap) istf(u1, . . . ,up) berechenbar durch einen Algorithmus.

Ebenso: Entscheidbar, aufz¨ahlbar ¨ahnlich definiert f¨ur mehrere Komponenten.

(57)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Weitere Begriffe nachTuring

1 Algorithmen

2 Berechenbare Funktionen

Alphabete, W¨orter, berechenbare Funktionen Arithmetische berechenbare Funktionen Aufz¨ahlbare und entscheidbare Mengen Verallgemeinerung f¨ur mehrere Komponenten Weitere Begriffe nachTuring

3 Primitiv-rekursive Funktionen

(58)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Weitere Begriffe nachTuring

Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.

Eingabe: “leeres Band mit Zellen”

Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band. Solche Maschinen werden beschrieben durchn×4-Matrizen. Definition

f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.

Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und Turing-aufz¨ahlbar.

(59)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Weitere Begriffe nachTuring

Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.

Eingabe: “leeres Band mit Zellen”

Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band.

Solche Maschinen werden beschrieben durchn×4-Matrizen. Definition

f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.

Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und Turing-aufz¨ahlbar.

(60)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Weitere Begriffe nachTuring

Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.

Eingabe: “leeres Band mit Zellen”

Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band.

Solche Maschinen werden beschrieben durchn×4-Matrizen.

Definition

f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.

Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und Turing-aufz¨ahlbar.

(61)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Weitere Begriffe nachTuring

Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.

Eingabe: “leeres Band mit Zellen”

Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band.

Solche Maschinen werden beschrieben durchn×4-Matrizen.

Definition

f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.

Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und Turing-aufz¨ahlbar.

(62)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Weitere Begriffe nachTuring

Turing-Maschine (nachAlan Turing): Mathematische Formalisierung einer ”rechnenden Maschine“ nach dem Modell eines rechnenden Menschen.

Eingabe: “leeres Band mit Zellen”

Ausgabe (wenn Maschine stoppt): Bedruckte Zellen auf dem Band.

Solche Maschinen werden beschrieben durchn×4-Matrizen.

Definition

f:W(A)→ W(B) heißtTuring-berechenbar :⇔ Es gibt eine Turing-Maschine, die f¨ur jedes u∈ W(A) stoppt undf(u) ausgibt.

Damit erh¨alt man auch die Begriffe: Turing-entscheidbar und -aufz¨ahlbar.

(63)

Rekursives Programmieren - Theorie Berechenbare Funktionen

Weitere Begriffe nachTuring

These vonAlonzo Church:

These

Die “berechenbaren” Funktionen sind genau die Turing-berechenbaren Funktionen.

(64)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Funktionenf:Nn→N,n≥0.

Nn={a:{1, . . . ,n} →N} 3(a1,a2, . . . ,an).

N0 ={a:∅ →N}besitzt nur ein Element: (∅,N,∅). Damit: f:N0 →N⇔f ∈N.

Fazit: 0-stellige arithmetische Funktionen sind Elemente ausN.

(65)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Funktionenf:Nn→N,n≥0.

Nn={a:{1, . . . ,n} →N} 3(a1,a2, . . . ,an).

N0 ={a:∅ →N}besitzt nur ein Element: (∅,N,∅).

Damit: f:N0 →N⇔f ∈N.

Fazit: 0-stellige arithmetische Funktionen sind Elemente ausN.

(66)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Funktionenf:Nn→N,n≥0.

Nn={a:{1, . . . ,n} →N} 3(a1,a2, . . . ,an).

N0 ={a:∅ →N}besitzt nur ein Element: (∅,N,∅).

Damit: f:N0 →N⇔f ∈N.

Fazit: 0-stellige arithmetische Funktionen sind Elemente ausN.

(67)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Konvention

1 F¨ur jedesn≥0 und jedesk ∈Nsei

ckn:Nn→N,(x1, . . . ,xn)7→k die konstante Funktion mit Wert k.

2 F¨ur jedesn≥1 undi mit 1≤i ≤n sei pin:Nn→N,(x1, . . . ,xn)7→xi diei-te Projektion.

3 N:N→N, sei die Nachfolgerfunktion.

(68)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Definition

Eine arithmetische Funktionf :Nn→N,(n≥0) heißt

primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:

(PR 1) f =c00 (Erinnerung: c00= 0∈N) (PR 2) f =pin mitn≥1 und 1≤i ≤n (PR 3) f =N

(PR 4) Es gibt primitiv-rekursive Funktionen g:Np→N und h1:Np →N, . . . ,hp:Np→Nmit

f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).

Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).

(69)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Definition

Eine arithmetische Funktionf :Nn→N,(n≥0) heißt

primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:

(PR 1) f =c00 (Erinnerung: c00= 0∈N)

(PR 2) f =pin mitn≥1 und 1≤i ≤n (PR 3) f =N

(PR 4) Es gibt primitiv-rekursive Funktionen g:Np→N und h1:Np →N, . . . ,hp:Np→Nmit

f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).

Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).

(70)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Definition

Eine arithmetische Funktionf :Nn→N,(n≥0) heißt

primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:

(PR 1) f =c00 (Erinnerung: c00= 0∈N) (PR 2) f =pin mitn≥1 und 1≤i ≤n

(PR 3) f =N

(PR 4) Es gibt primitiv-rekursive Funktionen g:Np→N und h1:Np →N, . . . ,hp:Np→Nmit

f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).

Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).

(71)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Definition

Eine arithmetische Funktionf :Nn→N,(n≥0) heißt

primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:

(PR 1) f =c00 (Erinnerung: c00= 0∈N) (PR 2) f =pin mitn≥1 und 1≤i ≤n (PR 3) f =N

(PR 4) Es gibt primitiv-rekursive Funktionen g:Np→N und h1:Np →N, . . . ,hp:Np→Nmit

f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).

Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).

(72)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Definition

Eine arithmetische Funktionf :Nn→N,(n≥0) heißt

primitiv-rekursiv, wenn auf f eine der folgenden Aussagen zutrifft:

(PR 1) f =c00 (Erinnerung: c00= 0∈N) (PR 2) f =pin mitn≥1 und 1≤i ≤n (PR 3) f =N

(PR 4) Es gibt primitiv-rekursive Funktioneng:Np→N und h1:Np →N, . . . ,hp:Np→Nmit

f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).

(73)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Definition

(PR 4) Es gibt primitiv-rekursive Funktioneng:Np→N und h1:Np →N, . . . ,hp:Np→Nmit

f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).

Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).

(PR 5) f:Nn→N mitn≥1 und es gibt primitiv-rekursive Funktionen g:Nn−1→N undh:Nn+1→Nso, dass f¨ur alle (x1, . . . ,xn−1)∈Nn−1 und alley ∈Ngilt:

f(x1, . . . ,xn−1,0) =g(x1, . . . ,xn−1)

f(x1, . . . ,xn−1,N(y)) =h(x1, . . . ,xn−1,y,f(x1, . . . ,xn−1,y)).

(74)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Definition

(PR 4) Es gibt primitiv-rekursive Funktioneng:Np→N und h1:Np →N, . . . ,hp:Np→Nmit

f(x1, . . . ,xn) =g(h1(x1, . . . ,xn), . . . ,hp(x1, . . . ,xn)). F¨ur alle (x1, . . . ,xn)∈Nn,(n≥0,p ≥1).

Anders: f(x) =g(h1(x), . . . ,hp(x)) f¨urx = (x1, . . . ,xn).

(PR 5) f:Nn→N mitn≥1 und es gibt primitiv-rekursive Funktioneng:Nn−1→N undh:Nn+1→Nso, dass f¨ur alle (x1, . . . ,xn−1)∈Nn−1 und alley ∈Ngilt:

f(x1, . . . ,xn−1,0) =g(x1, . . . ,xn−1)

f(x1, . . . ,xn−1,N(y)) =h(x1, . . . ,xn−1,y,f(x1, . . . ,xn−1,y)).

(75)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

1 Wenn auf f (PR 4) zutrifft sagt man:

f durch Einsetzen vonh1, . . . ,hp in g definiert.

2 Wenn auf f (PR 5) zutrifft, sagt man:

f durch g und h induktiv (rekursiv) definiert.

(76)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Satz

Folgende Funktionen sind primitiv-rekursiv:

1 Addition in N: (x,y)7→x+y

2 Multiplikation in N: (x,y)7→x·y

3 Exponentiation inN: (x,y)7→xy mit00:= 1

4 Fakult¨at: x 7→x!

5 Vorg¨anger: V:N→N, V(x) :=

(0, x= 0, x−1, x>0.

6 Modifizierte Subtraktion: (x,y)7→x −. y =

(0, x<y, x−y, x≥y.

7 Abstand: (x,y)7→ |x−y|

8 Signum-Funktion, sgn(x) =

(0, x= 0, 1, x>0.

(77)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Satz

Folgende Funktionen sind primitiv-rekursiv:

1 Addition in N: (x,y)7→x+y

2 Multiplikation in N: (x,y)7→x·y

3 Exponentiation inN: (x,y)7→xy mit00:= 1

4 Fakult¨at: x 7→x!

5 Vorg¨anger: V:N→N, V(x) :=

(0, x= 0, x−1, x>0.

6 Modifizierte Subtraktion: (x,y)7→x −. y =

(0, x<y, x−y, x≥y.

7 Abstand: (x,y)7→ |x−y|

8 Signum-Funktion, sgn(x) =

(0, x= 0, 1, x>0.

(78)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Satz

Folgende Funktionen sind primitiv-rekursiv:

1 Addition in N: (x,y)7→x+y

2 Multiplikation in N: (x,y)7→x·y

3 Exponentiation inN: (x,y)7→xy mit00:= 1

4 Fakult¨at: x 7→x!

5 Vorg¨anger: V:N→N, V(x) :=

(0, x= 0, x−1, x>0.

6 Modifizierte Subtraktion: (x,y)7→x −. y =

(0, x<y, x−y, x≥y.

7 Abstand: (x,y)7→ |x−y|

8 Signum-Funktion, sgn(x) =

(0, x= 0, 1, x>0.

(79)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Satz

Folgende Funktionen sind primitiv-rekursiv:

1 Addition in N: (x,y)7→x+y

2 Multiplikation in N: (x,y)7→x·y

3 Exponentiation inN: (x,y)7→xy mit00:= 1

4 Fakult¨at: x 7→x!

5 Vorg¨anger: V:N→N, V(x) :=

(0, x= 0, x−1, x>0.

6 Modifizierte Subtraktion: (x,y)7→x −. y =

(0, x<y, x−y, x≥y.

7 Abstand: (x,y)7→ |x−y|

8 Signum-Funktion, sgn(x) =

(0, x= 0, 1, x>0.

(80)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Satz

Folgende Funktionen sind primitiv-rekursiv:

1 Addition in N: (x,y)7→x+y

2 Multiplikation in N: (x,y)7→x·y

3 Exponentiation inN: (x,y)7→xy mit00:= 1

4 Fakult¨at: x 7→x!

5 Vorg¨anger: V:N→N, V(x) :=

(0, x = 0, x−1, x >0.

6 Modifizierte Subtraktion: (x,y)7→x −. y =

(0, x<y, x−y, x≥y.

7 Abstand: (x,y)7→ |x−y|

8 Signum-Funktion, sgn(x) =

(0, x= 0, 1, x>0.

(81)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Satz

Folgende Funktionen sind primitiv-rekursiv:

1 Addition in N: (x,y)7→x+y

2 Multiplikation in N: (x,y)7→x·y

3 Exponentiation inN: (x,y)7→xy mit00:= 1

4 Fakult¨at: x 7→x!

5 Vorg¨anger: V:N→N, V(x) :=

(0, x = 0, x−1, x >0.

6 Modifizierte Subtraktion: (x,y)7→x −. y =

(0, x<y, x−y, x≥y.

7 Abstand: (x,y)7→ |x−y|

8 Signum-Funktion, sgn(x) =

(0, x= 0, 1, x>0.

(82)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Satz

Folgende Funktionen sind primitiv-rekursiv:

1 Addition in N: (x,y)7→x+y

2 Multiplikation in N: (x,y)7→x·y

3 Exponentiation inN: (x,y)7→xy mit00:= 1

4 Fakult¨at: x 7→x!

5 Vorg¨anger: V:N→N, V(x) :=

(0, x = 0, x−1, x >0.

6 Modifizierte Subtraktion: (x,y)7→x −. y =

(0, x<y, x−y, x≥y.

7 Abstand: (x,y)7→ |x−y|

8 Signum-Funktion, sgn(x) =

(0, x= 0, 1, x>0.

(83)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Satz

Folgende Funktionen sind primitiv-rekursiv:

1 Addition in N: (x,y)7→x+y

2 Multiplikation in N: (x,y)7→x·y

3 Exponentiation inN: (x,y)7→xy mit00:= 1

4 Fakult¨at: x 7→x!

5 Vorg¨anger: V:N→N, V(x) :=

(0, x = 0, x−1, x >0.

6 Modifizierte Subtraktion: (x,y)7→x −. y =

(0, x<y, x−y, x≥y.

7 Abstand: (x,y)7→ |x−y|

8 Signum-Funktion, sgn(x) =

(0, x= 0, 1, x>0.

(84)

Rekursives Programmieren - Theorie Primitiv-rekursive Funktionen

Beweis:

1 Addition:

+ (x,0) =x+ 0 =x,

+ (x,N(y)) =x+N(y) =N(x+y),

⇒g =p11,h =N.

2

·(x,0) =x·0 = 0,

·(x,N(y)) =x·y+x = +(x·y,x)

⇒g =C01,h= +( , )

3

x0 = 1,

N(y) y·

Referenzen

ÄHNLICHE DOKUMENTE

1 c-äquivalent zu den anderen Darstel- lungen, wenn der metrische Raum keine isolierten Punkte hat. Die berechenbaren Äquivalenzen in Satz 5 legen folgende

• Es gibt totale und (intuitiv) berechenbare Funktionen, die nicht LOOP- berechenbar sind.... Jede WHILE-berechenbare Funktion

Wegen der auch dort geltenden Unentscheidbarkeit bedeutet das, verallgemeinert auf eine beliebige h¨ ohere Program- miersprache: Es ist nicht berechenbar, ob ein Computerprogramm

Mit Hilfe von Lemma 3 kann jetzt f¨ ur jede n ∈ Z endlich viele neue Terme zwischen y n und y n+1 in diese Folge eingef¨ ugt werden, um eine neue Folge zu konstruieren, die auch

Wir haben bisher Relationen betrachtet, die entweder primitiv rekursiv oder rekursiv entscheidbar waren... Dann ist f (~ x) = µy.S~ xy berechenbar und hat als Definitionsbereich

Zeichne den Stack-Frame der Funktion my mult( 4, 5 ), wie er vor dem Funktions- aufruf, nach der Parameter¨ ubergabe (Beginn der Funktion) und bei Ausf¨ uhrung der

Im Stack-Frame wird f¨ ur folgende Daten Platz reserviert: die forma- len Parameter, die die Werte der aktuellen Parameter zugewiesen bekommen, Platz f¨ ur den R¨ uckgabewert

Um trotzdem davon ausgehen zu k¨onnen, daß in jedem Fall eine neue Menge entsteht, wird der Begriff einer leeren Menge eingef¨ uhrt.. Um auf sie zu verweisen, dient das