Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 1 Kapitel 12 Erweiterung von Gleichungsspezifikationen Ziel: modularer,

Ähnliche Präsentationen


Präsentation zum Thema: "Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 1 Kapitel 12 Erweiterung von Gleichungsspezifikationen Ziel: modularer,"—  Präsentation transkript:

1 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 1 Kapitel 12 Erweiterung von Gleichungsspezifikationen Ziel: modularer, schrittweise Spezifikation von ADT Definition Kombination SPEC Es sei SPEC = (, E) eine Spezifikation mit einer S-sortigen Signatur. Hier ist = ( w,s ) w S*, s S (vgl. Kap. 2) SPEC*SPEC SPEC* = ( *, E*) heißt eine Kombination aus SPEC und der Ergänzung (S 0, 0, E 0 ), wenn S 0 eine Menge (neuer) Sorten, 0 eine (S S 0 )-sortige Signatur und E 0 eine Menge von ( 0 )-Gleichungen ist, und es gilt *= 0, E*= E E 0. SPEC* SPEC Schreibweise: SPEC* = SPEC + (S 0, 0, E 0 ) S 0, 0, E 0 können auch leer sein, bezeichnet die disjunkte Vereinigung. (S 0, 0, E 0 ) selbst ist i.a. keine Spezifikation

2 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 2 Beispiel 1: bool bool = sorts bool oprs true, false : bool not : bool bool and, or, implies : bool, bool bool var p, q : bool eqns not(true) = false not(false) = true not(not(p)) = p and(true, p) = p and(false, p) = false and(p, q) = and(q, p) or(p, q) = not(and(not(p), not(q))) implies(p, q) = or(not(p), q) bool end bool

3 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 3 Beispiel 1 (Forts.) bool Bilde Kombination durch Ergänzung von bool : ternarybool ternary = bool + oprs maybe : bool eqns not(maybe) = maybe and(true, maybe) = maybe and(false, maybe) = false or(true, maybe) = true ternary end ternary Absicht: 3-wertige Logik Was passiert? ADT boolbool Zu ADT bool gehört T bool mit genau 2 Kongruenzklassen als Elementen: [true], [false]. ternary T ternary besitzt die 3 Elemente [true], [false], [maybe].

4 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 4 Beispiel 1 (Forts.) ternary Zu T ternary gehören aber auch noch die Elemente [or(maybe, maybe)], [or(maybe, or(maybe, maybe))], [or(maybe, or(maybe, or(maybe, maybe)))]... usw. Statt 3 Werten hat man unendlich viele Elemente spezifiziert! Die Gleichung (oder eine geeignete andere) or(maybe, maybe) = maybe hätte dies verhindert. Achtung: Initiale Semantik kann durch ein (kleines) Versehen viel zu viele Elemente erzeugen! In der Regel will man durch Hinzunahme neuer Sorten, Operatoren und Gleichungen die Eigenschaften und Anzahl der ursprünglichen Elemente nicht verändern!

5 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 5 Beispiel 2 natbool Betrachte die früheren Spezifikationen nat und bool und bilde: ordernatbool order = nat +bool + oprs : nat, nat bool var m, n : nat eqns (0 n) = true (suc(n) 0) = false (suc(n) suc(m)) = (n m) order end order natbool Bei dieser Erweiterung von nat +bool entstehen keine neuen Elemente. nat Denn die neuen Gleichungen verändern die Zahlen [suc n (0)] nicht. Es entstehen auch keine neuen Elemente der Sorte bool. Denn jeder Term der Sorte bool der Gestalt (t 1 t 2 ) läßt sich durch die Gleichun- gen aus nat in (t 1 * t 2 *) umformen mit suc-Termen t 1 *, t 2 *, und dann mit den neuen Gleichnugen in true oder false.

6 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 6 Beispiel 3 Es ist auch möglich, daß durch eine solche "Kombination" ursprüngliche Elemente weg- bzw. zusammenfallen. Betrachte z.B. die Kombination testboolbool testbool = bool + eqns implies(true, false) = true testbool end testbool Hier erhält man [true] = [false], denn es gilt dann true E* implies(true, false) E* or(not(true), false) E* or(false, false) E* not(and(not(false), not(false))) E* not(and(true, true)) E* not(true) E* false. bool Damit ist diese Kombination keine Erweiterung von bool.

7 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 7 Ziel: Untersuchung, wann eine Kombination tatsächlich eine echte Erweiterung der ursprünglichen Spezifikation darstellt. Definition Redukt SPEC Es sei SPEC = (, E) eine Spezifikation und SPEC*SPEC SPEC* = SPEC + (S 0, 0, E 0 ). SPEC SPEC* Das SPEC-Redukt von T SPEC* ist die -Algebra SPEC* SPEC SPEC* SPEC (T SPEC* ) SPEC = [(T SPEC* ) SPEC, (f * ) ] mit SPEC* SPEC SPEC* (T SPEC* ) SPEC = (T SPEC*, s ) s S SPEC (Nur die Sorten und Operatoren, die auch in SPEC vorkommen!)

8 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 8 Mit diesem Begriff läßt sich nun eine echte Erweiterung vernünftig definieren. Definition Erweiterung SPEC* SPEC Eine Spezifikation SPEC* heißt eine Erweiterung der Spezifikation SPEC genau dann, wenn SPEC* SPEC SPEC (T SPEC* ) SPEC T SPEC. Bei den vorangegangenen Beispielen trifft diese Bedingung offensichtlich nur auf das Beispiel 2 zu.

9 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 9 Die Bedingung SPEC* SPEC SPEC (T SPEC* ) SPEC T SPEC für eine Kombination, eine Erweiterung zu sein, ist eine semantische Bedingung. Denn es ist im wesentlichen Isomorphie für gewisse Faktor- algebren zu überprüfen. Aber sowohl Homomorphismen als auch Kongruenzen entsprechen Semantik! Deshalb ist folgender Satz nicht verwunderlich: SPEC* SPEC Die Frage, ob eine Spezifikation SPEC* eine Erweiterung einer Spezifikation SPEC ist, ist im allgemeinen unentscheidbar. Suche nach hinreichenden Kriterien

10 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 10 Definition vollständig, konsistent SPEC Es sei SPEC = (, E) eine Spezifikation und SPEC*SPEC SPEC* = SPEC + (S 0, 0, E 0 ). h sei der eindeutig bestimmte Homomorphismus 1 ) SPEC SPEC* SPEC h : T SPEC (T SPEC* ) SPEC. SPEC* Dann heißt SPEC* SPEC vollständig bezüglich SPEC genau dann, wenn h surjektiv ist, und SPEC konsistent bezüglich SPEC genau dann, wenn h injektiv ist. 1 ) Beachte, daß beides (, E)-Algebren sind, und T,E in der Klasse Alg,E initial ist.

11 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 11 Beispiel Man überzeugt sich leicht davon, daß bei den vorangegangenen drei Beispielen gilt: ternarybool ternary ist bezüglich bool konsistent, aber nicht vollständig. ordernatbool order ist bezüglich nat + bool konsistent und vollständig. testboolbool testbool ist bezüglich bool vollständig, aber nicht konsistent. Trivialerweise gilt der Satz: Konsistenz und Vollständigkeit: SPEC*SPEC SPEC* ist eine Erweiterung von SPEC genau dann, SPEC*SPEC wenn SPEC* bezüglich SPEC konsistent und vollständig ist. Beweis: Ein Homomorphismus h ist Isomorphismus genau dann, wenn h surjektiv und injektiv ist.

12 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 12 Beispiel Beim Entwurf von Spezifikationen können sehr leicht inkonsistente Kombinationen entstehen: set(nat)nat set(nat) = nat + sorts set oprs : set insert : set, nat set var s : set m, n : nat (1)eqns insert(insert(s, n), n) = insert(s, n) (2)insert(insert(s, n), m) = insert(insert(s, m), n) set(nat) end set(nat) Nun soll noch eine Lösch-Operation hinzukommen. Wie könnte man da diese Spezifikation noch erweitern?

13 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 13 Beispiel (Forts.) Man muß einen zusätzlichen Operator einführen und dessen Eigenschaften durch geeignete Gleichungen beschreiben: newset(nat)set(nat) newset(nat) = set(nat) + oprsdel : set, nat set var s : set n : nat (3)eqns del(, n) = (4)del(insert(s, n), n) = s newset(nat) end newset(nat) Sieht vernünftig aus - oder?

14 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 14 Beispiel (Forts.) Leider funktioniert dies nicht in der offenbar gewünschten Weise. Denn es ergibt sich dummerweise: E* del(insert(, n), n) wegen (4) E* del(insert(insert(, n), n), n) wegen (1) E* insert(, n) wegen (4) Die Gleichung (1) läßt sich wie alle anderen ja auch von rechts nach links verwenden. Damit hat die Operation insert keine Wirkung mehr! Die Sorte set besteht nur noch aus einem einzigen Element: [ ] ! newset(nat)set(nat) Die Spezifikation newset(nat) ist bezüglich set(nat) inkonsistent!

15 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 15 Lemma: SPEC*SPECSPEC* SPEC Falls SPEC* = SPEC + (S 0,, ), so ist SPEC* eine Erweiterung von SPEC. Beweis: trivial Lemma: SPEC*SPEC SPEC**SPECSPEC** SPEC Wenn SPEC* eine Erweiterung von SPEC ist, und SPEC** eine Erweiterung von SPEC*, so ist SPEC** auch eine Erweiterung von SPEC. Beweis: gilt wegen der Eigenschaften bei Nacheinanderausfüh- rung von Homomorphismen

16 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 16 Definition Anreicherung SPEC*SPECSPEC* Gilt SPEC* = SPEC + (, 0, E 0 ), so heißt SPEC* SPEC eine Anreicherung von SPEC. Wegen der obigen Lemmata genügt es, die Suche nach hinreichenden Kriterien dafür, daß eine Kombination eine Erweiterung ist, auf Anreicherungen zu beschränken. Das heißt, wir suchen nun Kriterien für die Vollständigkeit und Konsistenz von Anreicherungen.

17 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 17 Vollständigkeit und Konsistenz von Anreicherungen: SPEC* SPECSPEC*SPEC Es sei SPEC* eine Anreicherung einer Spezifikation SPEC, SPEC* = SPEC + (, 0, E 0 ), SPEC*SPEC wobei SPEC* = ( *, E*), SPEC = (, E), *= 0, E*= E E 0 (alles S-sortig). SPEC* Dann ist SPEC* SPEC 1.) vollständig bezüglich SPEC genau dann, wenn t' (t' T * t (t T t' E* t ), und SPEC 2.) konsistent bezüglich SPEC genau dann, wenn t 1 t 2 ( t 1,t 2 T t 1 E* t 2 t 1 E t 2 ).

18 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 18 T T * g h T,E T *,E* nat ( E ) nat ( E* ) SPEC Die Homomorphismen g, h und die Inklusion werden jeweils auf den SPEC-Redukten betrachtet. Wegen Initialität existieren alle diese Homomorphismen und sind eindeutig bestimmt. Weil speziell auch g eindeutig ist, muß auch gelten: ( ) h([t] E ) = [t] E* für alle t T Beweis:

19 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 19 Beweis (Forts.): ( ) h([t] E ) = [t] E* für alle t T SPEC* zu 1.) SPEC* vollständig gdw. h surjektiv ist. Dies gilt gdw. zu jeder Kongruenzklasse [t'] E* eine Kongruenzklasse [t] E existiert mit h([t] E ) = [t'] E*. Wegen ( ) haben wir [t'] E* = h([t'] E ) = h([t] E ) = [t] E* gdw. t' E* t. SPEC* Also ist SPEC* vollständig gdw. zu jedem t' T * ein t T existiert mit t' E* t. SPEC*SPEC zu 1.) SPEC* vollständig bezüglich SPEC gdw. t' (t' T * t (t T t' E* t )

20 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 20 Beweis (Forts.): ( ) h([t] E ) = [t] E* für alle t T SPEC* zu 2.) SPEC* konsistent gdw. h injektiv ist. Dies gilt gdw. t 1,t 2 T : h([t 1 ] E ) = h([t 2 ] E ) [t 1 ] E = [t 2 ] E Wegen ( ) gilt dies gdw. [t 1 ] E* = [t 2 ] E* [t 1 ] E = [t 2 ] E also gdw. t 1 E* t 2 t 1 E t 2, w.z.b.w. SPEC*SPEC zu 2.) SPEC* konsistent bezüglich SPEC gdw. t 1 t 2 ( t 1,t 2 T t 1 E* t 2 t 1 E t 2 )

21 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 21 Das Kriterium für die Vollständigkeit läßt sich noch verschärfen: Man muß nur solche Terme beachten, bei denen die neuen Operatoren nur als Hauptverknüpfungsfunktoren auftreten. Definition 0 -normaler Term SPEC*SPECSPEC* SPEC Sei SPEC* = SPEC + (, 0, E 0 ), SPEC* = ( *,E *), SPEC = (, E). Ein Term t T * heißt ein 0 -Term genau dann, wenn t = t 1 t 2... t n für ein 0. Ein 0 -Term t 1 t 2... t n heißt ein 0 -normaler Term genau dann, wenn i (1 i n): t i T ist.

22 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 22 Der Beweis läßt sich leicht induktiv über die Anzahl der Vor- kommen von neuen Operatoren aus 0 in einem Term t' T * zeigen. Man ersetze im Induktionsschritt den jeweils innersten 0 -normalen Term durch den gemäß obigem Kriterium existierenden äquivalenten Term aus T. Der resultierende Term ist nach dem Gleichungskalkül zum ursprünglichen t' äquivalent und enthält mindestens einen neuen Operator weniger. Vollständigkeitskriterium: Mit denselben Bezeichnungen wie eben gilt: SPEC*SPEC SPEC* ist vollständig bezüglich SPEC genau dann, wenn für alle 0 -normalen Terme t 0 T * ein t T existiert mit t 0 E* t.

23 Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 23 Die vorgestellten Kriterien erfordern die Prüfung der Äquivalenz von Termen: t 1 E t 2 ? für verschiedene Gleichungssysteme, d.h. die Lösung des entsprechenden sogenannten Wortproblems. Folglich ist diese Frage i.a. unentscheidbar! Man benötigt i.a. weitere hinreichende Kriterien. Für eine Reihe konkreter Gleichungssysteme ist die Frage auch entscheidbar! Damit beschäftigt sich die Theorie der Termersetzungssysteme. Für die Vollständigkeit gibt es eine Reihe von praktikablen, d.h. relativ einfachen, hinreichenden Kriterien. Für die Entscheidung der Konsistenz gibt es vergleichbar einfache Kriterien leider bisher nicht.


Herunterladen ppt "Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 12 / 1 Kapitel 12 Erweiterung von Gleichungsspezifikationen Ziel: modularer,"

Ähnliche Präsentationen


Google-Anzeigen