Grundlagen
Termersetzungssysteme
Ziel: Operationalisierung von Spezifikationen und Implementierung funktionaler Programmiersprachen
spec = (sig,E) Wann ist Tspec berechenbare Algebra?
(Tspec)s = {[t] : t ∈ Term(sig)s}
Tspec ist berechenbare Algebra wenn es eine berechenbare Funktion rep : Term(sig) → Term(sig) gibt, mit rep(t) ∈ [t] eindeutiger
Repräsentant in seiner Äquivalenzklasse.
Paradigma: Wähle als Repräsentanten minimale Objekte in der Äquivalenzklasse bezüglich einer Ordnung.
f (x1, ...,xn) : ((Tspec)s1 × ...(Tspec)sn) → (Tspec)s
f ([r1], ...,[rn]) := [rep(f (rep(r1), ..., (rep(rn))]
Termersetzungssysteme
Definition 9.1 Regeln, Regelmengen, Reduktionsrelation
I Mengen von Variablen: Für t ∈ Terms(F, V) sei V(t) die Menge der Variablen in t (Rek. Definition, immer endlich)
Beachte: V(t) = ∅ gdw t ist Grundterm.
I Eine Regel ist ein Paar (l, r),l, r ∈ Terms(F,V )(s ∈ S) mit Var(r) ⊆ Var(l)
Schreibe: l → r
I Ein Regelsystem R ist eine Menge von Regeln.
R definiert eine Reduktionsrelation →R auf Term(F, V) durch:
t1 →R t2 gdw ∃ l → r ∈ R, p ∈ O(t1), σ Substitution : t1|p = σ(l) ∧ t2 = t1[σ(r)]p
I (Term(F,V), →R) sei das von R definierte Reduktionssystem (Termersetzungssystem).
Grundlagen
Termersetzungssysteme
Ziel: Transformiere E in R, so dass =E=←→∗ R gilt und →R gutartige Terminierungs- und Konfluenzeigenschaften hat.
Etwa konvergent oder konfluent. Oft genügt es wenn diese Eigenschaften
“nur” auf der Menge der Grundterme gelten.
Beachte:
I Die Bedingung V(r) ⊆ V(l) in Regel l → r ist notwendig für die Terminierung.
Gilt weder V(r) ⊆ V(l) noch V(l) ⊆ V(r) in einer Gleichung l = r einer Spezifikation, so hat man wohl überflüssige Variablen bei der Funktionsdefinition verwendet.
I →R ist verträglich mit der Substitution und der Termersetzung. D.h.
Aus s →R t folgt, σ(s) →R σ(t) und u[s]p →R u[t]p I Insbesondere =R=←→∗ R
Matching oder Treffende Substitution
Definition 9.2 Seien l,t ∈ Terms(F,V). Eine Substitution σ heißt Match (treffende Substitution) von l auf t, falls σ(l) = t
Folgerung 9.1 Es gilt:
I ∀ σ Substitution O(l) ⊆ O(σ(l)).
I ∃σ : σ(l) = t gdw es gilt für σ definiert durch
∀u O(l) : l|u = x ∈ V u ∈ O(t) ∧ σ(x) = t|u σ ist Substitution ∧ σ(l) = t.
I Gibt es eine solche Substitution, so ist sie eindeutig auf V(l).
Existenz und gegebenfalls Berechnung sind effektiv.
I Es ist entscheidbar ob t mit Regel l → r reduzierbar.
I Ist R endlich, so ∆(s) = {t : s →R t} endlich un berechenbar.
Grundlagen
Beispiele
Beispiel 9.1 Ganze Zahlen sig : 0 :→ int
s,p : int → int if 0 : int,int, int → int
F : int,int → int
eqns : 1 :: p(0) = 0 2 :: p(s(x)) = x 3 :: if 0(0, x,y) = x 4 :: if 0(s(z), x, y) = y
5 :: F(x,y) = if 0(x,0,F(p(x),F(x,y))) Interpretation: hN, ..., i spec- Algebra mit Funktionen
ON = 0,sN = λn. n + 1,
pN = λn. if n = 0 then 0 else n − 1 fi if 0N = λi, j,k. if i = 0 then j else k fi FN = λm, n. 0
Orientiere Gleichungen von links nach rechts Regeln R
(Variablenbedingung ist erfüllt). Ist R terminierend? Nicht mit syntaktischer Ordnung, da linke Seite in rechter Seite vorkommt.
Beispiel (Fort.)
Reduktionsfolge:
F(s(0), 0) →5 if 0(s(0),0,F(p(s(0))
| {z }
2
, F(s(0), 0)
| {z }
5
)
| {z }
)
| {z }
4
→4 F(p(s(0))
| {z },F(s(0),0)
| {z })
| {z }
5
→2 F(0, F(s(0), 0)
| {z })
| {z }
5
→5 if 0(0,0, F(p(0)
|{z},F(0, F(s(0), 0)
| {z })
| {z }
)
| {z }
)
| {z }
→3 0
Grundlagen
Äquivalenz
Definition 9.3 Seien spec = (sig, E),spec0 = (sig, E0) Spezifikationen.
Sie sind äquivalent falls =E==E0, d.h. Tspec = Tspec0.
Ein Regelsystem R über sig ist äquivalent zu E , falls =E=←→∗ R. Beachte: Ist R endlich, konvegent, äquivalent zu E so ist die E Gleichheit entscheidbar
s =E t gdw s ↓= t ↓ d.h. identische NF
Für funktionale Programme und Berechnungen in Tspec genügt die Grundkonvergenz, d.h. Konvergenz auf Grundtermen.
Probleme: Entscheide ob
I R noethersch (grundnoethersch)
I R konfluent (grundkonfluent)
I R Wie transformiert man E in äquivalentes R mit diesen Eigenschaften?
Entscheidbarkeitsfragen
Für endliche Grundtermersetzungssysteme sind die Probleme entscheidbar.
Für terminierende Systeme genügt es lokale Konfluenz zu entscheiden, d.h. aus t1 ← t → t2 folgt t1 ↓ t2.
u v
t t
u
v
u | v u < v
Zusammenführbar Kritische Paare
s(l) t(l’)
s(l) t(l’)
Kritische Paare, Unifikation
Kritische Paare
Betrachte Gruppenaxiome:
(x0 · y0) · z
| {z }
l1
→ x0 · (y0 · z) und x| {z }· x−1
l2
→ 1.
“Überlappungen” (Superpositionen)
(x · x−1) · z (x · y) · (x · y)−1 .l2 &l1 .l2 &l1
1 · z x · (x−1 · z) 1 x · (y · (x · y)−1)
I l1|1 ist “unifizierbar” mit l2 mit Substitution
σ :: {x0 ← x, y0 ← x−1,x ← x} σ(l1|1) = σ(l2)
I l1 “unifizierbar” mit l2 mit Substitution
σ :: {x0 ← x, y0 ← y, z ← (x · y)−1, x ← x · y} σ(l1) = σ(l2)
Subsumption, Unifikation
Definition 9.4 Subsumptionsordnung auf Terme:
s t gdw ∃σ Substitution : σ(s) Teilterm von t s ≈ t gdw (s t ∧ t s)
s t gdw (t s ∧ ¬(s t))
ist noethersche Partialordnung auf Term(F,V) Beweis!.
Beachte:
O(σ(t)) = O(t) ∪ S
w∈O(t):t|w=x∈V{wv : v ∈ O(σ(x))}
Verträglichkeitseigenschaften:
t|u = t0 σ(t)|u = σ(t0)
t|u = x ∈ V σ(t)|uv = σ(x)|v (v ∈ O(σ(x))) σ(t)[σ(t0)]u = σ(t[t0]u) für u ∈ O(t)
Definition 9.5 s, t ∈ Term(F, V) sind gdw unifizierbar wenn es
Kritische Paare, Unifikation
Unifikation, Allgemeinster Unifikator
Definition 9.6 Sei V 0 ⊆ V, σ, τ Substitutionen.
I σ τ(V0) gdw ∃ρ Substitution : ρ ◦ σ|V0 = τ|V0 Sprechweise: σ ist allgemeiner als τ auf V 0
I σ ≈ τ(V0) gdw σ τ(V0) ∧ τ σ(V0)
I σ ≺ τ(V0) gdw τ σ(V0) ∧ ¬(σ τ(V0))
I Beachte: ≺ ist noethersche Partialordnung auf den Substitutionen.
Frage: Seien s, t unifizierbar. Gibt es einen allgemeinsten Unifikator mgu(s,t) auf V = Var(s) ∪ Var(t). D.h. für Unifikator σ für s,t gilt stets mgu(s,t) σ(V)?
Ist mgu(s, t) eindeutig? (bis auf Umbenennung von Variablen).
Unifikationsproblem und seine Lösung
Definition 9.7 I Ein Unifikationsproblem besteht aus einer Menge E = {si
=? ti : i = 1, ...,n} von Gleichungen.
I σ heißt Lösung (oder Unifikator) falls σ(si) = σ(ti) für i = 1, ...,n.
I Gilt τ σ(Var(E)) für jede Lösung τ von E , so mgu(E) := σ allgemeinste Lösung oder allgemeinster Unifikator.
I Sol(E) sei die Menge der Lösungen von E .
E und E0 sind äquivalent, falls Sol(E) = Sol(E0).
I E0 ist in gelöster Form, falls E0 = {xj
=? tj : xi 6= xj (i 6= j), xi ∈/ Var(tj) (1 ≤ i ≤ j ≤ m)}
I E0 ist gelöste Form zu E , falls E0 in gelöster Form und äquivalent zu E mit Var(E0) ⊆ Var(E).
Kritische Paare, Unifikation
Beispiele
Beispiel 9.2 Betrachte
I s = f (x, g(x, a)) =? f (g(y, y), z) = t
x =? g(y, y) g(x, a) =? z split x =? g(y, y) g(g(y,y), a) =? z merge σ :: x ← g(y,y) z ← g(g(y, y), a) y ← y
I f (x,a) =? g(a, z) Unlösbar (nicht unifizierbar).
I x =? f (x, y) Unlösbar da f (x,y) nicht x frei.
I x =? f (a, y) Lösung σ :: x ← f (a, y) ist allgemeinste Lösung.
Inferenzsystem für die Unifikation
Definition 9.8 Kalkül UNIFY. Sei σ = Bindungsmenge.
(1) Löschen (E ∪ {s =? s}, σ) (E, σ)
(2) Split (Zerlegen) (E ∪ {f (s1, ..., sm) =? g(t1, ...,tn)}, σ)
(Unlösbar) falls f 6= g (E ∪ {f (s1, ..., sm) =? f (t1, ...,tm)}, σ)
(E ∪ {si
=? ti : i = 1, ...,m}, σ) (3) Merge (Lösen) (E ∪ {x = t}, σ)
(τ(E), σ ∪ τ) falls x ∈/ Var(t), τ = {x =? t}
“occur check” (E ∪ {x = t}, σ)
(Unlösbar) falls x ∈ Var(t) ∧ x 6= t
Kritische Paare, Unifikation
Unifikationsalgorithmen
Unifikationsalgorithmen basierend auf diesem Kalkül starten stets mit (E0, S0) := (E, ∅) liefern eine Folge (E0,S0) `UNIFY ... `UNIFY (En,Sn) Sie sind erfolgreich falls sie mit En = ∅, unerfolgreich falls sie mit Sn = enden. Sn beschreibt eine Substitution σ die Sol(Sn) und somit auch Sol(E) erfasst.
Lemma 9.1 Korrektheit.
Jede Folge (E0, S0) `UNIFY ... `UNIFY (En, Sn) bricht ab: Entweder mit (Unlösbar, nicht unifizierbar) oder mit (∅, S) und S ist eine gelöste Form zu E .
Beachte: Darstellungen der Substitution in gelöster Form können recht unterschiedlich sein (Aufwand!!):
s =? f (x1, ...,xn) t =? f (g(x0,x0), ...,g(xn−1)) S = {xi
=? g(xi−1,xi−1) : i = 1, ..., n} und S1 = {xi+1 ?
= ti : t0 = g(x0,x0), ti+1 = g(ti,ti) i = 0, ..., n − 1}
sind beide in gelöster Form. Die Länge der t wächst exponentiell mit i.
Beispiel
Beispiel 9.3 Ausführung:
f (x,g(a,b)) =? f (g(y,b), x)
Ei Si Regel
f (x,g(a,b)) =? f (g(y, b), x) ∅
x =? g(y,b),x =? g(a, b) ∅ split g(y,b) =? g(a, b) x =? g(a,b) lösen y =? a,b =? b x =? g(a,b) split b =? b x =? g(a, b), y =? a lösen x =? g(a, b), y =? a löschen Lösung: mgu = σ = {x ← g(a, b), y ← a}
Kritische Paare, Unifikation
Kritische Paare - Lokale Konfluenz
Definition 9.9 Sei R Regelsystem und l1 → r1,l2 → r2 ∈ R mit V (l1) ∩ V(l2) = ∅ (Umbenennung von Variablen falls nötig, u.U.
l1 ≈ l2 bzw. l1 → r1 ≈ l2 → r2).
Sei u ∈ O(l1) mit l1|u ∈/ V, σ = mgu(l1|u,l2) existiere.
σ(l1) heißt dann eine Überlappung (Superposition) von l2 → r2 in l1 → r1
und (σ(r1), σ(l1[r2]u)) ist das zugehörige kritische Paar zu l1 → r1,l2 → r2,u ∈ O(l1), sofern σ(r1) 6= σ(l1[r2]u).
CP(R) sei die Menge aller kritischen Paare die man mit Regeln aus R bilden kann.
Beachte: Die Überlappung und somit die Menge der kritischen Paare ist bis auf Umbenennung der Variablen eindeutig.
Eigenschaften
I Seien σ, τ Substitutionen, x ∈ V, σ(y) = τ(y) für y 6= x und σ(x) →R τ(x). Dann gilt für jeden Term t:
σ(t) →∗ R τ(t)
I Seien l1 → r1,l2 → r2 Regeln, u ∈ O(l1),l|u = x ∈ V. Sei σ(x)|w = σ(l2), d.h. σ(l2) wird durch σ(x) eingeführt.
Dann gilt t1 ↓R t2 für
t1 := σ(r1) ← σ(l1) → σ(l1)[σ(r2)]uw =: t2 Lemma 9.2 Critical-Pair Lemma von Knuth/Bendix
Sei R ein Regelsystem. Dann gilt:
Aus t1 ←R t →R t2 folgt t1 ↓R t2 oder t1 ↔CP(R) t2.