Aufgabe 1 Modellierung (11 Punkte)

Ähnliche Dokumente
Mehrsortige Strukturen

Grundbegriffe der Informatik

Abschnitt 3: Mathematische Grundlagen

1 Prädikatenlogik. 1.1 Signaturen und Strukturen

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung

Grundlagen der Logik

Die Prädikatenlogik erster Stufe: Syntax und Semantik

Seminar Mathematische Logik L-Strukturen und Syntax der Prädikatenlogik

4.1 Motivation. Theorie der Informatik. Theorie der Informatik. 4.1 Motivation. 4.2 Syntax der Prädikatenlogik. 4.3 Semantik der Prädikatenlogik

Syntax der Prädikatenlogik: Variablen, Terme. Formeln. Freie und gebundene Variablen, Aussagen. Aufgabe

Mathematik I für Studierende der Informatik und Wirtschaftsinformatik (Diskrete Mathematik) im Wintersemester 2017/18

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation

Einführung in die mathematische Logik

Abschnitt 3: Mathematische Grundlagen

Abschnitt 3: Mathematische Grundlagen

Formale Methoden 2. Gaetano Geck Lehrstuhl I Logik in der Informatik WS 2015/2016

Anwendungen der Logik, SS 2008, Martin Goldstern

Theoretische Informatik II

Mathematik I für Studierende der Informatik und Wirtschaftsinformatik (Diskrete Mathematik) im Wintersemester 2015/16

f(1, 1) = 1, f(x, y) = 0 sonst üblicherweise Konjunktion, manchmal auch

3. Initiale Algebren. Beispiel: Nat0 sorts Nat opers z: Nat s: Nat Nat end

Übersichtsblatt Hertrampf/Bahrdt. 1 Mathematische Aussagen. Theoretische Informatik I WS2018/19

Vor(schau)kurs für Studienanfänger Mathematik: Aussagen und Mengen

Mathematik für Informatiker 1 Wintersemester 2013/14 Übungsblatt 4

Logik für Informatiker

TU7 Aussagenlogik II und Prädikatenlogik

Klausur: Modellierung Prof. Dr. U. Kastens, Universität Paderborn Wintersemester 2000/ , 09:00 11:00 Uhr

SS Juli Übungen zur Vorlesung Logik Blatt 11

Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen

Wiederholung: Modellierung in Prädikatenlogik

Algebraische Spezifikation. André Kießling

Informatik A WS 2007/08. Nachklausur

Grundlagen der Programmierung. Kapitel 8: Information und Repräsentation. Überblick über dieses Kapitel. Repräsentation versus Information.

Logik I. Symbole, Terme, Formeln

Universelle Algebra. Zur Erinnerung: Definition von Gruppe, Ring (mit 1), R-Vektorraum.

3 Terme und Algebren 3.1 Terme

(Algebraische) Strukturen Beispiele (Träger-)Mengen (Individuenbereiche) mit Relationen (Eigenschaften, Beziehungen) und Funktionen (Operationen) auf

Logik für Informatiker

- Theorie der uninterpretierten

8 Der Kompaktheitssatz und der Satz von Löwenheim und Skolem

Allgemeine Algebren. Bernhard Ganter. Institut für Algebra TU Dresden D Dresden

Einführung in die mathematische Logik

Klausur zur Vorlesung: Mathematische Logik SS 2011

Syntax vs. Semantik. Behandlung von Variablen. Grammatik vs. Induktive Definition. M: T ω...

Operationen. auch durch. ausgedrückt. ist die Trägermenge der Operation. Mathematik I für Informatiker Algebren p.1/21

3. Relationen Erläuterungen und Schreibweisen

Mathematik II für Studierende der Informatik (Analysis und lineare Algebra) im Sommersemester 2018

Einführung in die mathematische Logik

Wiederholung Signatur, Terme

Alphabet der Prädikatenlogik

Formale Systeme, WS 2014/2015 Übungsblatt 5

4 Terme und Σ-Algebren

Logik für Informatiker

Mengen. (Nicht-) Elemente einer Menge { 3, 4 } { 1, { 2 }, { 3, 4 }, { 5 } } 3 { 1, { 2 }, { 3, 4 }, { 5 } }

MafI 1 Repetitorium Übungen

Logik und Künstliche Intelligenz

Diskrete Strukturen. Code: Allgemeine Hinweise. Wintersemester 2009/10 Mittelklausur 19. Dezember 2009

Einführung in die Programmierung

Musterlösung 11.Übung Mathematische Logik

Algebraische Spezifikation. Teil 2. André Kießling

Ludwig-Maximilians-Universität München SoSe 2009 Institut für Informatik PD Dr. Martin Lange Dipl.-Inf. Markus Latte 25. Juni 2009

Logik erster Stufe FO

Mathematik-Vorkurs für Informatiker Formale Sprachen 1

Klausur Formale Systeme Fakultät für Informatik WS 2015/2016

Einführung in die Theoretische Informatik

3 Terme und Algebren 3.1 Terme

3 Terme und Algebren 3.1 Terme

Formale Systeme, WS 2013/2014. Lösungen zu Übungsblatt 5

THEORETISCHE INFORMATIK UND LOGIK

Einführung in die mathematische Logik

Finden Sie eine Relation R und eine Menge A so dass

Einführung in die Theoretische Informatik

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier

Mengen. Eigenschaften. Spezielle Mengen (1) Prominente Mengen. ! Mengenzugehörigkeit

2.3 Spezifikation von Abstrakten Datentypen

SS Juni Übungen zur Vorlesung Logik Blatt 8

Algorithmen & Programmierung. Logik

Universität Heidelberg 12. April 2018 Institut für Informatik Klaus Ambos-Spies Nadine Losert. 2. Klausur zur Vorlesung Mathematische Logik

Vorkurs Mathematik B

Universität Heidelberg 06. April 2017 Institut für Informatik Prof. Dr. Klaus Ambos-Spies Dipl.-Math. Martin Monath

Lösungshinweise/-vorschläge zum Übungsblatt 2: Grundlagen der Programmierung (WS 2018/19)

Formale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik

Beachte: Mit n = 0 sind auch Konstanten Terme.

Logische und funktionale Programmierung

Vorlesung Diskrete Strukturen Die natürlichen Zahlen

Mathematische Strukturen

Klausur Formale Systeme Fakultät für Informatik SS 2017

Informationsverarbeitung auf Bitebene

Mathematik-Vorkurs für Informatiker (Wintersemester 2012/13) Übungsblatt 8 (Relationen und Funktionen)

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

Klausur Datenbanken Wintersemester 2009/2010 Prof. Dr. Wolfgang May 2. Februar 2010, Uhr Bearbeitungszeit: 90 Minuten

Grundbegriffe der Informatik Kapitel 3: Mengen, Alphabete, Abbildungen

13 Auswahlaxiom und Zornsches Lemma

Semantik von Formeln und Sequenzen

Einführung in die Theoretische Informatik

Prädikatenlogiken. Mathematische Logik. Vorlesung 6. Alexander Bors. 30. März & 6. April A. Bors Logik

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Grundlagen der theoretischen Informatik

Transkript:

Technische Universität München WiSe 2014/15 Fakultät für Informatik Lösungsblatt 2 Prof. Dr. A. Pretschner Ausgabe: 14. Oktober 2014 F. Kelbert, Dr. A. Malkis Besprechung: 21. Oktober 2014 Abgabe: 21. Oktober 2014, 13:00 Uhr Übungen zu den Grundlagen der Programm- und Systementwicklung Bitte geben Sie Ihre Lösung vor der Übung in Papierform ab. Notieren Sie auf Ihrer Lösung Ihren Namen und Ihre Matrikelnummer und lassen Sie einen ca. 4 5 cm breiten Rand. You can hand in your solutions in English, if you wish. In any case, the handing in should be written in one single language. Aufgabe 1 Modellierung (11 Punkte) (a) (2 Punkte) Erklären Sie die Begriffe Sorte, Konstante (bei Signaturen) und Signatur sowie deren Zusammenhänge. (b) (7 Punkte) Modellieren Sie das unten beschriebene Szenario. Geben Sie hierzu Sorten, Funktionsbezeichnungen und Signaturen an. (c) (2 Punkte) Erklären Sie an Hand des unten stehenden Szenarios die Begriffe Implementierungssicht (Glass Box View) und Zugriffssicht (Black Box View). Szenario: Einer der bekanntesten Online-Marktplätze der Welt ist ebay. Dort finden täglich im Minuten-Takt verschiedene Transaktionen statt. Eine Klasse dieser Transaktionen besteht aus Auktionen (auch Versteigerungen genannt), welche zur Preisermittlung eingesetzt werden. Beispielsweise werden die von ebay-verkäufern angebotenen Artikel in Auktionen ersteigert. Dabei werden von potentiellen Käufern Gebote abgegeben. Die Auktionsmechanismen bestimmen welches der abgegebenen Gebote den Zuschlag erhält und definieren die Zahlungsströme zwischen den beteiligten Parteien. Zur Identifikation bei einer Auktion benötigt jeder ebay-kunde (Käufer oder Verkäufer) einen eindeutigen Benutzernamen sowie das zugehörige Passwort. Lösung der Aufgabe 1 (a) Eine Sorte ist eine Bezeichnung für eine Menge, die entweder Grundsorte wie etwa Int oder Funktionssorte wie etwa Int, Int Int sein darf. Eine Konstante ist eine Bezeichnung für eine (null-, eins-, oder mehrstellige) Funktion, zusammen mit ihrer Sorte, wie etwa epq : Pq oder enq : Pq, Item Pq. Eine Signatur Seite 1 von 9

ist ein Tripel aus einer Menge von Sorten, einer Menge von Konstanten und einer Abbildung, die den Konstanten ihre Sorten zuordnet. In dieser Vorlesung wird die dritte Komponente zur Vereinfachung immer versteckt, so dass wir Signaturen als Paare aufschreiben und die Sortenfunktion vom Kontext bestimmen lassen. (b) Wir beschreiben hier die Black Box View auf das Portal. Sorten: EbayPortal, Nutzername, Passwort, Kunde, Ware, Auktion, Betrag,.... Funktionsbezeichnungen mit Sorten: anmelden: EbayPortal, Nutzername, Portal Kunde auktionnachwareanbieten: EbayPortal, Kunde, Ware Auktion portalnachwareanbieten: EbayPortal, Kunde, Ware EbayPortal portalnachgebotabgeben: EbayPortal, Kunde, Auktion, Betrag EbayPortal kundederauktiongewann: EbayPortal, Auktion Kunde alsbezahltmarkieren: EbayPortal, Kunde, Auktion EbayPortal... Signatur: EBAY = ({EbayPortal, Nutzername, Passwort, Kunde, Ware, Auktion, Betrag,... }, {anmelden, auktionnachwareanbieten, portalnachwareanbieten, portalnachgebotabgeben, kundederauktiongewann, alsbezahltmarkieren,... }). (c) EBAY beschreibt einen Teil der Zugriffssicht. Zusätzlich würde man durch Formeln beschreiben, was die o.g. Funktionen tun. Der innere Aufbau des Portals ist in dieser Sicht nicht sichtbar. Für eine Implementierungssicht haben wir mehrere Abstraktionsstufen zur Auswahl. Man kann z.b. eine Algebra für EBAY nehmen oder eine weitere Signatur, in der die Menge EbayPortal in Bestandteile zerlegt ist und die Funktionsnamen enthält, die auf diesen Teilen operieren. Aufgabe 2 Signaturen und Rechenstrukturen (4 Punkte) Diese Aufgabe klärt nochmals den Zusammenhang bzw. den Unterschied zwischen einer Signatur Σ und einer darauf spezifizierten Σ Algebra. (a) Geben Sie dazu zuerst die allgemeine Definition einer Σ Algebra an. (b) Welche zusätzlichen Informationen liefert eine Σ Algebra im Vergleich zu einer Signatur? Seite 2 von 9

(c) Welche Art von Information bzw. welche Sicht wird somit durch eine Signatur dargestellt, welche durch eine Σ Algebra? (d) Geben Sie eine geeignete Signatur für die natürlichen Zahlen an. Welche Axiome wären über dieser Signatur sinnvoll? Lösung der Aufgabe 2 (a) Gegeben eine Signatur Σ = (S, F ), eine Σ-Algebra ist ein Paar A = ((M A ) M S, (f A ) f F ) von Familien, so dass M A eine Menge ist (M S) und für f F gilt: für nullstellige f ist f A (sort(f)) A, für n-stellige f ist f A (M A 1... M A n M A n+1), falls sort(f) = (M 1,..., M n M n+1 ) ist (n 1). Meistens wird unter einer Algebra stillschweigend eine totale Algebra verstanden, d.h. eine Algebra, deren alle Funktionen total sind. (b) Eine Σ-Algebra enthält die tatsächlichen Mengen und n-stelligen Funktionen auf diesen Mengen (n 0), wobei eine Signatur lediglich die Bezeichnungen von diesen Mengen und Funktionen bestimmt. (c) Vergleicht man eine Signatur und eine Algebra dieser Signatur, so beschreibt die Signatur die Zugriffssicht, und die Algebra die Implementierungssicht. Jedoch gibt es bei großen Systemen mehrere Abstraktionsstufen, so dass eine Signatur, für sich alleine genommen, so viele Details durch Namensgebung und Funktionssorten wiederspiegeln kann, dass sie somit eine Implementierung beschreibt. Analog kann eine Algebra, für sich alleine genommen, zu abstrakte Mengen verwenden und somit die Zugriffssicht beschreiben. (d) Als Signatur wählen wir ({Nat}, {0 : Nat, succ : Nat Nat}). Sinnvoll sind etwa die übrigen Peano-Axiome: n Nat: succ(n) 0 m, n Nat: succ(n) = succ(m) m = n Für jede Formel ϕ und jede freie Variable x : Nat von ϕ: (freie Variablen von ϕ außer x) ((ϕ(0) ( n Nat: ϕ(n) ϕ(succ(n)))) n Nat: ϕ(n)). Seite 3 von 9

Aufgabe 3 Anforderungsspezifikation mit formalen Mitteln (6 Punkte) Eine Anforderungsspezifikation beschreibt, was ein zu entwickelndes System leisten muss. Im Softwareentwicklungsprozess wird die Anforderungsspezifikation in der Regel nach der informellen Problembeschreibung und vor der Implementierung erstellt. Problembeschreibung Gegeben ist ein Plan mit direkten Flugverbindungen zwischen verschiedenen Städten Europas. Für jede Verbindung ist der entsprechende Flugpreis angegeben. Wer von der Stadt S zur Stadt T fliegen möchte, wüsste gern: (a) Gibt es einen Flugweg (gegebenenfalls mit Umsteigen) von S nach T? (b) Wenn es mehrere Flugwege gibt, welcher ist der billigste? Aufgabe Geben Sie eine Anforderungsspezifikation dieses Problems an. Modellieren Sie dazu das Problem möglichst formal. Geben Sie dazu Folgendes an: eine Signatur, Formeln über dieser Signatur, die die obige Forderungen beschreiben. Lösung der Aufgabe 3 Signatur Σ = ({Bool, Nat, Stadt, Flugplan, Verbindung, Verbindungsmenge}, {direkteverbindungmoeglich: Flugplan,Stadt,Stadt Bool, direktverbindskosten : Flugplan, Stadt, Stadt Nat, fluege : Flugplan,Stadt,Stadt Verbindungsmenge, billigsteverbindung : Flugplan,Stadt,Stadt Verbindung, verbindungmöglich : Flugplan, Stadt, Stadt Bool, elemssv : Stadt,Stadt,Verbindung Bool, elemvvm : Verbindung, Verbindungsmenge Bool, verbindungskosten : Flugplan, Verbindung Nat, true : Bool, false : Bool, : Bool, Bool Bool, Null : Nat, succ : Nat Nat, : Nat, Nat Bool}). Die Forderungen sind die Konjunktion der folgenden Teilforderungen: Eine übliche Charakterisierung der booleschen Werte Bool, der natürlichen Zahlen Nat und der entsprechenden Konstantenbezeichnungen (false, true,, Null, succ, ). direkteverbindungmöglich(f, s, t) = true verbindungmöglich(f, s, t) = true (elemvvm(billigsteverbindung(f, s, t), fluege(f, s, t))). elemssv, elemvvm, wie üblich spezifiziert (normalerweise unter Einführung von Hilfsprädikaten). Seite 4 von 9

v Verbindung : elemssv(s,t,v) direktverbindungskosten(f, s, t) = verbindungskosten(f, v). ( x, y Verbindungen: x y elemvvm(x, fluege(f, s, t)) elemvvm(y, fluege(f, s, t))) x Verbindungen: elemvvm(x, fluege(f, s, t)) verbindungskosten(f, billigsteverbindung(f, s, t)) verbindungskosten(f, x). Aufgabe 4 Prioritätskeller (39 Punkte) Lege eine beliebige Menge fest. Ein Prioritätskeller über dieser Menge ist, informell gesprochen, ein Behälter für Elemente der Menge, der die folgenden Eigenschaften erfüllt. Man kann die Einträge des Prioritätskellers untereinander vergleichen. Es gibt genau einen leeren Prioritätskeller. Man kann jedem Keller ein Element hinzufügen. Man kann einen größten Eintrag eines nichtleeren Kellers ausgeben, und man kann aus einem nichtleeren Keller einen größten Eintrag löschen. Größere Einträge haben also eine größere Priorität beim Ausgeben bzw. Löschen. Sind mehrere größte Elemente vorhanden, werden die jeweils zuletzt eingefügten Elemente nach dem Kellerprinzip zuerst ausgegeben bzw. gelöscht. Im Folgenden entwerfen wir Rechenstrukturen für Prioritätskeller und üben an diesem Beispiel einige Grundbegriffe ein. (a) (8 Punkte) Geben Sie eine passende Signatur Σ für Prioritätskeller an. (b) (1 Punkt) Geben Sie zwei Terme der Signatur mit ihren Sorten an, und zwar einen Grundterm und einen Term, der kein Grundterm ist. (c) (1 Punkt) Überlegen Sie sich, wie man die Einträge mit Prioritäten genau darstellt, und führen Sie Bezeichnungen für die Einträge mit Prioritäten ein. (d) (16 Punkte) Geben Sie zwei Rechenstrukturen an, in denen jeder Keller eine Sequenz über der Menge der Einträge ist, so dass in der ersten Rechenstruktur die Sequenzen immer geordnet sind, und in der zweiten Struktur die Sequenzen beliebig sein dürfen. (e) Für jede Ihrer Rechenstrukturen: i) (5 Punkte) Geben Sie an, ob die Rechenstruktur termerzeugt, homogen, heterogen, total, partiell ist. ii) (6 Punkte) Beschreiben Sie die Nutzungssicht und die Realisierungssicht auf Ihre Rechenstrukturen. iii) (2 Punkte) Definieren Sie für die Zugriffs- und Implementierungssicht getrennt, wann zwei Prioritätskeller äquivalent sind. Seite 5 von 9

Lösung der Aufgabe 4 (a) Eine Signatur für Prioritätsschlangen ist in Beispiel 2.4 im Skript gegeben. Interessanterweise kann man dieselbe Signatur für Prioritätskeller wie für Prioritätsschlangen benutzen. Um aber die Kellerstruktur zu betonen, haben wir im Folgenden die Namen aus dem Beispiel etwas angepasst: Σ = (S, F ) S = { Bool, Ps, Item } F = { R : Item,Item Bool, eps : Ps, push : Ps, Item Ps, top : Ps Item, pop : Ps Ps } Die Sorte Ps ist dabei die Sorte der Prioritätskeller, Item die Sorte der Einträge, R das Funktionssymbol des Vergleichsoperators, eps das Funktionssymbol des leeren Kellers, push das Funktionssymbol des Hinzufügen-Operators, top das Funktionssymbol für die Ausgabe, und pop das Funktionssymbol des Entfernen- Operators. (b) Ein Grundterm wäre etwa pop(eps). Ein Term, der kein Grundterm ist, wäre etwa push(eps, x), wobei x : Item ein Identifikator (logische Variable) ist. (c) Sei D die Menge der Einträge und sei eine totale Quasiordnung 1 auf D, die wir in Infixnotation schreiben. (d) Es gibt natürlich viele verschiedene Arten einen Prioritätskeller zu realisieren. Eine mögliche Unterscheidung dabei ist, ob die Trägermenge der Sorte Ps aus geordneten oder ungeordneten Sequenzen besteht. Im Folgenden werden wir jeweils ein mögliches Modell für beide Arten angeben (für beide Arten gibt es jedoch mehrere mögliche Modelle). Im Folgenden arbeiten wir mit Sequenzen. Dabei wird mit ε die leere Sequenz bezeichnet und mit s 1 s 2 die Konkatenation der Sequenzen s 1 und s 2. Legen wir außerdem ein Element / (D D ) fest. i) Eine Algebra P für Prioritätsschlangen in dem die Trägermenge geordnet ist, ist in Beispiel 2.6 im Skript angegeben. Eine Algebra für Prioritätskeller ähnelt dieser mit ein paar Unterschieden. Wir definieren zuerst 1 Eine Quasiordnung auf einer Menge X ist eine binäre Relation auf X, die reflexiv auf X und transitiv ist. Ein größtes Element einer Quasiordnung R auf X ist ein x X mit y X : R(y, x). Seite 6 von 9

Trägermengen für die Sorten in S wie folgt: Bool P = B Ps P = {s D x,y D m,n D : s = x m n y n m} { } Item P = D { } Nun können wir den Funktionsbezeichnern aus F Funktionen zuordnen: (m n), wenn m, n D, R P (m, n) = L, wenn m =, O, wenn m n =. eps P = ε falls s = m = push P (s, m) = s m, falls m D (s=ε s,n:(s = s n n m)), push P (s,m) n, falls m D s, n: (s = s n n m). { top P, falls s = ε s =, (s) = n, falls s : s = n s. { pop P, falls s = ε s = (s) = s, falls n: s = n s ii) Eine Algebra Q für Prioritätsschlangen, in der die Trägermenge nicht geordnet ist, ist in Beispiel 2.11 angegeben. Eine Algebra für Prioritätskeller ähnelt dieser mit ein paar Unterschieden. Wir definieren zuerst Trägermengen für die Sorten in S wie folgt: Bool Q = B Ps Q = D { } Item Q = D { } Nun können wir den Funktionssymbolen aus F Funktionen zuordnen: (m n), wenn m, n D, R Q (m, n) = L, wenn m =, O, sonst. eps Q = ε Seite 7 von 9

{ push Q s m, falls s m, (s, m) =, falls s = m =. m, falls s :(s = m s (s =ε m top Q (s ))), top Q (s) = top Q (s ), falls m: (s = m s m top Q (s )),, falls s = ε s =. s, falls m:(s = m s (s =ε m top Q (s ))), pop Q (s) = m pop Q (s ), falls s : (s = m s m top Q (s )),, falls s = ε s =. (e) i) Sowohl P als auch Q sind termerzeugt nicht homogen heterogen total nicht partiell ii) Die Nutzungssicht ist für P und Q gleich, da wir Laufzeitfragen nicht betrachten. Sie ist erstens durch die Signatur und zweitens durch eine Eigenschaft gegeben, die wir gleich einführen werden. Dazu sei Gleichheit ein polymorphes Prädikatensymbol = : α, α Bool mit Standardinterpretation. Ferner sei! x X : ϕ die Aussage es gibt genau ein Element in X, das ϕ erfüllt, also eine Abkürzung für x X : (ϕ y X : (ϕ[y/x] y=x)), wobei y keine freie Variable von ϕ ist. Hier ist eine Eigenschaft, die rechenstrukturunabhängig ist, gültig in beiden Modellen P, Q ist und die Zugriffssicht recht vollständig beschreibt: (! s Ps : pop(s) = s) (! d Item : pop(push(eps, d)) = push(eps, d)) d Item, s Ps : (pop(s) s pop(push(eps, d)) push(eps, d)) (R(top(s), d) top(push(s, d)) = d) ( R(top(s), d) top(push(s, d)) = top(s)) (R(top(s), d) pop(push(s, d)) = s) ( R(top(s), d) pop(push(s, d)) = push(pop(s), d)). (pop(s) ( = s (push(s,d) = s pop(push(eps,top(s))) ( = push(eps,top(s)))) )) t Ps : pop(push(s,d))=push(t,d) pop(push(eps,d)) = push(eps,d) top(push(s, d)) = d Seite 8 von 9

Die Realisierungssicht besteht gerade in der Definition der Trägermengen und der Funktionen darauf. iii) Um Äquivalenz zu definieren, betrachte erneut die Gleichheit als polymorphes Prädikatensymbol = : α, α Bool mit üblicher Interpretation für jede Sorte α. Zugriffssicht. Prioritätskeller s, t Ps sind genau dann äquivalent, wenn in der betrachteten Rechenstruktur die Aussage i N: top ( pop i (s) ) = top ( pop i (t) ) gilt, wobei pop i = pop... pop die i-fache Nacheinanderausführung }{{} i mal von pop ist (i N). Die Äquivalenz zweier Prioritätskeller kann also durch eine rechenstrukturunabhängige Formel (zweiter Stufe; man kann sie auch als abzählbar viele Formeln erster Stufe sehen) definiert werden. Implementierungssicht. (i) Prioritätskeller s, t Ps P sind genau dann in der Algebra mit geordneten Sequenzen äquivalent, wenn s und t als Sequenzen genau gleich sind, d.h. wenn s = t. (ii) Prioritätskeller s, t Ps Q sind genau dann in der Algebra mit beliebigen Sequenzen äquivalent, wenn alle Daten gleicher Priorität in s in derselben Reihenfolge wie in t stehen. Formal, sei p: D D D mit p(d, ε) = ε und p(d, f s) = { f p(d, s), wenn d f f d, p(d, s), sonst. Dann sind s, t Ps Q genau dann im Modell mit beliebigen Sequenzen äquivalent, wenn d D : p(d, s) = p(d, t). Seite 9 von 9