Aufgabenblatt 3 Sommersemester 2009 Markus Lohrey Übungen zur Vorlesung Verifikation unendlicher Systeme 1. Der Euklidische Algorithmus zur Berechnung des größten gemeinsamen Teilers zweier Zahlen x, y ∈ N kann wie folgt als rekursive Prozedur umgesetzt werden: integer x, y (dies sind globale Variablen) main{ integer z (eine lokale Variable) if x < y then z := x; x := y; y := z; call(main) elseif y = 0 then return else z := x mod y; x := y; y := z; call(main) endif } Hierbei bezeichnet x mod y den ganzahligen Rest bei Division von x durch y. Der größte gemeinsame Teiler von x und y ist der Wert der globalen Variablen x am Ende. Übersetzen Sie dieses Programm in ein Pushdownsystem in der moped-Notation und testen Sie Ihre moped-Implementierung für selbst gewählte Eingabewerte. 2. Es seien A1 = (A1 , I1 ) und A2 = (A2 , I2 ) automatische Strukturen über der gemeinsamen Signatur S = (R, arity). Definiere die Struktur A1 × A2 = (A1 × A2 , I) wobei für alle r ∈ R (mit n = arity(r)) gilt: I(r) = {h(a1 , b1 ), . . . , (an , bn )i | (a1 , . . . , an ) ∈ I1 (r), (b1 , . . . , bn ) ∈ I2 (r)}. Dies ist das direkte Produkt von A1 und A2 . Zeigen Sie, dass A1 × A2 wieder automatisch ist. 3. Es sei A = (A, I) eine automatische Struktur über der Signatur S = (R, arity). Sei ϕ(x, y) ∈ FO(S) eine Formel der Logik 1.Stufe, so dass die binäre Relation ≡ = {(a, b) ∈ A × A | A |= ϕ(a, b)} eine Äquivalenzrelation auf A ist. Wir definieren den Quotienten A/ϕ = (B, J) wie folgt: • B = {[a]≡ | a ∈ A} ist die Menge aller Äquivalenzklassen bezüglich ≡. • Sei r ∈ R, arity(r) = n. Dann gilt ([a1 ]≡ , . . . , [an ]≡ ) ∈ J(r) genau dann, wenn es ein (a′1 , . . . , a′n ) ∈ I(r) mit ai ≡ a′i für alle 1 ≤ i ≤ n gibt. Zeigen Sie, dass A/ϕ wieder automatisch ist. 4. Zeigen Sie, dass (Q, ≤) eine automatische Struktur ist. Hinweis: Sie können den Satz von Cantor benutzen: Jede lineare Ordnung (A, ≤) mit den folgenden Eigenschaften ist isomorph zu (Q, ≤). • A ist abzählbar-unendlich. • A hat kein größtes sowie kein kleinstes Element: ∀a ∈ A∃b, c ∈ A:b<a<c • A ist dicht: ∀a, b ∈ A : a < b → ∃c ∈ A : a < c < b