![Page 1: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/1.jpg)
Ubersicht
• Gleichungsspezifikationen
• Kongruenzabschluss fur Grundtermgleichungen
• Kritische Paare und Knuth-Bendix-Vervollstandigung
• Orthogonale Termersetzungssysteme
Deduktion, SS 10, Folien TES, Seite 1, 13. Juli2010
![Page 2: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/2.jpg)
Gleichungsspezifikationen
Eine (Gleichungs-)Spezifikation ist ein Paar spec = (Σ, E), wobei
• Σ = (S, F,arity) eine Signatur
• E = {u1 = v1, . . .} ein Gleichungssystem uber Σ und einem System
von Variablen V, d.h.
– ui, vi ∈ TermS(F,V) fur ein S ∈ S
Deduktion, SS 10, Folien TES, Seite 2, 13. Juli2010
![Page 3: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/3.jpg)
Σ-Algebra
Signatur Σ = (S, F,arity), System von Variablen V , Spezifikation
spec = (Σ, E)
Eine Σ-Algebra A = (A, F ) besteht aus
• Tragermenge A =⋃
S∈SAS mit AS 6= ∅ und AS ∩AS′ = ∅ fur S 6= S′.
• Menge von Funktionen F = {f | f ∈ F}, so dass fur arity(f) =
S1 . . . Sn → S gilt, dass f eine Funktion f : AS1× . . .×ASn → AS ist.
Deduktion, SS 10, Folien TES, Seite 3, 13. Juli2010
![Page 4: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/4.jpg)
Interpretation, Modell
Eine Interpretation ϕ zur Σ-Algebra A ist gegeben durch ϕ : V → A
wobei ϕ : VS → AS fur alle S ∈ S
Erweiterung auf Terme:
ϕ(f) = f , falls f eine Konstanteϕ((f(t1, . . . , tn)) = f(ϕ(t1), . . . , ϕ(tn)), sonst.
Σ-Algebra A ist ein Modell von spec = (Σ, E),
falls fur jede Interpretation ϕ gilt:
ϕ(s) = ϕ(t) fur alle s = t ∈ E.
Deduktion, SS 10, Folien TES, Seite 4, 13. Juli2010
![Page 5: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/5.jpg)
Semantische E-Gleichheit
Sei spec = (Σ, E) eine Spezifikation.
• Σ-Algebra A erfullt eine Gleichung s = t falls fur jede Interpretation
ϕ gilt: ϕ(s) = ϕ(t) gilt in A.
• s, t sind E-gleich, falls jedes Modell von spec die Gleichung s = t
erfullt. Schreibweise: E |= s = t
Deduktion, SS 10, Folien TES, Seite 5, 13. Juli2010
![Page 6: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/6.jpg)
Operationale E-Gleichheit
Sei spec = (Σ, E) eine Spezifikation.
t1E−→ t2 gdw.
formal:
es gibt p ∈ Pos(t1), s1 = s2 ∈ E und Substitution σ
mit σ(s) = t1/p und t2 = t1[σ(s2)/p]
informal:
t2 entsteht aus t1 durch Anwenden einer Gleichung
auf einen Teilterm von t1
t1 =E t1 gdw. t1E,∗←−→ t2
Schreibweise: E ` t1 = t2
Deduktion, SS 10, Folien TES, Seite 6, 13. Juli2010
![Page 7: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/7.jpg)
Satz von Birkhoff
Fur jede Spezifikation spec = (Σ, E) gilt
E ` s = t gdw. E |= s = t
Deduktion, SS 10, Folien TES, Seite 7, 13. Juli2010
![Page 8: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/8.jpg)
Unentscheidbarkeit
Gleichheit von Termen bzgl. einer endlichen Menge von Gleichheits-
axiomen E ist unentscheidbar.
D.h. das Wortproblem in beliebigen Gleichheitstheorien (mit endlichen
vielen Axiomen) ist unentscheidbar.
Aber: Es gibt Falle in denen das Wortproblem entscheidbar ist!
Deduktion, SS 10, Folien TES, Seite 8, 13. Juli2010
![Page 9: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/9.jpg)
Zu betrachtende entscheidbare Falle
• endlich viele Grundtermgleichungen
– Berechne Congruence Closure
• konvergentesE−→
– Zeige Konvergenz. Ausreichend: Terminierung und lokale Kon-
fluenz.
Methode fur lokale Konfluenz: Knuth-Bendix-Test
– oder: Erstelle konvergentesE′−→ mit
E′,∗←−→=
E,∗←−→,
Methode: Knuth-Bendix-Vervollstandigung
Deduktion, SS 10, Folien TES, Seite 9, 13. Juli2010
![Page 10: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/10.jpg)
Wortproblem auf endlicherMenge von
Grundtermgleichungen
Deduktion, SS 10, Folien TES, Seite 10, 13. Juli2010
![Page 11: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/11.jpg)
Endliches Grundtermgleichungssystem
Grundterm : Term ohne Variablen
Grundtermgleichung s = t: s, t Grundterme
Fur Grundtermgleichungssystem E gilt: =E ist der Kongruenzabschluss
CC(E) von E, d.h. die kleinste Kongruenz uber Term(Σ,V) die E
enthalt.
Deduktion, SS 10, Folien TES, Seite 11, 13. Juli2010
![Page 12: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/12.jpg)
Berechnung des Kongruenzabschlusses
Sei EG Grundtermgleichungssytem. Berechnung von CC(EG)
Fur
refl(E) = {s = s | s ∈ Term(Σ,V)}symm(E) = {t = s | s = t ∈ E}trans(E) = {s = t | s = r, r = t ∈ E}cong(E) = {f(s1 . . . sn) = f(t1 . . . tn) | si = ti ∈ E}cl(E) = E ∪ refl(E) ∪ symm(E) ∪ trans(E) ∪ cong(E)
gilt CC(EG) =⋃
i≥0cli(EG) wobei
cl0(EG) = EG
cli(EG) = cl(cli−1(EG)) fur i > 1
Terminiert nicht immer, da u.U. CC(EG) unendlich groß!
Deduktion, SS 10, Folien TES, Seite 12, 13. Juli2010
![Page 13: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/13.jpg)
Losung
Um u =EGv zu entscheiden, braucht man nicht alle Terme aus CC(EG)
Es reicht nur die Terme aus CC(EG) berechnen, die benotigt werden.
Das sind gerade alle Unterterme der Gleichungen aus EG und von u
und v.
subterms(s) = {s/p | p ∈ Pos(s)}subterms(s = t) = subterms(s) ∪ subterms(t)
Deduktion, SS 10, Folien TES, Seite 13, 13. Juli2010
![Page 14: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/14.jpg)
Berechnung des relevanten Teils
Sei EG Grundtermgleichungssytem. Frage: Gilt u =EGv ?
Sei S = subterms(EG) ∪ subterms(u) ∪ subterms(v)
Fur
refl(E) = {s = s | s ∈ S}symm(E) = {t = s | s = t ∈ E}trans(E) = {s = t | s = r, r = t ∈ E}cong(E) = {f(s1 . . . sn) = f(t1 . . . tn) | si = ti ∈ E}cl(E) = E ∪ refl(E) ∪ symm(E) ∪ trans(E) ∪ cong(E)
gilt: u =EGv gdw. (u, v) ∈
⋃i≥0
cli(EG) wobei
cl0(EG) = EG
cli(EG) = cl(cli−1(EG)) ∩ (S × S) fur i > 1
terminiert, da S endlich und cli(EG) ⊆ cli+1(EG) ⊆ (S × S)
Deduktion, SS 10, Folien TES, Seite 14, 13. Juli2010
![Page 15: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/15.jpg)
Programm in Haskell (Ausschnitt)
Datentyp fur Terme:
data Term = Fn String [Term] -- Funktionssymbol mit Argumenten
| Var String -- Variablen
Z.B. f(x, g(y)) als Term: Fn "f" [Var "x", Fn "g" [Var "y"]]
Gleichungen:
type Gleichung = (Term,Term)
Deduktion, SS 10, Folien TES, Seite 15, 13. Juli2010
![Page 16: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/16.jpg)
Operationen fur Reflexivitat, Symmetrie, Transitivitat und Kongruenz
-- s: Alle Unterterme
-- e: Gleichungen
-- fs: (Alle Funktionssymbole mit Stelligkeiten)
refl s e = [(t,t) | t <- s]
symm s e = [(t1,t2) | (t2,t1) <- e]
trans s e = [(t1,t3) | (t1,t2) <-e, t3 <-s, (t2,t3) ‘elem‘ e]
cong fs s e = [(Fn f a, Fn f b) |
(f,l) <- fs,
(a,b) <- nub (map unzip (gen l e)), l > 0]
-- berechnet Liste aller Paare ([s1,...,sl],[t1,...,tl])
-- mit (si,ti) aus e
![Page 17: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/17.jpg)
Eine Iteration:
oneIter fs s e = let s_X_s = [(t,r) | t <- s, r <- s]
ohneS q = intersect q s_X_s
in e ‘union‘ (ohneS $ refl s e)
‘union‘ (ohneS $ symm s e)
‘union‘ (ohneS $ trans s e)
‘union‘ (ohneS $ cong fs s e)
Gesamten Kongruenzabschluss berechnen:
closure e u v =
let
s = nub $ unterterme u ++ unterterme v ++ gleichungenUT e
...
go e = let eneu = nub (oneIter fs s e)
in if eqSet eneu e -- e = eneu ??
then e -- ja, dann fertig (Fixpunkt erreicht)
else go eneu -- nein, dann weiter mit eneu
in go e
![Page 18: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/18.jpg)
Beispiel: Binare Addition
e = parseEq "add(0,0)=0; add(0,1)=1; add(1,0)=1; add(1,1)=0"
u = parseTerm "add(add(add(0,1),add(1,0)),1)"
v = parseTerm "1"
closure e u v ergibt
[(add(0,0),0), (add(0,1),1), (add(1,0),1), (add(1,1),0),(add(add(add(0,1),add(1,0)),1),add(add(add(0,1),add(1,0)),1)),(add(add(0,1),add(1,0)),add(add(0,1),add(1,0))), (add(0,1),add(0,1)), (0,0), (1,1),(add(1,0),add(1,0)), (add(0,0),add(0,0)), (add(1,1),add(1,1)), (0,add(0,0)),(1,add(0,1)), (1,add(1,0)), (0,add(1,1)), (add(add(0,1),add(1,0)),add(1,1)),(add(1,1),add(add(0,1),add(1,0))), (add(0,0),add(1,1)), (add(0,1),add(1,0)),(add(1,0),add(0,1)), (add(1,1),add(0,0)), (add(add(0,1),add(1,0)),0),(0,add(add(0,1),add(1,0))), (add(add(0,1),add(1,0)),add(0,0)),(add(0,0),add(add(0,1),add(1,0))), (add(add(add(0,1),add(1,0)),1),add(0,1)),(add(0,1),add(add(add(0,1),add(1,0)),1)), (add(add(add(0,1),add(1,0)),1),1),(add(add(add(0,1),add(1,0)),1),add(1,0)), (1,add(add(add(0,1),add(1,0)),1)),(add(1,0),add(add(add(0,1),add(1,0)),1))]
Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010
![Page 19: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/19.jpg)
Wortproblem fur konvergentesReduktionssystem E−→
Deduktion, SS 10, Folien TES, Seite 19, 13. Juli2010
![Page 20: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/20.jpg)
Konvergenz impliziert Entscheidbarkeit
Spezifikation spec = (Σ, E). SeiE−→ konvergentes Reduktionssystem.
Dann ist das Wortproblem entscheidbar: Frage: Gilt u =E v? Es reicht
zu testen, ob gilt u↓= v↓. Denn fur konvergentesE−→ gilt u↓= v↓ gdw.
uE←−→ v
Frage: Wie entscheidet man, obE−→ konvergent ist?
• Im allgemeinen unentscheidbar!
• Hinreichende Bedingung: Zeige
1.E−→ ist noethersch. (zeige Terminierung)
2.E−→ ist lokal konfluent. (Methode: Knuth-Bendix-Test)
Deduktion, SS 10, Folien TES, Seite 20, 13. Juli2010
![Page 21: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/21.jpg)
Kritische Paare
Zwei (variablendisjunkte) Regeln: • l1 → r1 • l2 → r2
Sei u ∈ Pos(l1), so dass• l1/u 6∈ V und• l1/u und l2 sind unifizierbar
Sei σ ∈ mgu(l1/u, l2).
Dann heißt σ(l1) eine Uberlappung von l2 → r2 in l1 → r1
Kritisches Paar zu l1 → r1 und l2 → r2: 〈σ(r1), σ(l1)[u→ σ(r2)]〉
Uberlappungstripel 〈σ(r1), σ(l1), σ(l1)[u→ σ(r2)]〉
CP(R) = Menge aller kritischen Paare, die man aus Regeln in R bilden kann
Deduktion, SS 10, Folien TES, Seite 21, 13. Juli2010
![Page 22: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/22.jpg)
Kritische Paare
Deduktion, SS 10, Folien TES, Seite 22, 13. Juli2010
![Page 23: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/23.jpg)
Kritische Paare
Deduktion, SS 10, Folien TES, Seite 23, 13. Juli2010
![Page 24: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/24.jpg)
Kritische Paare
Deduktion, SS 10, Folien TES, Seite 24, 13. Juli2010
![Page 25: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/25.jpg)
Kritische Paare
Deduktion, SS 10, Folien TES, Seite 25, 13. Juli2010
![Page 26: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/26.jpg)
Kritische Paare
Deduktion, SS 10, Folien TES, Seite 26, 13. Juli2010
![Page 27: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/27.jpg)
Kritische Paare in Haskell (Ausschnitt)-- start fuer (l1,r1) (l2,r2) mit-- cp l1 id l2 r1 r2
cp :: Term -> (Term -> Term) -> Term -> Term -> Term -> [(Term,Term)]cp (Var v) lcon l2 r1 r2 = []cp l1@(Fn f args) lcon l2 r1 r2 =let rek = cpL [] argsincase unify [(l1,l2)] ofNothing -> rekJust sigma -> (apply sigma r1 , apply sigma (lcon (apply sigma r2))) : rek
wherecpL bs [] = []cpL bs (a:as) = (cp a (\x -> lcon (Fn f (bs ++ [x] ++ as))) l2 r1 r2)
++ (cpL (bs ++ [a]) as)
-- Substitutionapply [] t2 = t2apply ((v,t):xs) t2 = apply xs (subst v t t2)
subst v t (Var v’)| v == v’ = t| otherwise = Var v’
subst v t (Fn f args) = Fn f (map (subst v t) args)
Deduktion, SS 10, Folien TES, Seite 27, 13. Juli2010
![Page 28: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/28.jpg)
Unifikation in Haskellunify :: [(Term,Term)] -> Maybe [(String,Term)]unify [] = Just []unify (((Fn a argsA),(Fn b argsB)):xs)| a == b = unify $ (zip argsA argsB) ++ xs -- Dekomposition| otherwise = Nothing -- Fail
unify ((Var v,Var v’):xs)| v == v’ = unify xs -- Loeschen v=v
unify ((Var v,t):xs)| v ‘occursInNonVar‘ t = Nothing -- Fail (Occurs Check)| otherwise = case unify (map (\(l,r) -> (subst v t l, subst v t r)) xs) of
-- Einsetzen + Rekursiver AufrufJust ys -> Just ((v,apply ys t):ys) -- Voll instanziierenNothing -> Nothing -- Fail
unify ((t,Var v):xs) = unify ((Var v,t):xs) -- Drehen t=v -> v=t
-- Occurs CheckoccursInNonVar v (Var _) = FalseoccursInNonVar v t = v ‘elem‘ (varsOf t)
-- Variablen eines Terms berechnenvarsOf (Var v) = [v]varsOf (Fn f args) = concatMap varsOf args
Deduktion, SS 10, Folien TES, Seite 28, 13. Juli2010
![Page 29: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/29.jpg)
Eigenschaften Kritischer Paare
Zwei Terme s und t heißen zusammenfuhrbar, falls es ein z gibt mit
s∗−→ z und t
∗−→ z. (Notation s↓↓t).
Critical Pair Lemma von Knuth und Bendix:
Aus t1R←− t
R−→ t2 folgt t1↓↓t2 oder t1CP (R)←−→ t2.
Satz:
• Regelsystem R ist genau dann lokal konfluent,
wenn alle kritischen Paare zusammenfuhrbar sind.
• Noethersches R ist genau dann konfluent (und auch konvergent),
wenn alle kritischen Paare zusammenfuhrbar sind.
Deduktion, SS 10, Folien TES, Seite 29, 13. Juli2010
![Page 30: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/30.jpg)
Knuth-Bendix-Test
Eingabe: Noethersches Regelsystem R.
Ausgabe: R ist Konfluent? ja / nein
1. Berechne CP(R).
2. Fur alle (s, t) ∈ CP(R):
Berechne s↓ und t↓Wenn s↓6= t↓, dann gebe Nein aus und breche ab
3. Gebe Ja aus
Deduktion, SS 10, Folien TES, Seite 30, 13. Juli2010
![Page 31: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/31.jpg)
Einfacher Test fur Spezifikationen
spec = (Σ, E) Spezifikation,E−→ die operationale E-Gleichheit.
Wir wissen: WennE−→ konvergent, dann ist das Wortproblem fur spec
entscheidbar.
Methode:
1. Richte Gleichungen in E und zeige, dassE−→ terminierend.
2. Zeige lokale Konfluenz mit Knuth-Bendix-Test
Nachteil: Funktioniert oft nicht!
Deduktion, SS 10, Folien TES, Seite 31, 13. Juli2010
![Page 32: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/32.jpg)
Knuth-Bendix-Vervollstandigung
Sei spec(Σ, E) Spezifikation,E−→ die operationale E-Gleichheit
1. Richte Gleichungen in E und finde Ordnung zum Nachweis, dassE−→ terminiert.
2. Berechne CP (E−→) und teste auf Zusammenfuhrbarkeit.
Seien E′ die nicht zusammenfuhrbaren kritischen Paare
3. Wenn E′ = ∅dann: stoppe mit Ausgabe
E−→,
sonst: gehe zu 1. mit E := E ∪ E′.
Deduktion, SS 10, Folien TES, Seite 32, 13. Juli2010
![Page 33: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/33.jpg)
Knuth-Bendix-Vervollstandigung
Wenn die Vervollstandigung terminiert, dann gilt fur die AusgabeE′−→:
• E′−→ ist konvergent
• sE,∗←−→ t gdw. s
E′,∗←−→ t, d.h.
E′−→ entscheidet E.
Deduktion, SS 10, Folien TES, Seite 33, 13. Juli2010
![Page 34: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/34.jpg)
Beispiel
Betrachte E = {f(g(x)) = g(x), f(f(x)) = g(x)}Richten der Gleichungen
E−→:= {f(g(x))→ g(x), f(f(x))→ g(x)},E−→ terminiert, da Termgroße strikt kleiner wird
Berechnen von CP(E−→):
• f(g(x))→ g(x) mit sich selbst: keine kritischen Paare
• f(g(x))→ g(x) mit f(f(x))→ g(x): keine kritischen Paare
• f(f(x))→ g(x) mit sich selbst:
f( f(x) ) //g(x)
f(f(y))��
g(y)
mgu:{x 7→ f(y)} f( f(f(y))
��
) //g(f(y))
f( g(y) )
Kritisches Paar 〈g(f(y)), f(g(y))〉
Deduktion, SS 10, Folien TES, Seite 34, 13. Juli2010
![Page 35: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/35.jpg)
• f(f(x))→ g(x) mit f(g(y))→ g(y):
f( f(x) ) //g(x)
f(g(y))��
g(y)
mgu:{x 7→ g(y)} f( f(g(y))
��
) //g(g(y))
f( g(y) )
Kritisches Paar 〈g(g(y)), f(g(y))〉
Die Kritischen Paare 〈g(f(y)), f(g(y))〉 und 〈g(g(y)), f(g(y))〉 sind beide
nicht zusammenfuhrbar (daE−→:= {f(g(x))→ g(x), f(f(x))→ g(x)} )
Neues
E1 = { f(g(x)) = g(x),f(f(x)) = g(x),g(f(y)) = f(g(y)),g(g(y)) = f(g(y))}
![Page 36: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/36.jpg)
Richten der Gleichungen
E1−−→ = { f(g(x))→ g(x),f(f(x))→ g(x),g(f(y))→ f(g(y)),g(g(y))→ f(g(y))}
terminiert: Ordnungen (Termgroße, Term als String)
Kritische Paare:
〈g(f(x)), f(g(x))〉,〈f(g(g(x))), g(f(g(x)))〉,〈g(f(x)), f(f(g(x)))〉,〈g(g(x)), f(f(g(x)))〉,〈g(g(x)), f(g(x))〉,〈f(g(g(x))), g(g(x))〉,〈f(g(f(x))), g(g(x))〉,〈f(g(f(x))), g(f(g(x)))〉
Alle zusammenfuhrbar, d.h.E1−−→ entscheidet E.
![Page 37: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/37.jpg)
OrthogonaleTermersetzungssysteme
Deduktion, SS 10, Folien TES, Seite 37, 13. Juli2010
![Page 38: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/38.jpg)
Lineare Termersetzungssysteme
Linearer Term := keine Doppelvorkommen der
selben Variablen.
Rewrite-Regel l→ r rechts-linear := r ist linear
Rewrite-Regel l→ r links-linear := l ist linear
Rewrite-Regel l→ r linear := l→ r ist recht- und links-linear
TES ist linear
(links-linear, rechts-linear)
:= alle Regeln sind linear
(links-linear,rechts-linear)
Z.B. sind die linken Seiten von Definitionen von Funktionen in funk-
tionalen Programmiersprachen linear ({fi(x1, . . . , xi,n) = ei})
Knuth-Bendix-Test benotigt Terminierung, um Konfluenz zu zeigen,
aber z.B. Programmiersprachen lassen i.A. auch nichtterminierende
Funktionen zu.
Deduktion, SS 10, Folien TES, Seite 38, 13. Juli2010
![Page 39: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/39.jpg)
Konfluenzbeweis trotz Nichtterminierung
Methode: Zeige Konfluenz uber das Kriterium der starken Konfluenz.
Proposition
Wenn das TES R linear ist, und alle kritischen Paare
die starke Konfluenzbedingung erfullen,
dann ist das TES auch (stark) konfluent.
u∗~~~~
~~~~
~~ ∗��@
@@@@
@@@
x∗ @
@@
@ y∗��~
~~
~
z
u
~~~~~~
~~~~
��@@@
@@@@
@
x∗ @
@@
@ y
≤1��~~
~~
zkonfluent stark konfluent
Deduktion, SS 10, Folien TES, Seite 39, 13. Juli2010
![Page 40: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/40.jpg)
Orthogonale TES
Ein TES heißt orthogonal, wenn es links-linear ist und keine kritischen
Paare hat.
Theorem
Jedes orthogonale Termersetzungssystem ist konfluent.
Deduktion, SS 10, Folien TES, Seite 40, 13. Juli2010
![Page 41: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/41.jpg)
Funktionale Programmiersprachen
Funktionen in funktionalen Programmiersprachen sind links-linear und
haben keine kritischen Paare, wenn die Definition jeweils mit disjunkten
Pattern gemacht wird.
Man muss aber eine parallele Reduktion (mehrere Definitionseinset-
zungen auf einmal) zulassen
Die parallele Reduktion kann man als stark konfluent nachweisen, und
kann danach das Kriterium der starken Konfluenz verwenden.
Deduktion, SS 10, Folien TES, Seite 41, 13. Juli2010
![Page 42: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/42.jpg)
Linkslinearitat ist notwendig als Voraussetzung
Beispiel: TES bestehend aus den Regeln
f(x, x) → af(x, g(x)) → bc → g(c)
Eigenschaften:
• Keine kritischen Paare
• nicht terminierend wg. c→ g(c)
• nicht links-linear (aber rechts-linear).
• Der Ausdruck f(c, c) hat als Normalform a und b,
d.h. das TES ist nicht konfluent
Deduktion, SS 10, Folien TES, Seite 42, 13. Juli2010
![Page 43: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/43.jpg)
Funktionale Programmiersprachen
• Konfluente TES haben eindeutige Normalformen, wenn eine exi-
stiert.
• Konsequenz: Wenn die Regeln einer Programmiersprache orthogo-
nal sind, dann ist die Sprache deterministisch.
Deduktion, SS 10, Folien TES, Seite 43, 13. Juli2010
![Page 44: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/44.jpg)
Programmiersprache mit letrec (1)
Regeln:
letrec . . . , x = t, . . . in C[x]→ letrec . . . , x = t, . . . in C[t]
letrec . . . , x = t, . . . , y = C[x], . . . in s→ letrec . . . , x = t, . . . , y = C[t], . . . in s
letrec . . . , y = C[x], . . . , x = t, . . . , in s→ letrec . . . , y = C[t], . . . , x = t, . . . , in s
Deduktion, SS 10, Folien TES, Seite 44, 13. Juli2010
![Page 45: Gleichungsspezifikationen Kongruenzabschluss fur ... · Deduktion, SS 10, Folien TES, Seite 18, 13. Juli2010. Wortproblem f¨ur konvergentes Reduktionssystem −→E Deduktion, SS](https://reader030.vdocuments.pub/reader030/viewer/2022040417/5d4fb7de88c993e03f8b661d/html5/thumbnails/45.jpg)
Programmiersprache mit letrec (2)
Ist nicht konfluent:letrec x = g(y), y = h(x) in x
rrffffffffffffffffffffffff
++XXXXXXXXXXXXXXXXXXXXXXX
letrec x = g(y), y = h(g(y)) in x
��
letrec x = g(h(x)), y = h(x) in x
��
letrec x = g(y), y = h(g(y)) in g(y)
��
letrec x = g(h(x)), y = h(x) in g(h(x))
��letrec x = g(y), y = h(g(y)) in g(h(g(y)))
��
. . .
��
. . .
��
. . . in g(hg)n(y) . . . in (gh)n(y)
Deduktion, SS 10, Folien TES, Seite 45, 13. Juli2010