Automaten, Spiele, und Logik

Werbung
Automaten, Spiele, und Logik
Woche 13
7. Juli 2014
Inhalt der heutigen Vorlesung
I
Terminationsanalyse
Rekursive Funktionnen
fact(n)= if n==0 then 1 else n*fact(n-1)
fibo(n)= if n<=1 then 1 else fibo(n-1) + fibo(n-2)
ackerman(m,n)=
if m==0 then n+1
elif n==0 then ackerman(m-1,1)
else ackerman(m-1,ackerman(m,n-1))
mccarthy(n)=
if n>100 then n-10
else mccarthy(mccarthy(n+11))
Hypothesen: Rekursion ist die einzige Quelle von einer mögliche
unendliche Komputation, und Zahlen bleiben ≥ 0.
Mutualle rekursion
Beispiel: Zahl von geordnete Baüme mit n Zuständen.
tree(n) =
if n==1 then 1
else forest(n-1)
forest(n) =
if n==0 then 1
else sum(tree(i)*forest(n-i),i=1..n)
Terminationsanalyse
Entscheidungsproblem
Gilt es, dass f (~
n) für irgendwelche Input n beendet?
Beispiel: mccarthy terminiert, aber die folgende Variante nicht.
mccarthy’(n)=
if n>100 then n-10
else mccarthy’(mccarthy’(n+10))
Terminationsanalyse ist nicht einfach
I
unentscheidbar
I
I
auch mit einem Orakle über die Termination gegen ein einziges
Input.
zu den Menschen auch schwer
syracuse(n)=
if n<=1 then 1
if (n mod 2)==0
then syracuse(n/2)
else syracuse(3*n+1)
Size-Change Termination
Abstraktion
Wenn g (e1 , . . . , em ) in die Definition von f (x1 , . . . , xn ) vorkommt,
dann gibt es für jede i = 1, . . . , m drei Fällen:
I
ej = xi
I
man kann beweisen, dass ej < xi
dann ist die Abstraktion ej = xi − 1
I
ein Zahl, für den man keinen oberen Schrank in x1 , . . . , xn
kennt
dann ej = ω (d.h. eine beliebig grosse endliche Zahle).
Weitere Simplifizierungen
I
Seitenkalkulation weg, Kontrol weg
I
Grundfallen weg
I
abstraktierte Funktion terminiert falls mindestens ein xi = 0
I
identischen abstraktierten Aufrufen nur einmal gezählt
Beispiele
fact(n)= if n==0 then 1 else n*fact(n-1)
wird fact(n)
fact(n-1)
Beispiele
fact(n)= if n==0 then 1 else n*fact(n-1)
wird fact(n)
fact(n-1)
fibo(n)= if n<=1 then 1 else fibo(n-1) + fibo(n-2)
wird fibo(n)
fibo(n-1) , fibo(n-1)
Beispiele
fact(n)= if n==0 then 1 else n*fact(n-1)
wird fact(n)
fact(n-1)
fibo(n)= if n<=1 then 1 else fibo(n-1) + fibo(n-2)
wird fibo(n)
fibo(n-1)
Beispiele
fact(n)= if n==0 then 1 else n*fact(n-1)
wird fact(n)
fact(n-1)
fibo(n)= if n<=1 then 1 else fibo(n-1) + fibo(n-2)
wird fibo(n)
fibo(n-1)
ackerman(m,n)=
if m==0 then n+1
elif n==0 then ackerman(m-1,1)
else ackerman(m-1,ackerman(m,n-1))
wird ackerman(m,n)
ackerman(m-1,ω) , ackerman(m,n-1)
Übung
Geben Sie die Abstraktion diese rekursive Programmen an:
mccarthy(n)=
if n>100 then n-10
else mccarthy(mccarthy(n+11))
tree(n) =
if n==1 then 1
else forest(n-1)
forest(n) =
if n==0 then 1
else sum(tree(i)*forest(n-i),i=1..n)
Lösung
mccarthy(x)
mccarthy(ω)
tree(x)
forest(x-1)
forest(x)
tree(x),forest(x-1)
Termination einer Abstraktion
Semantik einer Abstraktion
I
“,” heisst beide Kommande werden gelaufen
I
ω Ausdrucken : nicht deterministische Wahl einer Zahl
Die Abstraktion terminiert falls auf allen Input und alle
nicht-deterministischen Enstcheidungen wird ein endlicher Lauf
definiert.
Beispiele
mccarthy(x)
mccarthy(ω)
termininiert nicht
tree(x)
forest(x-1)
forest(x)
tree(x),forest(x-1)
terminiert
ackerman(m,n)
ackerman(m-1,ω) , ackerman(m,n-1)
terminiert
Korrektheit der Abstraktion
Wir machen Terminationsanalyse auf die Abstraktion der Funktion
statt der Funktion selbst.
Korrektheiteigenschaft
Wenn die Abstraktion terminiert auf allen Input, dann auch die
ursprungliche Funktion.
Model
Rekursiver System
Ein rekursiver System ist ein Tupel
S = (V = {x1 , . . . , xn }, Fun, f0 , succ), so dass
I
V = {x1 , . . . , xn } ist eine nichtleere endliche Menge von
Variablen
I
Fun ist eine nichtleere endliche Menge von Funktionsnamen
I
f0 ∈ Fun
I
succ : Fun → (Fun · (ω + V + V )n )∗
Beispiel:
tree(x)
forest(x-1)
forest(x)
tree(x),forest(x-1)
lässt sich mit V := {x}, Fun := {t, f }, und
succ := {t 7→ fx , f 7→ txfx } modelieren.
Aufrufsequenzen und Kontrolsequenzen
Aufrufsequenz
Eine Aufrufsequenz ist eine Folgerung ρ = f0 (n~0 ), f1 (n~1 ), . . . , wobei
n~i Vektoren von positive oder negative Zahlen sind, und fi ∈ Fun.
Kontrolsequenz
Eine Kontrolsequenz ist eine Folgerung σ = i0 , i1 , . . . von
natürliche Zahlen.
Konkretisierung
Die Aufrufsequenz ρ ist eine Konkretisierung der Kontrolsequenz σ,
~ ) entspricht dem ik -Aufruf in der Definition von fk .
wenn fk+1 (nk+1
Beispiel: a(m,n)
a(m-1,ω) , a(m,n-1)
dann ρ = a(2, 3), a(2, 2), a(1, 5) konkretisiert σ = 2, 1.
Syntax und Semantik
Syntaktisch erlaubte Kontrolsequenz
Eine Kontrolsequenz i1 , i2 , . . . ist syntaktisch erlaubt, falls
mindestens eine Aufrufsequenz ist ihre Konkretisierung.
Positive Aufrufsequenz
Eine Aufrufsequenz f1 (n~1 ), f2 (n~2 ), . . . heisst positiv, falls alle
Parameter n~i positiv sind.
Semantisch unerlaubte Kontrolsequenz
Eine Kontrolsequenz heisst semantisch unerlaubt, falls keine
positive Aufrufsequenz ihre Konkretisierung ist.
Termination analyse, jetzt formal
Seien
I
Lcall (S) : die Menge von syntaktisch erlaubte unendliche
Kontrolsequenzen, und
I
Lterm (S) : die Menge von semantisch unerlaubte unendliche
Kontrolsequenzen.
Definition
S heisst terminierend, falls Lcall (S) ⊆ Lterm (S).
Übung
Geben Sie Lcall (S) und Lterm (S) für die folgende rekursive
Systemen an.
1. Ackerman: a
2. Baüme: t
ax1 ωax1 x2
fx , f
txfx
3. ...
Zeigen Sie, dass für jedes S, Lcall (S) eine ω-reguläre Sprache ist.
Absteigende Kette
Definition
Eine absteigende Kette für eine Kontrolsequenz i1 , i2 , . . . (von f0
an) ist eine Variablenfolgerung x1 , x2 , . . . so dass für alle
Konkretisierung f0 (n~0 ), f1 (n~1 ), . . . , wenn vi das Wert von xi in
fi (~
ni ) ist, dann gilt für alle i vi+1 ≤ vi .
Lemma
Sei σ eine unendliche Kontrolsequenz. Dann σ ist semantisch
erlaubt genau dann wenn jede unendliche absteigende Kette nur
endlich oft strikt absteigt.
Lterm ist ω-regulär
Idee: der Automat liest die Kontrolsequenz, ignoriert vielleicht ein
Prefix, dann errät eine unendliche absteigende Kette, und prüft
dass sie unendlich oft strikt absteigt.
A = (Q, Σ, δ, qI , F ), wobei
I
Q := Fun × (V ∪ {ω}) × {0, 1}
I
Σ := {1, . . . , N}: N = maximal Zahl von unterschiedliche
Aufrufe in eine Definition
wenn f
. . . gi e1 . . . en . . .
I
I
I
I
δ(hf , ω, i, i) = {hgi , e, 0i : e ∈ V ∪ {ω}}
δ(hf , x, i, i) = {hgi , xj , 0i : ej = x}
δ(hf , x, i, i) = {hgi , xj , 1i : ej = x }
I
qI := hf0 , ω, 0i
I
F := Fun × V × {1}
Beispiel
f
fx1 x2 x1 , f ωx1 x2
1,2
2
x2
1,2
2
1
x2
1
2
1,2
ω
1,2
x3
1
x1
1
Konklusion
Satz
Lterm (S) ist ω-regulär.
Satz
Das Problem, ob ein rekursiver System S terminiert, ist
entscheidbar.
Herunterladen