Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...
Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...
Skript (Fassung vom 4.4.2011) - Lehr- und Forschungsgebiet ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
1. Sei S = Subterms(E)∪Subterms(s)∪Subterms(t).<br />
2. Sei L = {{s,t} | s ≡ t ∈ E}∪{{s} | s ∈ S}.<br />
3. Vereinige alle Mengen M 1 ,M 2 ∈ L mit M 1 ∩M 2 ≠ ∅.<br />
4. Sei K = L∪{{f(s 1 ,...,s n ),f(t 1 ,...,t n )} | f ∈ Σ, es ex. M i ∈ L mit s i ,t i ∈ M i ,<br />
f(s 1 ,...,s n ),f(t 1 ,...,t n ) ∈ S}.<br />
5. Vereinige alle Mengen M 1 ,M 2 ∈ K mit M 1 ∩M 2 ≠ ∅.<br />
6. Falls K ≠ L dann setze L = K <strong>und</strong> gehe zu 4.<br />
7. Falls es ein M ∈ L gibt mit s ∈ M <strong>und</strong> t ∈ M, dann gib “True” aus.<br />
Sonst gib “False” aus.<br />
Der obige Algorithmus lässt sich natürlich noch etwas verbessern, indem man bereits<br />
vor der “Kongruenz–Bildung” in Schritt 4 jeweils überprüft, ob bereits s <strong>und</strong> t zusammen<br />
in einer Menge M ∈ L auftreten. In diesem Fall kann man sofort “True” ausgeben <strong>und</strong> den<br />
Algorithmus beenden.<br />
Satz 3.2.15 (Korrektheit des Algorithmus)<br />
Der Algorithmus KONGRUENZABSCHLUSS terminiert immer <strong>und</strong> ist korrekt.<br />
Beweisskizze.DieTerminierungfolgtanalogzuLemma3.2.11,denndaS endlichist<strong>und</strong>L<br />
injedemSchleifendurchlauf wächst, gilt irgendwann K = L. DieKorrektheit gilt ausfolgendem<br />
Gr<strong>und</strong>: Nach Schritt 3 ist L = S 0 , d.h., es gilt s,t ∈ M für ein M ∈ L gdw. s ⇔ ∗ E t <strong>und</strong><br />
s,t ∈ S. Mit anderen Worten, man hat E0 S′ = {s ≡ t | es existiert ein M ∈ L mit s,t ∈ M}.<br />
(Die Vereinigung aller nicht-disjunkten Mengen erzeugt gerade den transitiv-reflexiv-symmetrischen<br />
Abschluss.) Nach Schritt 5 gilt im i-ten Schleifendurchlauf K = S i , d.h., es<br />
gilt s,t ∈ M für ein M ∈ K gdw. s ⇔ ∗ t <strong>und</strong> s,t ∈ S. Man hat somit<br />
Ei−1 S′ ∪C(ES′ i−1 )<br />
Ei S′ = {s ≡ t | es existiert ein M ∈ K mit s,t ∈ M} (dies zeigt man durch Induktion über<br />
i). In Schritt 7 gilt somit L = S/ ⇒CC S (E)<br />
, d.h., es existiert ein M ∈ L mit s,t ∈ M gdw.<br />
s ≡ t ∈ CC S (E). Aufgr<strong>und</strong> der Korrektheit <strong>und</strong> Vollständigkeit des Kongruenzabschlusses<br />
bzgl. S (Satz 3.2.12) ist dies gleichbedeutend zu s ≡ E t.<br />
✷<br />
Beispiel 3.2.16 Der obige Algorithmus arbeitet wie folgt in unserem Beispiel. Hierbei ist<br />
wieder E = {i ≡ j,k ≡ l,f(i) ≡ g(k),j ≡ f(j),m ≡ g(l)}, s = f(m) <strong>und</strong> t = g(k).<br />
• Im ersten Schritt erzeugt man S = {i,j,k,l,m,f(i),f(j),f(m),g(k),g(l)}.<br />
• Im zweiten Schritt setzt man L auf die Menge, die {i,j},{k,l},{f(i),g(k)},{j,f(j)},<br />
{m,g(l)},{f(m)} sowie {q} für alle q ∈ S enthält.<br />
• Im dritten Schritt vereinigt man alle nicht-disjunkten Mengen von L wie z.B. {i,j}<br />
<strong>und</strong> {j,f(j)}. Es ergibt sich L = {{i,j,f(j)},{k,l},{f(i),g(k)},{m,g(l)},{f(m)}}. Dies<br />
ist die Quotientenmenge zur Relation ⇔ ∗ E , bei der zwei Terme gleich sind, wenn dies<br />
aufgr<strong>und</strong> der (wiederholten) Reflexivität, Transitivität <strong>und</strong> Symmetrie aus E folgt.<br />
• Nun setzt man K auf L <strong>und</strong> erweitert es um Mengen {f(t 1 ),f(t 2 )} <strong>und</strong> {g(t 1 ),g(t 2 )},<br />
wobei t 1 <strong>und</strong>t 2 jeweils ausdenselben Mengen von Lstammen müssen. Es werden aber<br />
nur solche Terme betrachtet, die in S enthalten sind. Neben einelementigen Mengen<br />
(bei denen also t 1 = t 2 ist) enthält K dann die zusätzlichen Mengen {f(i),f(j)} <strong>und</strong><br />
{g(k),g(l)}.