Algebraische Spezifikation - informatik.uni

Werbung
Prof. Dr. Hans-Jörg Kreowski
Studiengang Informatik
OAS 3001, Tel.: 2956, 3697 (Sekr.), Fax: 4322
E-Mail: [email protected]
5. Mai 2008
Aufgaben 2
Algebraische Spezifikation
2. Übungsblatt
Geübt werden Gleichungen, ihre Gültigkeit, die Äquivalenz von Termen und der Zusammenhang zwischen Spezifikationen und zugehörigen Algebren (vgl. die Definitionen vom
Ergänzungsblatt und 4.1, 4.5, 4.7.1 im Skript).
1. Betrachte die folgende Spezifikation der natürlichen Zahlen.
spec Nat1 =
sorts Nat
opns 0 : → Nat
succ : Nat → Nat
+ : Nat × Nat → Nat
eqns +(0, n) = n
+(succ(m), n) = succ(+(m, n))
(a) Zeige, dass die Gleichung succ(n) = +(succ(0), n) in jeder Nat1-Algebra gilt.
(b) Die Gleichung succ(n) = +(n, succ(0)) gilt nicht in jeder Nat1-Algebra. Konstruiere eine Nat1-Algebra (mit möglichst kleiner Datenmenge für Nat), in
der diese Gleichung nicht gilt.
2. Betrachte die folgenden Gleichungen zur Signatur Set vom 1. Übungsblatt:
insert(x, insert(x, S)) = insert(x, S)
insert(x, insert(y, S)) = insert(y, insert(x, S))
union(∅, S ) = S union(insert(x, S), S ) = insert(x, union(S, S ))
(i)
(ii)
(iii)
(iv)
(a) Zeige, dass diese Gleichungen in der Set-Algebra 2A = (A, 2A , a1 , . . . , an , ∅,
ins, ∪) gelten.
(b) Welche der Gleichungen gelten in der Set-Algebra A∗ = (A, A∗ , a1 , . . . , an , λ,
insert, concat)? Gib für jede Gleichung, die nicht gilt, eine Wertzuweisung als
Gegenbeispiel an.
3. In einer Menge kommt ein Element ein- oder keinmal vor. In einer Multimenge
(engl. multiset oder bag) darf ein Element mehrfach vorkommen. Formal ist eine
Multimenge M über einer Menge A definiert als eine Abbildung M : A → N, die
jedem Element a ∈ A seine Häufigkeit M(a) zuordnet. Die leere Multimenge ist mit (a) = 0 für alle a ∈ A, und die Menge aller Multimengen über A wird mit
NA bezeichnet.
Die Summe zweier Multimengen M1 , M2 ∈ NA ist M1 ⊕ M2 mit M1 ⊕ M2 (a) =
M1 (a) + M2 (a) für alle a ∈ A. Daraus folgt, dass ⊕ assoziativ und kommutativ ist,
d.h. für alle Multimengen M1 , M2 , M3 ∈ NA gilt M1 ⊕(M2 ⊕M3 ) = (M1 ⊕M2 )⊕M3
und M1 ⊕ M2 = M2 ⊕ M1 .
Die Operation add : A × NA → NA fügt ein Element a zu einer Multimenge M
dazu, was definiert ist als add(a, M) = a ⊕ M. Dabei ist a die Multimenge, die
genau einmal a enthält und sonst nichts (d.h. a(a ) ist 1, falls a = a ist, und 0
sonst).
Die folgende Spezifikation soll den Datentyp der Multimengen über einer endlichen
Menge beschreiben.
spec MSet =
sorts A, MSet
opns a1 , . . . , an : → A
∅ : → MSet
add : A × MSet → MSet
sum : MSet × MSet → MSet
eqns add(x, add(y, m)) = add(y, add(x, m))
sum(m, ∅) = m
sum(m, add(x, m )) = add(x, sum(m, m ))
Zeige die folgenden Äquivalenzen für MSet, wobei die Terme t1 , t2 , t3 ∈ TMSet,MSet
nur aus den Konstanten ∅ und ai , i = 1, . . . , n, sowie dem Operationssymbol add
aufgebaut sind und a ∈ TMSet,A ist.
(a) sum(t1 , ∅) ≡ t1
(b) sum(∅, t2 ) ≡ t2
(c) sum(sum(∅, t1 ), t2 ) ≡ sum(t1 , t2 )
(d) add(a, sum(t1 , t2 )) ≡ sum(add(a, t1 ), t2 )
(e) sum(sum(t1 , t2 ), t3 ) ≡ sum(t1 , sum(t2 , t3 ))
(f) sum(t1 , t2 ) ≡ sum(t2 , t1 )
Abgabe bis zum 20. Mai 2008.
Herunterladen