Operationale Semantik 1

' Operationale Semantik – 1 $ Ziel: Geschlossene Terme t~ι→ι sind Programme, die auf Eingabe ~n die Ausgabe [[t]]~n erzeugen. Ein-/Ausgabekonventio...
4 downloads 2 Views 60KB Size
'

Operationale Semantik – 1

$

Ziel: Geschlossene Terme t~ι→ι sind Programme, die auf Eingabe ~n die Ausgabe [[t]]~n erzeugen. Ein-/Ausgabekonvention: Eingaben und Ausgaben sind Numerale!

Slide 1

Def. Ein Numeral ist ein Term S n 0 := S . . . S0 (n Vorkommen von S), in Zeichen n bzw. n, rekursiv definiert durch 0 := 0 und n+1 := Sn. Bem. [[n]] = n Gesucht: Verfahren (operationale Semantik), das geschlossene Terme uhrt. tn1 . . . nk vom Grundtyp in Numerale S [[t]]~n 0 u ¨berf¨ Darin: β-Konversion (λxσ .r)sσ 7→ r[s/x], wobei r[s/x] aus r, sσ , xσ entsteht, indem man alle freien Vorkommen von xσ in r durch s ersetzt. Problem: Korrektheit [[(λxσ .r)sσ ]]ϕ = [[r[s/x]]]ϕ kann verloren gehen. &

%

'

$

Operationale Semantik – 2

Def (Substituierbarkeit). Seien xσ1 1 , . . . , xσl l paarweise verschieden. • Terme sσ1 1 , . . . , sσl l heißen f¨ ur xσ1 1 , . . . , xσl l in r substituierbar, falls ur r keinen Teilterm λy τ .t enth¨alt mit y τ ∈ FV(si ) und xσi i ∈ FV(t) f¨ ein i ∈ {1, . . . , l}. Slide 2

• r[~s/~x] entstehe aus r, ~s, ~x, indem simultan jedes freie Vorkommen von jedem xσi i in r durch das zugeh¨orige sσi i ersetzt wird. Lemma (Substitution). Sind ~s f¨ ur ~x in r substituierbar, so gilt: −−→ [[r[~s/~x]]]ϕ = [[r]]ϕ[~x←− [[s ]] ] i ϕ

( f¨ ur alle ϕ)

Folg (Korrektheit von β). Ist sσ f¨ ur xσ in r substituierbar, so gilt: &

[[(λxσ .r)sσ ]]ϕ = [[r[s/x]]]ϕ

( f¨ ur alle ϕ)

%

'

Operationale Semantik – 3

$

Ziel: Substituierbarkeit ist erreichbar durch gebundene Umbennung. Def. r′ heißt gebundene Umbenennung von r, falls r′ aus r entsteht, indem ein Teilterm λxσ.s durch λy σ.s[y σ/xσ ] ersetzt wird, y σ∈ / Var(r).

Slide 3

aquivalent, falls [[t]]ϕ = [[t′ ]]ϕ f¨ Def. Terme t, t′ desselben Typs heißen ¨ ur alle Belegungen ϕ gilt. ¨ Lemma (Aquivalenz). Sind t, t′ ¨aquivalente Terme des Typs σ, so gilt σ ′ σ [[r[t/x ]]]ϕ = [[r[t /x ]]]ϕ f¨ ur alle Terme r und Belegungen ϕ. Lemma (Geb. Umbenennung). Ist r′ gebundene Umbenennung von r, so gilt [[r′ ]]ϕ = [[r]]ϕ f¨ ur alle Belegungen ϕ. Daher: Identifiziere Terme, die sich nur durch gebundene Umbenennung (mehrfach) unterscheiden. Die Schreibweise r[~s/~x] setzt stillschweigend die Substituierbarkeit von ~s f¨ ur ~x in r voraus. &

%

'

$

Operationale Semantik – 4

Def. Die operationale Semantik (von G¨odels T ) ist der transitive Abschluß, in Zeichen −→, der folgenden Konversionsregeln 7→: (β) (η) (R)

Slide 4

(λxσ .r)sσ 7→ r[s/x] λxσ .rx 7→ r, falls x ∈ / FV(r) Rσ g h 0 7→ g Rσ g h (St) 7→ h t (Rσ g h t)

Sprechweise f¨ ur t −→ t′ : t reduziert zu t in einem Schritt. Der transitive Abschluß von 7→ ergibt die folgenden Strukturregeln: r −→ r′ r −→ r′ s −→ s′ (S) rs −→ r′ s rs −→ rs′ λxσ .r −→ λxσ .r′ Bem. t −→ t′ gdw. t′ entsteht aus t, indem genau ein Redex r, d.h. ein Teilterm von t mit r → 7 r′ , durch r′ ersetzt wird.

&

%

'

Operationale Semantik – 5

$

Lemma (Korrektheit von −→). Aus r −→ r′ folgt [[r]]ϕ = [[r]]′ϕ . ¨ Beweis. Induktion nach der Definition von r −→ r′ . (Ubung) Def. −→∗ bezeichne den reflexiven, transitiven Abschluß von −→: Slide 5

t −→∗ t′ ⇐⇒ ∃ l ≥ 0 ∃t0 , . . . tl : t = t0 −→ t1 −→ . . . −→ tl = t′ Sprechweise: t reduziert zu t′ (in endlich vielen Schritten). Ziel: −→ ist stark normalisierend mit eindeutig bestimmten Normalur jedes t bricht jede Reduktionsfolge t −→ t1 −→ t2 −→ . . . formen: F¨ nach endlich vielen Schritten mit einem eindeutig bestimmten Term nf(t) in Normalform ab. &

%

'

$

Operationale Semantik – 6

Def. Ein Term t heißt normal (auch in Normalform), falls t nicht reduzierbar ist, d.h. es existiert kein Term t′ mit t −→ t′ .

Slide 6

Def. Eine Reduktionsfolge f¨ ur t ist eine maximale (m¨oglicherweise unendliche) Folge t −→ t1 −→ t2 −→ . . . von Reduktionen. Diese terminiert, falls sie endlich ist. Def. • Ein Term tσ heißt stark normalisierend, in Zeichen SNσ (t), falls jede Reduktionsfolge f¨ ur t terminiert. • Die Reduktionsrelation −→ heißt stark normalisierend, falls alle Terme stark normalisierend sind.

&

%

'

Operationale Semantik – 7

$

Ziel 1: −→ ist stark normalisierend Def (W.W. Tait). Wir definieren rσ ist stark berechenbar, in Zeichen SCσ (r), durch Induktion nach σ. (SC1) (SC2)

Slide 7

SCι (r) : ⇐⇒ SNι (r) SCσ→ρ (r) : ⇐⇒ ∀sσ : SCσ (s) =⇒ SCρ (rs)

rσ ist stark berechenbar unter Substitution (SCSσ (r)), falls f¨ ur alle ~s := sσ1 1 , . . . , sσl l und ~x := xσ1 1 , . . . , xσl l mit FV(r) ⊆ {~x} gilt: SCσ1 (s1 ) ∧ . . . ∧ SCσl (sl ) =⇒ SCσ (r[~s/~x]) Beweisplan. F¨ ur alle tσ gilt: (1) SCσ (t) =⇒ SNσ (t) (2) SCSσ (t) Wegen SCσ (x) und r = r[FV(r)/FV(r)] folgt damit obiges Ziel 1.

&

%

'

$

Operationale Semantik – 8

Lemma (Vetr¨ aglichkeit von −→ mit Substitution). (a) Aus ~s −→ ~s ′ folgt t[~s/~x] −→∗ t[~s ′ /~x]. (b) Aus t −→ t′ folgt t[~s/~x] −→∗ t′ [~s/~x]. (c) Aus t −→∗ t′ und ~s −→∗ ~s ′ folgt t[~s/~x] −→∗ t′ [~s ′ /~x]. Slide 8

Lemma (Abschluß von SC unter Reduktion). Aus t −→ t′ und SCσ (t) folgt SCσ (t′ ). Lemma (SC impliziert SN). (a) SCσ (x) f¨ ur alle xσ (b) Aus SCσ (t) folgt SNσ (t), f¨ ur alle Terme tσ . Satz (SCS). Jeder Term ist stark berechenbar unter Substitution.

&

%

'

Operationale Semantik – 9

$

Ziel 2: Eindeutigkeit der Normalform (bis auf geb. Umbenennungen) Idee: (M.H.A. Newman) Verwende SN und lokale Konfluenz von −→ (Curch-Rosser-Eigenschaft). Slide 9

Lemma (Lokale Konfluenz). Wenn t −→ t′ und t −→ t′′ , dann findet man einen Term t′′′ mit: t −→ t′′ ↓∗ ↓ t′ −→∗ t′′′ Def. Schreibe t =α t′ f¨ ur t und t′ unterscheiden sich nur durch ” gebundene Umbenennungen“. Satz (Eindeutigkeit der Normalform). Aus t −→∗ t′ und t −→∗ t′′ , f¨ ur Terme t′ , t′′ in NF, folgt t′ =α t′′ . &

%

'

$

Operationale Semantik – 10

Aufgrund der bewiesen S¨atze gilt nun f¨ ur jeden Term t: Jede Reduktionsfolge f¨ ur t ist endlich und endet mit einem eindeutig bestimmten Term in Normalform. Bezeichne daher nf(t) die Normalform von t. Slide 10

Def. Ein Programm in T ist ein geschlossener Term t eines zahlentheoretischen Typs ~ι → ι. Folg (Progamme in T ). F¨ ur jedes Programm t~ι→ι mit k Inputpositionen und f¨ ur jede Eingabe n1 , . . . , nk ∈ N gilt: t n1 . . . nk −→∗ nf(t n1 . . . nk ) = [[t]] n1 . . . nk &

%