Home
Endbericht
Contents
1. 0 0 00 0004 34 Beispiel f r die Y Konstruktion 2 2 22cm 34 BDD basierende Repr sentation eines Automaten 55 Logik schichten in MOSEL Lt a ni Der 57 berblick ber das Eclipse Project siehe auch 68 Beispiel eines mit GEF realisierten Editors 72 Transformation einer Presburger Formel in einen Automaten 81 itv Prop ama i ss 4er Re Ra ea 93 Pipelines sor DLE do AAA ap a ER ede EA 94 Aufbau eines einfachen While Programms 98 Schalenmodell sto sus dla ae ya a Adee Aurel a 99 So od Ds EN e lc a Tat Baar ers Btn 100 A A A O 101 Die abstrakte Klasse Converter eee 120 Diagramm zu dem endg ltigen Automatenkern 123 Objektdiagramm zur beispielhaften Konstruktion in 3 2 15 124 Situation bei der Potenzmengenkonstruktion 125 Ein OBDD f r die Funktion f v2 A 7 A 210 V 25 A 23 V 27 132 eine einfache Grammatik BNF asar ae BES ee 150 Pres ur sen BEI ee a ar 151 MR A are E ee ee ae are 154 Preis CTE PEG zu 2 dea ra cda de 154 Ih IT EAPRG 2 2 28 22 A he ar nei BE 155 Prex LEL PEG dare rare ak ee a 155 VIII 3 19 3 20 3 21 3 22 3 23 3 24 3 25 3 26 3 27 3 28 3 29 3 30 3 31 3 32 3 33 3 34 3 35 3 36 3 37 3 38 3 39 3 40 3 41 3 42 3 43 3 44 3 45 3 46 3 47 3 48 3 49 3 50 ABBILDUNGSVERZEICHNIS Wii PEG ass A AAA u
2. 201 3 6 4 Kripke Modelle 2046 2 Sb A ewe Sy ee a wd 209 5 6 57 OB DDS 2 20 ur uk ee ER Ense ae E 211 3 6 6 Layouting von Automaten 5 2 mau A SS 212 Handbuch o a A NN 218 3 7 1 Der Workspace Uberblick 218 3 7 2 Starten von neuen Automatenanalysen 219 3 7 3 Umgang mit dem Navigator ss ele aer rel ee 220 Ot De Konsole yt e 2 ek Oe Sel ee ey eS ee 221 Ile ALEDO E 2 A E EIA SA NE A 221 NN 222 3 7 7 Operationen und Analysen a AAA a 222 Oo Automatenedit ri seie da a ea TA aE Ea de 222 8 7 PIUSE et Es ds e ls e A 226 INHALTSVERZEICHNIS V SINN EI Pen sole 24282225 RA AA IS a 231 delo Kripke PST A AA AA AAA HA Ka 233 3 712 While Pool ao bh da 234 4 Epilog 235 4 1 Ergebnisse des ersten Semesters a 236 4 2 Ergebnisse des zweiten Semesters e 0000 ee eee 237 Ag Ausblick in A A he ge A ANA Ss 238 AA xSchlusswort 2 ate aoa tla 8 ee ae Pe a A a eA A 239 VI INHALTSVERZEICHNIS Abbildungsverzeichnis ak 22 2 3 2 4 2 9 2 6 2 7 2 8 2 9 2 10 2 11 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3 10 3 11 3 12 3 13 3 14 3 15 3 16 3 17 3 18 Automat A f r Schnitt ESOS ee ey a 12 Automat B f r Sehnittos 2 a 0 20 O ne a 12 Ergebnis Automat f r Schnitt a o ie 2 20 ee 28 ra Be Ae 13 Ursprungsautomat f r Degeneralisierung ooo a o 15 Ergebnis der Degeneralisierung 2 2 22 Cm none 16 Funktionsweise der Y Konstruktion
3. void createTransition PaintableState from PaintableState to Action getNewStateActiond z PaintableKripkeState PaintableKripkeModel AssignmentAlphabet alphabet gt a KripkeStateLabel PaintableKripkeModel AssignmentAlphabet alphabet PaintableKripkeStateo Assignment assignment AssignmentAlphabet getAlphabet void mouseDragged MouseEvent e TY Point pointOnBorder double angle y PaintableAutomaton PaintableState ateo Locatable StateLabel Abbildung 3 45 Das Klassendiagramm des PaintableKripleModel Packages nun Objekte des Typs PaintableKripkeState erzeugt Noch einfacher war die Anpas sung der f r die Transitions Erzeugung verantwortlichen Methode createTransition Die neu erzeugte Transition wird einfach ohne ein Label ausgeliefert da Transitionen in Kripkemodellen blicherweise nicht beschriftet sind 3 6 4 1 2 PaintableKripkeModel Die neue Klasse zur Aufnahme eines darstellbaren Kripkemodells unterscheidet sich von der Basisklasse PaintableAutomaton nur dadurch dass nun ein AssignmentAlphabet verwendet wird 3 6 4 1 3 PaintableKripkeState Die Klasse f r Kripkezust nde ist die am meisten modifizierte Klasse bei den Kripkemodellen Neue Attribute f r die Verwaltung von H he und Breite welche nun durch den Benutzer ver nderbar sind kamen hinzu Dies wird auch durch das Interface Resizable kenntlich gemacht welches beim Persistieren von Lay
4. 40 Moshe Y Vardi Alternating automata Unifying truth and validity checking for temporal logics In CADE pages 191 206 1997 41 5 Vollst ndiger Verband http de wikipedia org wiki Verband_ 28Mathematik 29 42 Wikipedia http de wikipedia org wiki Omega Automat 43 Wikipedia http de wikipedia org wiki Julius Richard B fcchi 44 Wikipedia http de wikipedia org wiki B fcchi Automat 45 Wikipedia http www informatik hu berlin de kschmidt Modelchecking Node25 Html 46 Pierre Wolper and Bernard Boigelot On the construction of automata from line ar arithmetic constraints In Susanne Graf and Michael I Schwartzbach editors TACAS volume 1785 of Lecture Notes in Computer Science pages 1 19 Springer 2000
5. 3 7 1 1 Men Wie in jeder g ngigen Computeranwendung organisiert das Men alle Funktionen dieses Programms Zum Beispiel lassen sich im File Menu neue Objekte erzeugen ausgew hlte Objekte speichern oder laden sowie das Programm beenden 3 7 1 2 Die Arbeitsfl che Alle neuen Analysen oder Automatenkonstruktionen werden in separaten Fenstern auf der Arbeitsfl che abgelegt 3 7 HANDBUCH 219 3 7 1 3 Navigator Der Navigator verwaltet alle erzeugten Automatenanalysen nach ihren zugeh rigen Plug ins So beh lt man alle Fenster auf der Arbeitsfl che im Blick Sie dient au erdem der Auswahl von Automaten auf denen Aktionen ausgef hrt werden sollen 3 7 1 4 Eigenschaften In diesem Bereich werden Zusatzinformationen zur Automatenkonstruktion angezeigt Einige Dialoge k nnen zum Bearbeiten genutzt werden 3 7 1 5 Analyse Der Analysebereich informiert ber alle wichtigen Informationen die w hrend einer Ana lyse oder der Bearbeitung auftreten Einen festen Bestandteil des Analysebereiches stellt die Konsole dar In ihr werden Sonderinformationen ausgegeben wie z B geladene Plug ins oder Fehlermeldungen Weitere Analyseinhalte werden sp ter im Kapitel Plugins des Handbuchs beschrieben 3 7 2 Starten von neuen Automatenanalysen File Action Analysis New gt Finite automaton via visual editing gt CharacterSymbol Alphabet Load Kripke Model Save Buchi automaton from LTL Exit Buchi automaton fro
6. 2 1 2 1 4 Abschlusseigenschaften Die Klasse der erkennbaren Baumsprachen ist unter Vereinigung Komplement und Schnitt abgeschlossen 2 1 2 1 4 1 Vereinigung F r die Konstruktion der Vereinigung w hlen wir den Pro duktautomaten da dieser Determinismus bewahrt Wenn die zwei gegebenen Automaten deterministisch sind ist der Produktautomat auch deterministisch 2 1 AUTOMATENMODELLE 21 Konstruktion Seien A und A vollst ndig Dann sei der FTA A Q F Qs A definiert durch Q Q X Q2 Qr Q X Q2 UQi X Qr und A A x Az wobei AixAs f a 41 gt Gas m gt G9 F a1 5 dn gt q E Ar Fam gt 9 Ast L A und L A U L A2 sind gleich Wichtig ist dass A und Asa vollst ndig sind 2 1 2 1 4 2 Komplement Sei L eine erkennbare Baumsprache und sei A Q F Qf A ein vollst ndiger DFTA so dass L A L Nun bilden wir das Komple ment der akzeptierenden Zust nde um L zu erkennen Also sei AC Q F QF A mit E Q 0Q y so dass der DFTA A das Komplement der Menge L in T F erkennt M chte man das Komplement f r einen NFTA bilden muss man ihn zuerst in einen DFTA umwandeln und dann das Komplement der akzeptierenden Zust nde bilden 2 1 2 1 4 3 Schnitt Geschlossenheit unter Schnitt folgt aus der Geschlossenheit unter Vereinigung und Komplement denn Li N Ly L U La 2 1 2 1 5 Entscheidungsprobleme Im Folgenden sind drei wichtige Entscheidungs probleme mit ihrer Komplexit t kurz au
7. 3 5 Der Workspace Stand Juli 2006 Nachdem im ersten Semester die Hauptarbeit darin bestand ein grundlegendes Frame work und ein flexibles Addon Konzept zu erstellen so stand dieses Konzept im zweiten Semester auf dem Pr fstand und wurde mit diversen neuen Analyseverfahren getestet Weiterhin musste das Driver Konzept ersetzt werden welches am Ende des ersten Semes ters noch nicht vollst ndig ausgereift war Das neue Konzept macht den Workspace noch flexibler so dass der Workspace mit einer Vielzahl neuer Features abgerundet werden konnte 3 5 1 Planungsphase Vor und w hrend des zweiten Semesters fielen neue Anforderungen an die im Weiteren kurz angesprochen werden Inwieweit diese Anforderungen umgesetzt werden konnten wird in den n chsten Abschnitten ebenfalls behandelt In der Interaktion zwischen Anwendern den Automaten und den Transformationsverfah ren sollte der Workspace folgende neue Features unterst tzen e Alle Methoden die von der Automatenbibliothek zur Verf gung gestellt werden sollten per Reflection in das Workspace Aktionenmen eingebaut werden Um bes sere Lesbarkeit zu erreichen k nnte man bersetzungen der Methodennamen in einer Textdatei vorhalten Fehlt eine bersetzung zeigt man einfach den schlichten Methodennamen an So ist zumindest gew hrleistet dass neue Operationen sofort unterst tzt werden e Methoden mit dem Pr fix render sollten so benutzt werden wie sie gemeint sind
8. 4 dh Rd E q 01 q und 6 GV OU d2 Ep e Akzeptanzmenge F Fg Us FpU E Q QU da cl mit Fy us tela Q 02 E dA dU b2 E q V G1U b2 E q 54 KAPITEL 2 SEMINARPHASE Wichtig Ist die Akzeptanzmenge leer so akzeptiert der Automat alle m glichen un endlichen W rter Bei der bergangsrelation ist zu beachten da A den Regeln 1 4 gen gen muss d h enth lt p keine atomaren Aussagen ist a was quivalent dazu ist da a T ist Der resultierende Automat ist ein generalisierter B chiautomat Zur Umwandlung dieses Automaten in einen normalen B chiautomaten siehe Abschnitt 2 1 1 3 5 2 4 EXISTIERENDE L SUNGEN 59 Abbildung 2 8 BDD basierende Repr sentation eines Automaten 2 4 Existierende L sungen 2 4 1 Mona Mosel Dieser Vortrag diente dem Zweck zwei bereits existierende Werkzeuge zur Automatenkon struktion und Analyse vorzustellen Au erdem sollte aufgezeigt werden wie diese realisiert wurden Bei den beiden Projekten handelt es sich um MONA und MOSEL 2 4 1 1 MONA MONA ist ein Programm dass auf der Kommandozeile arbeitet Es nimmt als Ein gabe Programme in der MONA eigenen Syntax die der WS1S Weak monadic Second order theory of 1 Successor Logik entspricht entgegen Nach dem Einlesen eines MONA Programms wird es in einen DFA trans
9. 2 2 1 3 Multi Automaten MA Die endliche effiziente Repr sentation unendlicher Konfigurationsmengen wird hier durch sog Multi Automaten realisiert Sei P P T A ein Pushdown System mit P p p Ein P Multi Automat P MA ist ein Tupel A T Q I F wobei Q eine endliche Menge von Zust nden ist C Q xT x Q eine Menge von Transitionen ist J s s C Q die initialen Zust nde von A definiert und F C Q die Menge der akzeptierenden Zust nde ist Auch hier ist Nichtdeterminismus erlaubt Die Transitionsrelation C QxT x ist die kleinste Relation mit e wenn 9 7 9 dann q gt 9 e q q f r ale q E Q e q gt q und q 54 dann q Z q F r w y Yp T hei t s 2 q B q w Lauf von A A akzeptiert pt w genau dann wenn s gt q f r ein q F Es sei Conf A die Menge der von A akzeptierten Konfigurationen 2 2 1 4 Vorg nger Berechnung f r Pushdown Systeme Seien ein PDS P P T A und eine regul re Menge C C P x I von Konfigurationen gegeben Weil C regul r ist gibt es einen P MA A T Q 9 1 F mit Conf A C A enthalte o B d A keine Transitionen nach Der nicht naive Algorithmus zur Be rechnung von pre C konstruiert wie der naive Algorithmus eine Folge Y Y gt p von 2 2 ALLGEMEINE ANALYSE 33 Konfigurationsmengen Die durch den naiven Algorithmus erzeugten Zwischenergebnis se seien durch die Folge X X gt 0 bezeichnet Xo C Dann
10. 3 Kleenescher Abschluss Sei Z eine Sprache so ist der Kleenesche Abschluss von L geschrieben als Lx die null oder mehrfache Konkatenation von L Behandelt wird dies in der Ableitung D x e Die Operationen und sind Abk rzungen r ist rrx und r ist e r 3 3 PARSER 159 R gt AB Bo ee e A gt BC C gt A T gt OD e D gt E a a le Nichtterminale ABC DORT Terminale u jedes beliebige Unicodezeichen Startsymbol R Abbildung 3 20 Grammatik f r regul re Ausdr cke 3 3 4 1 1 1 Die Bindungspriorit t der Operationen Am st rksten bindet der Kleenesche Abschluss schw cher ist die Bindung der Konkatenation und am schw chsten bindet die Disjunktion In der Grammatik spiegelt sich das wie folgt wider Wird ein regul rer Ausdruck eingelesen wird zun chst beginnend vom Startsymbol R nach A dann T und O abgeleitet In O wird berpr ft ob die folgende Operation auf einen Klammerausdruck oder ein einzelnes Symbol angewandt wird Dann wird aus O nach T zur ckgegangen und nach D abgeleitet Hier wird festgestellt ob ein Kleenescher Abschluss vorliegt Zur ckgesprungen wird dann von D nach T und von T nach A Ab geleitet wird nun nach C Hier entscheidet sich ob nun ein weiterer A Ausdruck angef gt wird oder nicht Es wird also auf das Vorliegen einer Konkatenation gepr ft R cksprung erfolgt hiernach von C nach A und von A nach R Dort wird dann nach B abgeleitet In B
11. Eingabe ab Variablenzuweisungen haben blicherweise die Form x a Im Folgenden wird ihnen noch ein Label verliehen um besser auf sie referenzieren und mit ihnen rechnen zu k nnen x a Das Label l ist willk rlich wird aber blicherweise von Anfang bis zum Ende des Programms fortlaufend vergeben 2 2 ALLGEMEINE ANALYSE 39 Bei der Reaching Definitions Analysis ist man an den so genannten entry und exit Mengen eines Programmblocks interessiert Die entry bzw exit Menge soll die Label aller Zuweisungen enthalten die diesen Pro grammblock erreichen k nnen entry und exit Menge eines Programmblocks unterschei den sich darin dass entry die Label der Zuweisungen enth lt welche den Programmpunkt vor dem Betreten erreichen k nnen und exit die Label der Zuweisungen welche den Pro grammpunkt beim Verlassen erreichen k nnen Bisher wurde auf den Begriff der Erreichbarkeit noch nicht genau eingegangen Formal lautet die Definition Eine Zuweisung der Form x a kann einen bestimmten Programmpunkt I erreichen typischerweise den entry bzw exit eines elementaren Programm blocks wenn es einen Ablauf des Programms gibt in dem an diesem Pro grammpunkt l die letzte Zuweisung von x am Programmpunkt k stattgefunden hat Man notiert dann x k in der entry bzw exit Menge f r Programmpunkt L Bei der Reaching Definitions Analysis gibt es f r jeden Programmpunkt l eine entry und exit Menge RDeniry l und RDexil l
12. Pr prozessoren als allgemeines Konzept eingef hrt wurden Unsere While Sprache arbeitet mit ganzzahligen Variablen wobei f r jede Variable x der individuelle Wertebereich in Form des kleinsten m glichen Wertes und des gr ten m glichen Wertes angegeben werden muss Jede Variable kann immer auch einen der Wer te underflow overflow und uninit annehmen Das f r ein Whileprogramm generierte Kripkemodell macht Aussagen ber m gliche Zustands berg nge w hrend der Program mausf hrung Um die Zustandskomponenten d h die Variablen einzeln beschreiben zu k nnen enth lt das Kripkemodell atomare Propositionen des Typs variable wert Dies ist ein sehr verst ndliches Format und der Benutzer kann solche Propositionen in seinen LTL Formeln direkt verwenden Das Kripkemodell enth lt nur die Propositionen in seinem Alphabet die es wirklich f r seine Modellierungszwecke ben tigt Die Proposition x 3 existiert also nur dann wenn es einen Zustand gibt in dem x 3 gilt F r jede Variable var mit Wertebereich Lvar lt Uvar s mtliche Propositionen aus var wert Lyar lt wert lt Uyar dem Al 90 KAPITEL 3 GRUPPENERGEBNISSE phabet hinzuzufiigen kann betr chtlichen Overhead verursachen da beispielsweise Va riablen vorsichtshalber wie 32 Bit Integer deklariert sein k nnten obwohl sie tats chlich nur 152 verschiedene Werte annehmen Andererseits kann der modelcheckende Benutzer nicht unbedingt berschauen welche Wert
13. Reaching Definitions Die entry und exit Mengen stehen in Beziehung zueinander was entscheidend f r ihre automatische Berechnung ist 2 2 2 2 Gleichungsbasierter Ansatz Die Beziehungen der entry und exit Mengen werden durch Gleichungen dargestellt Die Gleichungen werden mit Hilfe folgender drei Regeln f r jeden Programmpunkt I aufgestellt 1 RDentry 1 RDaull U U RDesit im wenn l lm die Label der Vorg nger Knoten im Flussgraphen von Programmpunkt sind 2 Falls l keine Vorg nger hat also der erste Programmpunkt ist dann ist RDentry l x x ist eine Variable im Programm 3 Falls l eine Zuweisung der Form x al ist dann ist RDaull RDentry VAlz FF Label U x 1 4 Sonst ist RDezie l RDentry l 40 KAPITEL 2 SEMINARPHASE Auf diese Weise erh lt man 2n Gleichungen wenn das Programm aus n Programmpunkten besteht Auf der linken Seite stehen jeweils n entry und exit Mengen Diese k nnen als 2n Tupel RD geschrieben werden Der gleichungsbasierte Ansatz macht nun folgendes es wird eine Funktion F aufgestellt welche durch iterative Anwendung auf sich selbst die RD Mengen berechnet F ist wie folgt definiert F P Var x Lab P Var x Lab Jede RD Menge ist ein Element von Var x Lab Die Funktion F kann also auf das 2n Tupel RD angewendet werden Bei der Definition von F ber cksichtigt man das obige Gleichungssystem Von F wird gefordert dass RD F RD gilt d h
14. Schon mit wenigen Analyseoperationen insbesondere dem Schnitt und dem Leerheitstest lassen sich Analysen auf Strukturen durchf hren die beraus interessant und n tzlich sind nicht nur im theoretischen Sinne sondern auch f r praktische Anwendungen Eingaben eines B chiautomaten sind unendliche W rter die man als zeitliche Abl ufe interpretieren kann die einen Anfang aber kein bekanntes Ende haben So kann man beispielsweise einen Programmablauf modellieren der nach dem Start unbeschr nkt wei terl uft Der Programmlauf besteht aus einer Folge von Zust nden dargestellt als Folge von Zeichen aus dem Alphabet des Automaten Kripkemodelle sind Graphen deren Pfade solche Programmabl ufe repr sentieren Sie k nnen unmittelbar in B chiautomaten berf hrt werden Da sich alle Aussagen ber B chiautomaten auf unendliche W rter beziehen sind die Methoden der Analyse dieser Automaten nur dazu geeignet Aussagen ber lineare Programmabl ufe in Kripkemodellen zu machen Verzweigungen m ssen unber cksichtigt bleiben Die Konsequenz ist dass mittels linearer Temporallogik Kripkemodelle auf gewisse Ei genschaften berpr ft werden k nnen Es ist also denkbar dass ein Kripkemodell ein komplexeres System modelliert und dieses mit einer temporallogischen Formel auf die Erf llung gewisser Eigenschaften gepr ft werden kann um das durch das Kripkemodell modellierte System zu verifizieren Die AAA Automatenbibliothek bie
15. s ka getKripke true 3 1 5 1 7 nderung des Verhaltens der Modellbildung Es ist m glich die Art und Weise wie ein Modell gebildet wird zu beeinflussen Jedoch sei darauf hingewiesen dass diese M glichkeiten experimenteller Natur sind und deren Ergebnisse vorallem in Kombination mit anderen Einstellungen von Endlosschleifen bis zu extrem ungenauen Modellen reichen k nnen 3 1 5 1 7 1 Context java static ContextMangle contextMangle ContextMangle NONE Beeinflusst das Verhalten wie die Umgebungsinformationen eines Knotens der zu konstru 3 1 TRANSFORMATION 103 ierenden Kripke Struktur zusammengefasst werden In diesem Falle sind dies die Infor mationen ber alle laufenden Kontexte Die Standardeinstellung ContextMangle NONE f hrt dazu dass keine Informationen ber laufende Kontexte gespeichert wer den ContextMangle NumberOf speichert nur die Anzahl der laufenden Kontexte ContextMangle FULL speichert die internen Kennungen der Kontexte Gerade letztere Einstellung produziert einen Baum und l sst die Modellbildung nur terminieren wenn auch alle Prozesse terminieren k nnen Die Kripke Struktur wird sehr gross und es wird eine exorbitante Menge an Arbeitsspeicher ben tigt static ProcessMangle processMangle ProcessMangle FULL Analog zu ContextMangle aber bezogen auf Prozessinformationen Weitere Einstel lungsm glichkeiten sind NumberOf und NONE Letztere Einstellungsm glichkeiten verrin gern die Ge
16. 142 KAPITEL 3 GRUPPENERGEBNISSE baB addTransition b2 c b3 baB addTransition b3 abc b1 Vereinigung von Automat A und B x BuchiAutomaton a baA union baB Schnitt von Automat A und B gt BuchiAutomaton a baA intersect baB Sucht gemeinsames Wort von Automat A und B x Pair lt List lt Symbol gt List lt Symbol gt gt commonWord baA findCommonWord baB Testet ob Automat A leer ist x boolean result baA isEmpty 3 2 5 7 Degeneralisierung degeneralize Ein generalisierter B chiautomat GBA hat nicht nur eine Menge akzeptierender Zust nde sondern mehrere Akzeptanzmengen die nicht paarweise disjunkt sein m ssen Er akzeptiert ein Wort genau dann wenn beim Lesen des Worts mindestens ein Zustand aus jeder Akzeptanzmenge unendlich oft eingenommen wird Nach Aufruf der Methode renderGeneralized stellt ein BuchiAutomaton Objekt einen generalisierten B chiautomaten dar Falls vorher akzeptierende Zust nde vorhanden wa ren bilden diese nun die erste Akzeptanzmenge des GBA mit Index 0 Weitere Ak zeptanzmengen k nnen durch Aufruf der Methode addAcceptanceSet Set lt State gt hin zugef gt werden Diese Methode liefert den Index der hinzugef gten Akzeptanzmenge zur ck Einzelne Zust nde k nnen per addStateToAcceptanceSet State int zu ei ner durch ihren Index beschriebenen Akzeptanzmenge hinzugef gt werden Informatio nen zu bestehenden Akzeptanzmengen erh lt man be
17. Das Ziel der einfachen Erweiterbarkeit der Eclipse Plattform wird durch ein Plug in Konzept erreicht Die Eclipse Plattform besteht aus einem kleinen Kern der die Basis f r Erweiterungen darstellt Neue Plugins werden in Java und unter Zuhilfenahme der Plugin Entwicklungsumgebung PDE implementiert Ein zu Swing und AWT vergleichba res Framework wird mit SWT angeboten Den Workspace auf Basis eines Eclipse Plugins zu implementieren verlangt einen Einsatz von Kenntnissen und Einarbeitungszeit die eine Verz gerung der Implementationsphase bedeutet h tte Somit h tten die anderen Projektteile l nger auf eine funktionsf hige GUI warten m ssen Diese Gr nde waren ausreichend um sich gegen die Realisierung unseres Workspaces durch ein Eclipse Plugin zu entscheiden Charakterisierend f r 7A BC ist die Verwendung einer graphischen Programmierschicht in der aus den so genannten SIBs hierarchische Graphen erstellt werden Service Indepen dent Building Blocks SIBs werden durch eine einzelne Java Klasse repr sentiert Das ABC Modell kann durch Plugins mit einer Ausf hrungsschicht angereichert werden die f r die Graphen eine Semantik definieren Gegen ABC haben wir uns entschieden weil es aus unserer Sicht nur sehr m ig dokumentiert war und es sich um ein closed sour ce Produkt handelt was zum Zeitpunkt der Implementation unvorhersagbare Probleme h tte bedeuten k nnen Au erdem passen Automatengraphen und SIBs nicht so ga
18. PaintableContainerPanel AutomatonEditorPanel PaintableAutomaton automaton void setPaintableAutomaton PaintableAutomaton a AdvancedAutomatonPanel AutomatonEditorPanel aEditorPanel F PaintableState PaintableAutomaton automaton Paintable Label label JToolBar toolBar Transition Abstract JScrollPane scrollPane en En JComboBox layouters Label label Paintable ie PaintableState from List lt PaintableTransition gt inTrans PaintableState to List PaintableTransition gt outTrans void setLabel Label label void paint Graphics2D g TextLabel javax swing JPanel SymbolRangesLabel SymbolRangeList symbolRanges SymbolRanges boolean triggeredByEpsilon PropertyPanel Alphabet alphabet Label label RangesTableModel model void edit void setSymbolRanges SymbolRangeList symRgs SymbolRangeList getSymbolRanges setString String string setindex int index setKey Comparable key setLabel Object label Abbildung 3 36 Die wichtigsten Klassen und Methoden des PaintableAutomaton Addons welches auf dem Paintable Framework aufsetzt Das PaintableAutomaton Addon benutzt das oben beschriebende Paintable Framework zur Darstellung von Automaten Im ersten Semester diente es zur Visualisierung von Auto maten des Typs aaa automaton FiniteAutomaton Im zweiten Semester kamen weitere Modelle hinzu Die Erweiterungen und Anpassungen auf diese Modelle werden in den A
19. Zurechtr cken von Zust nden nicht dauerhaft gespeichert so dass nach dem Einladen ei nes gespeicherten Automaten der Standard Layouter des Editors zuschlug und mitunter ein nicht unbedingt ansprechendes Ergebnis lieferte Zur Sicherung eines Layouts reicht es aus die Positionen und Dimensionen der Zust nde zu speichern Das Aussehen der Transitionen ist durch die angrenzenden Zust nde ein deutig bestimmt interface Resizable interface Locatable StateLocationSerializer int getWidthO int getHeightO void setLocation int int void setividthtint Point getLocationd void serialize PaintableAutomaton automaton Document document Element element void setHeight int void movetint int void deserialize PaintableAutomaton automaton Element element State PaintableState lt gt PaintableAutomaton lt AutomatonToPaintableConverter F gt Automaton Abbildung 3 43 berblick ber die Funktionen um die Klasse StateLocationSerializer 3 6 3 7 1 Implementation Um die Zustandspositionen zu sichern wird die Klasse StateLocationSerializer verwendet Diese hat nur zwei ffentliche Me thoden einerseits void serialize PaintableAutomaton Document Element welche die Zustandsinformationen eines PaintableAutomaton unterhalb eines bergebenen XML Elements aus einem XML Document sichert und die Methode void deserialize Paintable
20. amp BOOL ne de MBODY FR Solange BOOL zu wahr ausgewertet wird wird immer wieder MBODY ausgef hrt Skip skip Leere Anweisung Spawn spawn VAR amp y Startet einen neuen Prozess repr sentiert durch die Methode mit dem Namen VAR Atomic atomic 1 MBODY p F hrt MBODY ohne Unterbrechung durch andere Prozesse aus Die einzige Ausnahme ist eine Wait oder Block Anweisung innerhalb von MBODY Call call VAR i a Springt zur ersten Anweisung der Methode VAR Terminiert die Methode wird die Ausf hrung bei der Anweisung nach der Call Anweisung die den Sprung veranlasst hat fortgesetzt Block Wait block until BOOL oder wait until BOOL 3 1 TRANSFORMATION 97 Blockiert die Ausf hrung des Prozesses bis BOOL zu wahr auswertet Dies gilt auch f r die Ausf hrung innerhalb einer atomic Umgebung 3 1 5 1 4 2 Programmbeispiel F r ein einfaches Programmbeispiel siehe Abbildung 3 4 Das Beispiel modelliert den von Dekker erdachten Algorithmus f r wechselseitigen Ausschluss zweier Prozesse Die Idee hinter dem Algorithmus ist dass jeder Prozess sei nen kritischen Bereich mutex mutex 1 mutex mutex 1 durch eine Vorbe dingung absichert Dies geschieht durch entsprechendes Setzen der Variablen turn welche garantiert dass jeder Prozess einmal an die Reihe kommt und a bzw b welche signali sieren dass
21. dies gerade q 2q a b wobei die Matrixmultiplikation ist Befindet sich der Automat im Zustand q w hrend er b liest so geht er in q ber Der Automat ben tigt einen Initialzustand init in dem der Vorzeichen Bitvektor gelesen wird Der Automat befindet sich genau dann in init wenn das bisher gelesene Wort das leere Wort ist also jede Variable mit O belegt ist Die linke Seite ist dann auch 0 Bekommt die Variable x das Vorzeichenbit b 0 so bleibt ihre Belegung gleich 0 Falls b 1 so ist ihre neue Belegung gleich 1 Der Automat geht also beim Lesen des Vorzeichen Bitvektors b in den Zustand q a b ber Der Initialzustand ist akzeptierend genau dann wenn c 0 ist Er hat keine eingehenden Transitionen In jedem Fall ist der Zustand c akzeptierend Nun ist klar wie der Automat ausgehend von init Zustand f r Zustand erzeugt werden kann F r jeden Vektor b 0 1 wird der Nachfolgezustand berechnet welcher hin zugef gt wird falls er noch nicht existiert Falls der Nachfolgezustand neu hinzugef gt wurde wird er zus tzlich in eine Queue aktiver Zust nde eingef gt damit f r ihn sp ter ebenfalls Transitionen berechnet werden Um die Terminierung zu gew hrleisten kann die Tatsache ausgenutzt werden dass Zust nde q mit q gt gt lt lt las nicht konstruiert wer den m ssen weil von ihnen aus der akzeptierende Zustand c nicht mehr erreicht werden kann Ergibt sich nach der Rechenregel ein
22. e Analyseoperationen wie das Testen einer Eingabe auf endlichen Automaten oder das Auffinden einer akzeptierenden Belegung sollten implementiert werden e Der Zustand ausgew hlter Automaten sollte gespeichert werden k nnen Hierbei ist es wichtig dass keine Informationen verloren gehen wie z B die Basiseingabe aus der der Automat erzeugt wurde der Automat selbst oder das Layout Gespeicherte Daten m ssen nat rlich auch wieder eingeladen werden k nnen e F r das Model Checking werden neue Darstellungs Modelle ben tigt die das Erstel len Bearbeiten und Layouten von B chiautomaten Kripkestrukturen und OBDDs erm glichen e Der Workspace sollte M glichkeiten zum Editieren von Automaten bieten so dass diese auch ohne eines der Transformations Module erstellt werden k nnen Darunter f llt z B die Erstellung von Kripkestrukturen f r das Model Checking e Es werden diverse neue Plugins ben tigt die alle neuen Automatenmodelle und Transformationen unterst tzen 3 5 2 Das Workspacekonzept Das Workspacekonzept und seine Hauptkomponenten haben sich im zweiten Semester sehr stark ver ndert und wurden durch wichtige neue Elemente erweitert Die wohl auff lligste Neuerung f llt direkt beim Start des Workspace auf die Dreiteilung des Workspace ist durch eine Vierteilung abgel st worden Unterhalb der Automatenliste befindet sich nun ein neuer Eigenschaftenbereich In diesem Bereich k nnen dynamisch Informationen und
23. einiger Akionen in der Toolbar nicht sinnvoll erschien 3 5 3 2 Analysepanel Das Analysepanel verf gt wie ein TextEntrypanel ebenfalls ber eine geordnete Tab struktur abgeleitet von javaz swing JTabbedPane Diese macht es m glich mehrere verschiedene Analysetabs dynamisch einzubinden Die Konsole ist ein fester Bestandteil des Analysepanels und ist dort als erster Tab eingef gt ber die Methode addTab lassen sich neue Panels einbinden Mit der Methode remove k nnen Tabs entfernt werden 182 KAPITEL 3 GRUPPENERGEBNISSE 3 5 3 3 TextEntryPanel Die Flexibilit t der Klasse TextEntryPanel hat sich bew hrt sie wird nun in vielen Plugins als Eingabem glichkeit genutzt Aus diesem Grund wurde sie im zweiten Semester noch komfortabler gestaltet So erscheint nun bei Dr cken der rechten Maustaste ein Kontextmen mit folgenden Eintr gen Copy Diese Aktion f gt den aktuell markierten Inhalt des TextEntryPanels in die Zwischenablage ein Hierbei wird auf die Methode copy einer JTextArea zur ckgegriffen Paste Analog zum Copy f gt diese Aktion den Inhalt der Zwischenablage an der aktuell markierten Stelle des TextEntryPanels ein unter Verwendung der Methode paste einer JTextArea Load source Mit Hilfe eines FileReader wird der Inhalt des TextEntryPanels durch den Inhalt einer angegebenen Textdatei ersetzt Save source Diese Funktion speichert den aktuellen Inhalt des TextEntryPanels in einer angegebenen
24. key Attribut Von diesem Attribut wird gefordert dass es 1 eine Instanz einer Klasse ist die das Interface java util Comparable implementiert und 2 dass es eindeutig ist Wenn das Schl ssel Attribut beim Hinzuf gen eines Zustands zu einem Automaten nicht gesetzt ist dann weist der Automat dem Zustand automatisch einen eindeutigen Schl ssel vom Typ Integer zu Da es prinzipiell aber erlaubt ist beliebige Objekte als Schl ssel Attribut zu verwenden und die Schl ssel der Zust nde innerhalb eines Automatens nicht zwangsl ufig vom selben Typ sein m ssen ben tigt ein Automaton Objekt einen java util Comparator um diese vergleichen zu k nnen Der Comparator kann explizit im Konstruktor angegeben werden z B Finite Automaton Alphabet alphabet Comparator lt Comparable gt stateKeyComparator ansonsten wird automatisch aaa automaton util DefaultComparator benutzt Im Nor malfall muss sich der Benutzer also nicht um die Vergleichbarkeit von Zustandsschl ssel k mmern die Bibliothek verwaltet die Schl ssel der Zust nde automatisch 3 2 AUTOMATEN 113 Der aaa automaton util DefaultComparator kann also auch Instanzen verschiedener Klassen vergleichen Hierzu benutzt er den Klassennamen der Objekte und berechnet das Ergebnis gem ihrer lexikographischen Ordnung Wenn die Objekte derselben Klasse angeh ren findet der Vergleich ber die compareTo Methode der beiden Objekte statt dies ist immer m glich da Schl sse
25. lt und in jede Java Swing Applikation eingebaut werden kann Auch hier folgt ein berblick ber die wichtigsten Methoden 3 6 2 3 1 public void addPaintable Paintable component int layer F gt der Zeichenfl che ein Paintable Objekt hinzu Der Parameter layer bestimmt dabei auf welcher Ebene das Objekt einzuf gen ist Ebenen mit kleineren Integer Werten liegen dabei unter solchen mit h heren Werten 3 6 2 3 2 public void removePaintable Paintable component Diese Methode stellt den Gegenspieler zu addPaintable dar und entfernt somit ein Paintable Objekt wieder von der Zeichenfl che 3 6 2 3 3 public void justify int padding Bei Aufruf dieser Methode werden alle Komponenten der Zeichenfl che so verschoben dass am linken und oberen Rand der Abstand zur nahegelegensten Komponente dem mit padding bergebenen Wert in Pixeln entspricht Die Methode nutzt zur Bestimmung der Verschiebung diegetBounds Methode der Komponenten so dass der per padding bergebene Wert nur so genau einge halten werden kann wie es der Genauigkeit der getBounds Methode in den verschiedenen Paintable Komponenten entspricht 200 KAPITEL 3 GRUPPENERGEBNISSE 3 6 2 3 4 public void addSelectionListener PaintableSelectionListener listener ber diese Methode k nnen sich interessierte Klassen welche das PaintableSelectionListener Interface implementieren ber das Selektieren von Komponenten im Editor informieren Bei einer Selektion wird jedem Listener
26. nnen Auch wurde stark an der bersichtlichkeit der Automatenliste gearbeitet Ein Anwen der kann nun Automaten in der Liste umbenennen und sie so mit sprechenden Namen versehen Doppelte Eintr ge werden gefiltert und durch eine angeh ngte Zahl eindeutig gemacht So wird das Arbeiten mit einer Vielzahl von Automaten deutlich vereinfacht Auch die Konsole blieb nicht von Ver nderungen verschont So bildet diese nun nur noch einen Teil des neuen Analysebereiches Dieser Bereich ist geschaffen worden um in ihm spezielle Automatenanalysen anzuzeigen Hier w ren z B das Testen einer Eingabe auf Akzeptanz durch den Automaten oder das Auffinden einer solchen akzeptierenden Bele gung zu erw hnen Diese beiden Funktionen f r endliche Automaten sind ebenfalls im zweiten Semester neu entstanden Wegen mangelnder Nutzung von Properties und Mehrsprachigkeit wurde deren Entwick lung im zweiten Semester nicht mehr weitergef hrt Die bereits implementierten Funktio nen sind noch im Workspace vorhanden und k nnen ggf in einer weiteren Projektgruppe wieder aktiviert und weitergef hrt werden Auch auf eine im ersten Semester erw hnte Projektverwaltung wurde verzichtet zumal diese durch das Speichern und Laden von mehreren Automaten in einer XML Datei auch berfl ssig geworden ist 3 5 DER WORKSPACE STAND JULI 2006 181 3 5 3 Features der Implementierung nderungen und Neuerungen in der Implementation des Workspace werden hier erg n
27. r den eigentlichen Workspace umprogrammieren zu m ssen In der Interaktion zwischen Benutzern den Automaten und den Transformationsverfahren sollte der Workspace folgende Punkte erf llen e Es muss eine flexible Eingabem glickeit geschaffen werden um eine zu transformie rende Aufgabenstellung eingeben zu k nnen e Die durch die Transformation entstandenen Automatenmodelle k nnen als Graph angezeigt werden e Auf diesen erarbeiteten Ergebnissen k nnen weitere Operationen durchgef hrt wer den um ggf weitere Informationen zu erhalten Des Weiteren m ssen alle automa tenspezifischen Operationen durchf hrbar sein die von der Automatenbibliothek geliefert werden wie z B Schnitt Vereinigung usw e Automaten sollen editierbar sein e Alle Automaten sollen in einer Projektverwaltung angelegt werden Projekte sollen abgespeichert und geladen werden k nnen Nachdem die Ziele grob definiert worden sind gab es zwei wichtige offene Fragen die vor der Implementation zu kl ren waren Das erste Problem besch ftigte sich mit der 164 KAPITEL 3 GRUPPENERGEBNISSE Plattform unserer Implementation das hei t ob wir eine bereits bestehende Plattform wie Eclipse oder JABC nutzen Die zweite Problemstellung befasste sich mit dem Layout von Automaten also der Frage wie man Automaten bersichtlich in einem Editor anzeigt Dem Editor ist mit 3 6 ein eigener Abschnitt dieses Berichtes zugeordnet 3 4 1 1 Plattform
28. r innere OBDD Verzweigungsknoten wird weiterhin die normale PaintableState Klasse benutzt 3 6 5 1 2 Die Klasse OBDDStateLabel Die Darstellung von OBDD Knoten wur de nur dahingehend ver ndert dass die von den Automaten kommende Zustands Nummerierung bei OBDDs nicht mehr sichtbar ist 3 6 5 1 3 Die Klasse PaintableOBDDTransition Bei OBDDs werden die Verzwei gungen durch durchgezogene oder gestrichelte Kanten dargestellt Die neue Klasse PaintableOBDDTransition bernimmt diese Darstellungsform und ersetzt damit eben falls die nun redundante Anzeige einer Beschriftung der OBDD Kanten 3 6 6 Layouting von Automaten interface Layouter interface ProgressMonitorable interface ProgressListener void progressEvent ProgressEvent e void setAutomaton PaintableAutomaton automaton void setPreferredSize Dimension preferredSize void layout Action getOptionsAction int getMing int getMaxd addProgressListener ProgressListener listener void removeProgressListener ProgressListener listener A A ProgressEvent CircularPlacementLayouter FruchtermanReingoldLayouter boolean isFinishedo int getCurrent be int getMind int getMax ProgressMonitorable getSourced OneStepFruchtermanReingoldLayouter Abbildung 3 48 Die wichtigsten Klassen und Methoden der Layouting Funktionalit t des PaintableAutomaton Addons Ein
29. rung ersetzt Diese Namen werden im Workspace in sogenannten Resource Klassen definiert und bersetzt Das hei t in einer Resource Klasse werden einem symboli schen Namen ein l nderspezifischer Text oder eine Bilddatei zugeordnet Dabei wird die passende Resource Datei automatisch aufgrund der im Workspace eingestell ten Spracheinstellung identifiziert Die Resourcedateien unterscheiden sich durch eine Erweiterung des Dateinamens um eine Landeskennung Diese Kennung gibt 172 KAPITEL 3 GRUPPENERGEBNISSE Attributes private Resource Bundle resources lt lt datatype gt gt private Locale current Locale ListResourceBundle private String supportedLanguages 0 EN DE From util Abbildung 3 29 ResourceManager an welche Sprache vorliegt Z B steht resource_de class f r eine deutschsprachige Resource Datei Die Ubersetzung findet zentral durch den ResourceManager statt 3 4 3 2 Addons Um eine zuk nftige flexible Erweiterung des Workspaces mit neuen Automatentypen neuen Transformations und Analyseverfahren zu gew hrleisten wurde ein Addon Konzept eingef hrt Mit dieser Funktionalit t soll der Workspace dem Konzept eines leicht erweiterbaren Baukastens entsprechen da durch das Hinzuf gen von Addons keine nderungen am Workspace vorgenommen werden m ssen Somit sind die Funktionen der Addons streng gekapselt und f gen dynamisch ihre Funktionalit t dem Workspaces hinzu Elemenente des Addonkonzepts
30. tierenden Editor erledigen zu lassen Da Kripkemodelle wie Automaten relativ simple Graphen sind war eine Erweiterung des Editors gl cklicherweise schnell m glich Das Ergebnis sieht man in Abbildung 3 44 F Kripke Model Automaton la a Jo A layout rand Frucht Reing propA propB Abbildung 3 44 Beispiel eines Kripke Modells im Editor 3 6 4 1 Implementation Wie bereits erw hnt sind Kripkemodelle strukturell nicht sehr unterschiedlich von Au tomaten es sind ebenfalls Graphen mit Knoten und Kanten Daher bot es sich an das bestehende PaintableAutomaton Modell passend per Vererbung zu erweitern Abbildung 3 45 zeigt das vereinfachte Klassendiagramm des neu entstandenen PaintableKripke Model Packages Wie man sieht erben alle neuen Klassen von bestehenden alten Klassen Die durch die Vererbung eingebrachten Unterschiede sind im Diagramm durch Erw hnung der wichtigs ten ver nderten Methoden und Attribute angedeutet und werden nun kurz erkl rt 3 6 4 1 1 KripkeEditorPanel Die bestehende Klasse AutomatonEditorPanel wurde dahingehend ver ndert dass die f r das Erzeugen neuer Zust nde verantwortliche Aktion 210 KAPITEL 3 GRUPPENERGEBNISSE ry interface Resizable AutomatonEditorPanel KripkeEditorPanel int getwviatho KripkeStateEditPanel int getHeightO void setWidth int JTable propositionTable void setHeight int
31. 1 Als Beispiel betrachte man das PDS P P T A mit P aa p P LL Ya Ya Yas Yo Ye und A p Ya a p 172 pt ys gt p 473 pt Y6 pt e Es soll pres 1 p Y yays3 berechnet werden Der in Abbildung 2 7 dargestellte P MA A erkennt genau p y1y2y3 wobei die Transitionsmenge durch die schwarzen Pfeile Be schriftungen Y Ya Y3 gegeben ist Zun chst wird Yo mit Conf Ap p Y yay3 in 2 2 ALLGEMEINE ANALYSE 39 itialisiert Danach wird jede PDS Regel einzeln berpr ft Die Regel p ya p 7172 f hrt zu einer neuen Transition da ein y ya Lauf von s nach ga existiert A erh lt also die zus tzliche Transition s ya q2 Von s startet in Ag nur dieser eine Y Yya Lauf also kann auf Basis dieser PDS Regel keine weitere Transition eingef gt werden Die zweite Regel ist offensichtlich noch nicht anwendbar Es gibt aber einen e Lauf von s nach s die dritte Regel f hrt also zur Transition s y6 s Also ist A der Automat der aus den schwarzen und aus den braunen Transitionen besteht Beschriftungen 71 72 Y3 Ya 7 Es gilt Yi p 17273 P U Xi Dadurch entsteht nur fiir die zweite Regel eine neue Situation Da es jetzt einen yay3 Lauf von s nach q3 gibt wird die Regel s 7s5 q3 hinzugef gt Durch Hin zunahme des blauen Pfeils Beschriftung ys gelangt man daher zu Aa Es ist Y p 117273 P ya va U Lp x 775 prep p Y yay
32. 3 1 3 2 Die Klasse KripkeLTLModelChecker Eine Instanz dieser Klasse kann genutzt werden um beliebig viele Modellpr fungen nacheinander durchzuf hren Das geschieht jeweils durch einen Aufruf der Methode check KripkeModel LTLPreprocessor LTLBPNode check KripkeModel LTLPreprocessor LTLBPNode l sst zun chst das Kripkemodell in einen B chiautomaten transformieren Dann wird die LTL Formel vom Pr prozessor bearbeitet falls ein solcher bergeben wurde Der Pr prozessor kann zu dem Ergebnis kommen dass die Formel unsinnig ist und dies mit einer IllegalArgumentException signalisieren was einen Abbruch der Modellpr fung zur Folge hat Andernfalls soll te der Pr prozessor die Formel falls n tig in geeigneter Weise modifizieren so dass die neue Formel nun in einen B chiautomaten bersetzt werden kann Dem LTLtoBuchiTranslator wird dabei das Alphabet des f r das Kripkemodell berechneten B chiautomaten bergeben das damit auch das Alphabet des f r die Formel berechne ten B chiautomaten wird Auf diese Weise kann sp ter ein Gegenbeispiel und evtl der Schnittautomat berechnet werden ohne einen Alphabetsabgleich durchzuf hren Der KripkeLTLModelChecker verf gt ber ein modifizierbares Flag dass die Interpretati on von Formeln startet Ist das Flag gesetzt so wird davon ausgegangen dass die gegebene Formel eine zu erf llende Eigenschaft des gegebenen Modells spezifiziert In diesem Fall wird die Formel zus
33. 30 30 38 41 44 44 ol 59 59 58 63 63 68 IV 3 2 3 3 3 4 3 9 3 6 3 7 INHALTSVERZEICHNIS Automaten BARRAS AA e d 105 3 2 1 Aufbau eines Automaten a 105 3 2 2 Berechnung von Transitionen bei Automatenoperationen 122 3 2 3 Einleitung und bersicht zur Weiterf hrung 127 Sa O Sa ood a a be rs ers 131 3 2 5 B chiautomaten netten bb eb Ba ha ae 137 3 20 Kuipkesiruktiur a2 Er sr eS 144 Parsel a 3 8 Eee a EA u ee Seh rt ke a amp 147 3 31 Parser Infrastr kt r iw pk der AA A Be A 147 3 3 2 First Generation Presburger Parser 150 3 3 3 Second Generation LTL CTL While 153 3 3 4 Parser f r regul re und w regul re Ausdr cke 157 Der Workspace Stand Februar 2006 163 3 4 1 Planungsphase lt ea ang Ste DREI BE i ea 163 3 4 2 Das Workspacekonzept veia ER 2 I a SRA ES 166 3 4 3 Features der Implementation 2 22 nn mann 167 Der Workspace Stand Juli 2006 0008 178 3 5 1 Planmesphase asta EA EEE RD REN SE EES 178 3 5 2 Das Workspacekonzept aa sn we a a a 179 3 5 3 Features der Implementierung 181 Sd ASS pirun gt paea i A IE E Sa a a 183 3 5 5 Die Klasse GenericOperationDriver 183 Editor te ts e avs ee a e 2 196 3 0 1 AS 2 A A A NS A 196 3 6 2 Das PaintablePramework x 28 are AE a 197 3 6 3 Das PaintableAutomaton Addon
34. 5 Ergebnis der Degeneralisierung Dass der generalisierte BA auch nicht weniger erkennen kann ist trivial da ein BA als ein generalisierter BA mit nur einer Klasse von akzeptierenden Zust nden aufgefasst werden kann vgl S 128 F r ein Beipiel siehe Abbildung 2 4 Akzeptanzmengen q2 qs 4q3 q4 95 und 2 5 2 1 2 Endliche Baumautomaten Automaten sind in der Informatik ein weit verbreitetes Konzept das oft Gegenstand theoretischer Forschung ist Es hat sich jedoch herausgestellt dass kaum ein theoretisches Teilgebiet der Informatik einen derart gro en praktischen Nutzen hat wie die Automaten theorie Im Gegensatz zu herk mmlichen Automaten die nur W rter erkennen gibt es eine besondere Klasse von Automaten die Baumautomaten die herk mmliche Automa ten erweitern so dass sie in der Lage sind baumartige Strukturen zu erkennen Konkret hei t das dass Baumautomaten Sprachen wie Boolesche Terme erkennen k nnen Im folgenden Text werden die Grundlagen f r endliche Baumautomaten dargestellt Dabei liegt der Schwerpunkt auf den Bottom Up Baumautomaten die Top Down Baumauto maten werden nur kurz angesprochen Die Grundlage f r diesen Text ist 2 2 1 AUTOMATENMODELLE 17 2 1 2 1 Bottom Up Baumautomaten Endliche Baumautomaten arbeiten auf endlichen geordneten B umen die durch Terme dargestellt werden Bottom Up Baumautomaten starten ihren Lauf an den Bl ttern und bewegen sich von dort aus nach oben zur W
35. Abbildung 3 13 eine einfache Grammatik BNF 3 3 1 1 11 Token getToken Gibt das Token des Knotens zur ck Soll ein Parser einen Ausdrucksbaum konstruieren sollte dies ausschlie lich ber einen der Konstruktoren wie PNode PNode leftNode PNode rightNode Token t f r zweistel lige Operatoren geschehen M ssen Knoten mit mehr Kindern erzeugt werden ist die bliche Vorgehensweise einen leeren Knoten mit PNode int numNodes zu erzeugen und den Knoten mit void setNode int num PNode node und void setToken Token t mit Daten zu f llen 3 3 1 1 12 Kompatibilit tsinterface ltere Codeteile oder Parser die schnell auf die Verwendung von Tokens und PNodes umgestellt werden sollen k nnen die statische PNode PNode NullNode new PNode Token getMinToken 0 verwenden um den Ausdrucksbaum zu konstruieren 3 3 1 1 13 ParseException aaa parser Exceptions vom Typ ParseException zeigen Fehler in der Eingabe an Eine Anwendung sollte eine der Methoden String toString nur Fehlermeldung und Eingabe in einzeiligen String oder String toStream Fehlermeldung und vorformatierter mehrzeiliger String mit Zeiger auf die Fehlerposition zur Weitergabe an den Benutzer verwenden Beachtet werden muss dass das Feld position abh ngig vom Parsertyp u U keinen g ltigen Wert enth lt 3 3 2 First Generation Presburger Parser Der Parser der ersten Generation ist vom Konzept her ein modifizierter rekursiv absteigender Parser
36. Ansatz das Metaframe System zu realisieren ist Java ABC bzw ABC vel eine vollst ndig in Java geschriebene Modellierungsumgebung und Integrationsplattform Auch in Java ABC dreht sich alles um das Kombinieren von SIBs zu flussgraph hnlichen Strukturen Anders als in ABC erfolgt die Spezifikation der SIBs nicht mehr in verschiede nen Formaten sondern einheitlich in Java SIBs sind Instanzen von Java Klassen Die Un abh ngigkeit von der Sprache in der ein aus einem SIB Graphen kompiliertes Programm implementiert ist geht damit aber nicht zwangsl ufig verloren SIBs sollen am besten kei ne eigene Programmlogik enthalten und in erster Linie als Tr ger von Attributen dienen Es ist zum Beispiel weiterhin vorstellbar dass ein SIB dazu da ist um Parameter f r den Aufruf einer Methode einer anderen Programmiersprache zu speichern In Java ABC hat ein SIB e Attribute sie sind als public fields realisiert e ausgehende Kanten realisiert als public String Array e eine eindeutige ID UID das ist ein public final Attribut vom Typ String also ein Instanzattribut das aber f r alle Instanzen einer SIB Klasse gleich ist Die UID erm glicht eine zuverl ssigere Identifikation eines SIB als der ver nderliche Klassenname e eine getIcon Methode diese Methode ist im Interface SIBClass spezifiziert e eine getTooltipText Methode die Informationen liefert die auf der Zeichen fl che des SIB Graphen als Tooltip s
37. Anwendungsm glichkeiten der Erreichbar keitsanalyse beim Model Checking detailliert vorgestellt Weitere Anwendungen sind in zu finden 2 2 1 1 Pushdown Systeme Ein Pushdown System PDS ist ein Tripel P P T A wobei P eine endliche Menge von Kontrollpunkten T ein endliches Stack Alphabet und A C P xT x PxT eine endliche Menge von Transitionsregeln ist Eine Konfiguration von P ist ein Paar p w mit p P und w I Die Semantik einer Konfiguration p wY ist dass sich P aktuell an Kontrollpunkt p befindet und den Stackinhalt w y Yk hat wobei y an der Spitze liegt F r q y q w A schreiben wir q y q w Eine solche Regel erm glicht f r alle w T den bergang von der Konfiguration q yw in die Konfiguration q ww Das PDS geht also von q nach q ber nimmt y vom Stack und schreibt das Wort w wieder darauf Nichtdeterminismus ist durch diese Definition nicht ausgeschlossen Die Erreichbarkeitsrelation gt sei der reflexive und transitive Abschluss der Direkter Nachfolger Relation Ein Lauf von P ist eine endliche Sequenz c ca c von Konfigura 2 2 ALLGEMEINE ANALYSE 31 tionen c von P wobei f r 2 1 k 1 die Konfiguration c 1 direkter Nachfolger von G ist und auf c keine Regel mehr anwendbar ist f r oberstes Zeichen gibt es keine Regel oder der Stack ist leer 2 2 1 2 Das Problem der Vorg nger Berechnung f r Pushdown Systeme F r alle Meng
38. Anzeige von allgemeinen Automaten Informationen im Workspace 205 Das AdvancedAutomatonPanel im Einsatz 2 2 22 nn 206 Klassendiagramm zur R ckkonvertierung von nderungen an einem PaintableAutomaton oca dt DA A EN EI 207 berblick ber die Funktionen um die Klasse StateLocationSerializer 208 Beispiel eines Kripke Modells im Editor 2 2 2 22m 209 Das Klassendiagramm des PaintableKripleModel Packages 210 Bearbeitung der aktiven Propositionen bei einem Zustand in einem Krip kemodell ti AOS AS ee a ne es 211 Klassendiagramm des Paintable OBDDs Packages 212 Die wichtigsten Klassen und Methoden der Layouting Funktionalit t des PaintableAutomaton Addons 2 cio a 212 Triple AL Workspaces 6 5 4 4 20 a pein a ede a ede a ee Gt 218 Triple A Workspacemen a lo ew de Oa ED an Ta 219 ABBILDUNGSVERZEICHNIS IX 3 51 3 92 3 93 3 54 3 99 3 56 3 97 3 98 3 59 3 60 3 61 Auswahl von Automaten im Navigator Umbennen von Automaten im INOUYE 0 a n cee ca dnd the Ga SA ed is ay Sat ae A ee A a 220 Di 63 6 2 8 5 EE Are Oe ty tue te 221 Die Editor Toolbar ue gis seen lo De an Sad St Sore Aura ae 223 Optionen f r Zust nde e Sr eh ae a Pn ee Oe sk oe 224 Gr enver nderung an Zust nden 1 Em nme 224 Eine neue Transition wird durch Dr cken der STRG Taste und das Ziehen der Maus zwischen zwei Zust nden erstellt 2 2 2 oo on nn 225 Bearbeiten einer Transition
39. Ausgangsgrad 2 und Senken mit Aus gangsgrad 0 e Innere Knoten sind mit einer Variable x markiert e Die beiden ausgehenden Kanten eines inneren Knotens sind mit 0 bzw 1 markiert e Senken sind mit 0 oder 1 markiert e Auf jedem Pfad kommt eine Variable x h chstens einmal vor e Wenn auf einem Pfad die Variable x mit der Ordnungsnummer r i vorkommt dann folgen auf dem Pfad nur Variablen x deren Ordnung bzgl der Variablenord nungen gr er sind d h es gilt n i lt r j Ein Problem von OBDDs ist dass ihre Gr e entscheidend von der gew hlten Variablen ordnung abh ngt Die Wahl der Variablenordnung kann zwischen polynomieller und expo nentieller Gr e des OBDDs entscheiden Auf der anderen Seite ist es ein NP schwieriges Problem f r eine als Formel oder als OBDD gegebene Funktion f die optimale Varia blenordnung zu berechnen Es gibt allerdings Heuristiken mit denen sich zumeist gute Ordnungen berechnen lassen Bei der Implementierung der OBDD Datenstruktur haben wir uns auf die feste kanonische Variablenordnung beschr nkt da die Synthese zweier OBDDs die gleiche Variablenord nung voraussetzt und das Vertauschen zweier Variablen x und x in der Ordnung alleine schon quadratische Rechenzeit bzgl der OBDD Gr e ben tigt Es wurden allerdings Die Definition folgt dem Skript der Vorlesung Theorie des Schaltkreisentwurf und der Schaltkreis verifikation von Beate Bollig 132 KAPITEL 3
40. Automaton automaton ArrayList lt State gt states PaintableAutomaton paintableAutomaton List lt PaintableState gt states List lt PaintableTransition transitions ArrayList Map lt State ArrayList lt Transition gt transitions 2 as A _ E void addState PaintableState State addState State L Map lt Transition Paintable alsiton gt transitionMapping lt gt void removeState PaintableState boolean removeState State Map lt BState Palntablestate gt stateMapping void addTransition PaintableTransition Transition addTransition State Trigger State Map lt PaintableTransition List lt Transition gt gt paintableTransitionMapping Map lt PaintableState State gt paintableStateMapping void removeTransition PaintableTransition Transition removeTransition Transition 2 void addStructuralChangeListener PaintableAutomatonStructuralChangeListener void addLayoutChangeListener PaintableAutomatonLayoutChangeListener interface PaintableStateChangedEvent public PaintableState getStated public PaintableStateChangeType getTyped interface StructuralChangeEvent Abbildung 3 42 Klassendiagramm zur Riickkonvertierung von Anderungen an einem PaintableAutomaton Abbildung 3 42 zeigt einen Ausschnitt dieses per Listenern realisierten Konvertie rens Im Zentrum steht der AutomatonToPaintableConverter welcher ein Automaton Objekt mit einem PaintableAutomaton
41. B ume genannt Ein endlicher bottom up Baumautomat A ist ein 4 Tupel lt F Q F R gt wobei F das Eingabealphabet mit Stelligkeit Q eine endliche Menge von Zust nden FCQ die Menge der Endzust nde und R eine Menge von bergangsregeln von der Form f q1 q2 qn gt q mit n n f f r f F sind Baum automaten mit lt Regeln erlauben berg nge von der Form q q Bottom up bedeutet dass f r jeden Knoten ein Zustand gem der bergangsregel R gew hlt wird Sobald die Zust nde f r die Kinder des Knotens berechnet sind An den Bl ttern gibt es keine Kinder folglich k nnen wir hier direkt einen Zustand gem R w hlen Dar ber hinaus bedeutet t Sg dass durch endlich viele Regelanwendungen von A der 42 KAPITEL 2 SEMINARPHASE endliche Baum t T F durch q Q ersetzt wird A akzeptiert t genau dann wenn f r einen Endzustand q t Ag gilt L A bezeichnet die Menge aller akzeptierenden Terme von A Baumsprachen die mit L A bereinstimmen sind ebenfalls regul re Baumsprachen f r einen Baumautomaten A Regul re Baumsprachen sind abgeschlossen gegen Komple ment Vereinigung und Schnitt Ein Baumautomat ist completely specified vollst ndig falls es f r ein f F und qi InEQ eine Regel von der Form f q1 q2 qn q gibt Die Gr e eines Baumautomatens A wird mit A bezeichnet dies ist dabei die Anzahl von Zust nden plus der Anzahl von den bergangsregeln von A Ein Baumautomat is
42. Das Diagramm Addons in AAA zeigt alle wichti gen Elemente der Addons und ihr Zusammenspiel mit den anderen Komponenten des Systems der Automaten des Parsers und der Transformation An dieser Stelle werden alle Elemente der Addons beschrieben e Die Klasse AddonWorkspacePreprocess ist eine abstrakte Klasse von der al le Addon Initialklassen abgeleitet werden m ssen Dieses Vorgehen hat den Vorteil das alle Addons einen gemeinsamen Konstruktor und eine Methode init WorkspaceFrameworkspaceFrame besitzen So erhalten alle Addons ei ne einheitliche Struktur die zum Initialisieren eines Addons ben tigt wird Die Methode init WorkspaceFrame workspaceFrame muss in einem Addon so 3 4 DER WORKSPACE STAND FEBRUAR 2006 173 AddonWorkspacePreprocess From addons Attributes driver automaton workspace parser AddonManager From addons Attributes translation private String FILEPATH addon am Abbildung 3 30 Addons in AAA implementiert werden das sie das Laden des Addons anst t So wird garan tiert dass alle Addons auf die selbe Art und Weise dynamisch geladen werden k nnen package aaa workspace addons import aaa workspace gui WorkspaceFrame public abstract class AddonWorkspacePreprocess protected WorkspaceFrame workspaceFrame public AddonWorkspacePrep
43. Datei plugin xml welche beim Starten von Eclipse gelesen wird und den Eclipse Kern ber die vom Plug in verwendeten bzw zur Verf gung gestellten Erweiterungspunkte in formiert Das folgende Listing zeigt eine beispielhafte plugin xml welche dann n her erl utert wird lt xml version 1 0 Tencodine WIE 827 gt lt eclipse version 13 017 gt lt plugin gt lt extension point org eclipse ui actionSets gt lt actionSet id HelloWorld actionSet label Hello World Action Set visible true gt 70 KAPITEL 2 SEMINARPHASE lt menu id HelloWorld menu label Hello World Men gt lt separator name BeispielGruppe gt lt menu gt lt action class helloWorld actions HelloWorldAction id HelloWorld action label Hello World menubarPath HelloWorld menu BeispielGruppe toolbarPath BeispielGruppe tooltip Hallo Welt gt lt actionSet gt lt extension gt lt plugin gt Die vorliegende Deklaration teilt ber das Tag lt extension point gt mit dass es den Erweiterungspunkt org eclipse ui actionSets nutzen m chte Dieser Erweiterungs punkt ist f r das Einbinden von Aktionen in Men s Toolbars etc verantwortlich Die un ter lt extension point gt geschachtelten Optionen teilen jetzt diesem Erweiterungspunkt mit wie er verwendet werden soll Die Beispiel Deklaration erzeugt ein neues Men Hel lo World Men und f gt diesem einen Eintrag mit dem Label Hello World hi
44. Determinisierung ist es sinnvoll noch weitere Funktionen zur Untersuchung von Transitionen zur Verf gung zu haben In Abschnitt 3 2 2 auf Seite 122 wurde daher der TransitionAnalyzer eingef hrt Auch f r OBDDs existiert eine Implementierung eines TransitionAnalyzer die jedoch weniger effizient ist da nun die Zeichenmengen nicht mehr als geordnete Intervalle vor liegen ber die man iterieren und in denen man nach lokalen berschneidungen suchen kann Um herauszufinden in welcher Weise sich bei einer Potenzmengenkonstruktion die Sym bolmengen von m in einem Zustand startenden Transitionen berschneiden wird eine m re Synthese der m OBDDs mit denen die Transitionen markiert sind durchgef hrt Das ist eine Verallgemeinerung der in Abschnitt 3 2 4 2 beschriebenen bin ren Synthese von OBDDs Dabei entsteht ein Zwischen OBDD Oz dessen Senken allerdings nicht mit 0 oder 1 markiert werden Die Senken von Oz hei en im Folgenden Pseudo Senken Die Synthese hnelt m parallelen L ufen durch die m OBDDs und wann immer dabei m Senken erreicht werden konstruiert man eine Pseudo Senke von Oz Diese Senke wird markiert mit einem Bitvektor der L nge m in dem der i te Eintrag angibt welche Senke des i ten OBDDs erreicht wurde Alle Pseudo Senken die mit dem gleichen Bitvektor markiert sind werden hnlich wie bei der normalen Synthese verschmolzen Nach der Konstruktion von Oz wird f r jede Pseudo Senk
45. Die Projektion beliebiger Positionen ist f r OBDDs auch recht einfach zu realisieren Es k nnten weitere Normalformen implementiert wer den die einstellbar gemacht werden Es ist zu vermuten dass es von der konkreten For mel abh ngig ist welche der implementierten Normalformen am g nstigsten ist Vielleicht kann man dies zu einem gewissen Grad sogar automatisch erkennen 86 KAPITEL 3 GRUPPENERGEBNISSE 3 1 2 3 3 Inkrementelles Ver ndern der Formel Wenn sich eine Formel nur so ndert dass sich im Syntaxbaum der Normalform lediglich vereinzelte Knoten ndern so gen gt es bei Speicherung von Zwischenergebnissen von diesen Knoten ausgehend f r alle auf dem jeweiligen Pfad zur Wurzel liegenden Knoten neue Automaten zu berechnen der Rest ist noch immer aktuell Dies kann sich vor allem bei Verifikations Anwendungen bezahlt machen wo sich aufeinander folgende Zusicherungen gem ss eines Kalk ls nicht beliebig unterscheiden Allerdings wird vom Parser ein komplett neuer Syntaxbaum ge liefert f r den erst wieder die Normalform berechnet werden muss Hier muss das System Matchings erkennen indem es die beiden normalisierten Ausdrucksb ume miteinander vergleicht Oder aber man f hrt die nderungen direkt im normalisierten Ausdrucksbaum durch 3 1 2 3 4 Ver nderung der Automaten Struktur Die gew hlte Automaten Konstruktion arbeitet unter Umst nden mit sehr gro en Alphabeten Man kommt aber stets mit dem Alphabet 0 1 aus wenn
46. Einschr nkung dieser Implementation und steht intern eng im Zusammenhang mit den parametrisierten Methodenaufrufen e Keine Queues Dies ist eine Einschr nkung dieser Implementation Es ist zwar m glich Queues anzulegen und ber vier Anweisungen diese zu steuern jedoch fehlen Anweisungen auf bestimmte Konfigurationen der Queue zu warten was diese quasi unbrauchbar macht Das Grundkonzept an sich hat jedoch den Vorteil dass damit eine verteilte Modellerzeu gung m glich ist Kontexte oder Prozesse k nnen als Threads realisiert werden und auf separaten Prozessoren oder Netzknoten eines Clusters laufen Unter Umst nden ist auch eine asynchrone Ausf hrung der Sandbox m glich 3 2 AUTOMATEN 105 3 2 Automaten Um die Vision eines universellen und automatischen Analysewerkzeugs auf der Basis von Automaten zu verwirklichen wurden auf der Suche nach einem Kern dieses Werkzeugs verschiedene schon vorhandene Automatenbibliotheken untersucht Es stellte sich her aus dass f r vorgesehene zuk nftige Erweiterungen keine Bibliothek allen Anforderun gen gerecht werden konnte Insbesondere lie en die untersuchten Bibliotheken ein fle xibles Alphabetkonzept vermissen das hei t sie bieten nur ein Alphabet fester Gr e mit unver nderlichem Elementtyp Bei der Darstellung von Mengen transitionsbewirkender Zeichen sind die bestehenden Bibliotheken au erdem zu sehr auf den Anwendungsfall Mustererkennung ausgelegt was f r autom
47. F RD soll mit den rechten Seiten der Gleichungen korrespondieren Auf P Var x Lab definiert man die Halbordnung E gt j RDE RD gt Vi RD C RD Diese Halbordung induziert auf P Var x Lab einen vollst ndigen Verband mit dem kleinsten Element und der paarweisen oberen Schranke gt RD ORD RD URD RD URD Es l sst sich au erdem zeigen dass F bzgl E monoton ist d h dass gt gt gt RD E RD impliziert F RD E F RD gilt Weiter erf llt F die aufsteigende Kettenbedingung so dass nach endlich vielen Anwendungen von F auf sich selbst die Kette irgendwann station r wird d h F PO gilt Um die kleinste L sung des Gleichungssystems zu berechnen betrachte man die Folge E 0 Es ist zu beachten dass 0 E F 0 gilt Mit einer einfachen vollst ndigen Induktion kann man zeigen dass f r alle n Fr 9 E F t gilt Alle Elemente der Folge sind aus P Var x Lab und da sowohl Var als auch Lab in der Praxis endliche Mengen sind k nnen nicht alle Elemente der Folge disjunkt sein die Folge erf llt also die aufsteigende Kettenbedingung D h es existiert ein n so dass puta F 0 gt gt Es ist F 1 0 F F 0 und mit der obigen Gleichung k nnen wir sagen dass F 0 ein Fixpunkt von F ist und eine L sung des Gleichungssystems darstellt 2 2 ALLGEMEINE ANALYSE
48. Formel eine nicht sinnvolle Proposition so wird das Preproces sing mit einer IllegalArgumentException abgebrochen Sinnvolle Propositionen die im Alphabet enthalten sind erfordern keine weiteren Aktivit ten Dem Alphabet unbekannte sinnvolle Propositionen sind dem Alphabet nur deshalb unbekannt weil sie nie erf llt sind Darum werden solche Propositionen in der Formel korrekterweise durch false ersetzt Es w re auch denkbar im Kripkemodell nicht Propositionen des oben beschriebenen Typs zu verwenden sondern jedes einzelne Bit des Offsets relativ zur unteren Schranke zu be schreiben F r die Variable x mit Wertebereich 4 7 beispielsweise werden dann die Propositionen x0 x1 x2 und x3 erzeugt Die Entsprechung f r x 3 w re dann x3 amp amp x2 amp amp x1 amp amp x0 Bei dieser L sung ist die Zahl der f r eine Variable erzeugten Proposi tionen logarithmisch in der L nge des Wertebereiches Dagegen betr gt sie bei der ersten L sung im best case 1 im worst case ist sie linear in der L nge des Wertebereiches Bei der zweiten L sung gibt es das Problem nicht konstruierter Propositionen genau genom men nicht jedoch sollte der Benutzer in seinen Formeln weiterhin x 3 schreiben d rfen Daf r k nnte aber ein anderer Pr prozessor geschrieben werden der jede menschenlesbare Proposition durch die quivalente Konjunktion ersetzt 3 1 TRANSFORMATION 91 3 1 4 Transformation von LTL Formeln in B chiautomaten Eine
49. Formel eng miteinander zusammenh ngen sind algorithmische L sungen oft nicht zusammenh ngend F r Temporallogiken ist aber eine einheitliche L sung m glich und zwar durch die Nutzung alternierender Automaten Urspr nglich wurden in der Literatur nichtdeterministische Automaten zur bersetzung von temporallogischen Formeln in Automaten genutzt Diese bersetzung weist zwei Nachteile auf Die bersetzung ist nicht trivial und es ergibt sich ein exponentieller 2 1 AUTOMATENMODELLE 23 Gr enzuwachs so dass Algorithmen nicht effizient sind Temporallogiken sind Logiken die sich mit der Beschreibung von der zeitlichen Ord nung von Freignissen besch ftigen Sie k nnen sich beispielsweise zur Pr fung von ne benl ufigen Programmen nutzen lassen FS Programme k nnen als bergangssystem modelliert werden Daher k nnen sie durch eine Menge von Booleschen Atomen beschrieben werden Dies l sst sich mit Temporal logiken verbinden Somit kann die Verifizierung eines bestimmten Programmverhaltens geschehen indem das gew nschte Verhalten als temporallogische Formel spezifiziert wird und dann lediglich gepr ft wird ob das Programm ein Modell der Formel ist Daher leitet sich der Ausdruck Model Checking ab Diese Ausarbeitung basiert auf Ferner wurden und herangezogen um das Thema auszuarbeiten 2 1 3 1 Automatentheorie 2 1 3 1 1 W rter und B ume Sei X eine nichtleere endliche Zeichenmenge d h
50. GRUPPENERGEBNISSE Abbildung 3 12 Ein OBDD f r die Funktion f 12 A 27 A 210 V 25 A 23 V 27 Vorkehrungen getroffen die es erm glichen auch OBDDs mit einer anderen Variablen ordnung als der kanonischen zu konstruieren 3 2 4 1 Reduzierung Es gibt in der Bibliothek keine echte Minimierung f r OBDDs nur eine Reduzierung Dazu benutzen wir den Algorithmus von Bryant der im Skript von Beate Bollig S 15 18 detailliert beschrieben ist Dieser Algorithmus benutzt zwei verschiedene Regeln die Deletion Rule die besagt dass ein Knoten eliminiert werden kann falls 0 und 1 Nachfolger identisch sind und die Merging Rule nach der zwei Knoten verschmolzen werden k nnen falls sie mit der gleichen Variable markiert sind und die 1 Nachfolger sowie die 0 Nachfolger beider Knoten identisch sind F r jeden Knoten wird ein Repr sentant berechnet zu Beginn des Verfahrens ist jeder Knoten sein eigener Repr sentant Sollte es im weiteren Verlauf zu einer Anwendung der Deletion Rule kommen so wird der Repr sentant des Nachfolgers des eliminierten Knotens zu dessen Repr sentanten Bei einer Anwendung der Merging Rule wird einer der beiden Repr sentanten der betroffenen Knoten Repr sentant beider Knoten Da es stets nur eine 0 Senke und eine 1 Senke gibt m ssen diese bei einer Reduzierung nicht behandelt werden F r die brigen Knoten wird zun chst bottom up berpr ft ob die Deletion Rule anwendbar ist Danach
51. Instanz von LTLtoBuchiTranslator ist in der Lage beliebig viele LTL Formeln nacheinander in B chiautomaten zu transformieren Bez glich des Algorithmus sei auf verwiesen 3 1 4 1 Alphabete Gemeinsam mit der Formel kann ein AssignmentAlphabet bergeben werden das der B chiautomat verwenden soll Auf diese Weise ist das Alphabet des Automaten nicht auf die in der Formel vorhandenen atomaren Propositionen beschr nkt Wird kein Alphabet bergeben so wird aus den Propositionen der Formel ein Alphabet konstruiert Falls die Formel keine Propositionen enth lt bekommt das Alphabet dennoch die Proposition p da propositionsfreie AssignmentAlphabete nicht erlaubt sind 3 1 4 2 Normalisierung Die Formel wird in die in Abschnitt definierte Normalform berf hrt Es kann optio nal eine anschlie ende Vereinfachungsstufe eingeschaltet werden die z B teilformel amp amp true zu teilformel oder teilformel U true zu true vereinfacht Konstanten pflanzen sich also rekursiv in Richtung Wurzel so weit wie m glich fort Standardm ig ist die Vereinfachung abgeschaltet KripkeLTLModelChecker schaltet sie aber ein Insbesondere bei Verwendung von WhileLTLPreprocessor k nnen Formeln entstehen die sich noch vereinfachen lassen 3 1 4 3 Zwischenautomaten Es wird nicht direkt ein B chiautomat konstruiert sondern zun chst ein IAutomaton Intermediate Automaton IAutomaton und die zugeh rige Zustandsklasse IAutomatonState sind sp
52. Instanzen der Klasse PaintableState Diese ist der zeichenbare Gegenspieler zur Klasse aaa automaton State Die Zust nde k nnen im Editor frei verschoben werden so dass das Layout des Automaten leicht nach bearbeitet werden kann ber die Methode setColor Color color kann die Farbe eines Zustandes gesetzt wer den Dies wird zum Beispiel im Workspace genutzt um einen akzeptierenden Pfad inner halb eines Automaten zu kennzeichnen ber ein Popup Men kann die Akzeptanz Eigenschaft des Zustandes und der Initialkno ten eines Automaten editiert werden 3 6 3 2 1 Klasse StateLabel Dieses Label dient der Darstellung von Zustands Beschriftungen wie sie in aaa automaton State definiert sind 3 6 3 3 Klasse PaintableTransition Abbildung 3 38 zeigt die drei verschiedenen durch die Klasse PaintableTransition gezeichneten Kantendarstellungen Durch die Verwendung von Kurven java awt geom QuadCurve2D konnte eine ansprechende Darstellung erreicht werden Wie bei den PaintableStates kann auch bei den Kanten ber die Methode set Color Color color die Farbe gesetzt werden Die Methode setLabel Label label dient zum Setzen der Kantenbeschriftung welche je nach Orientierungssinn der Kante ebenfalls mitgedreht wird Dabei wurde darauf geachtet dass die Beschriftung niemals auf dem Kopf steht 204 KAPITEL 3 GRUPPENERGEBNISSE Abbildung 3 38 Die drei m glichen Darstellungsformen von Transitionen einfache sym metrische u
53. Logic ist dass sie keine komplexeren Konstrukte zur Verf gung stellt wie dies h here Sprachen tun Damit ist Minimal Logic als Frontend f r die Erstellung von Automaten ungeeignet Die Kernel Logic wird bei der bersetzung in Automaten in Primitive zergliedert und auf die Minimal Logic zur ckgef hrt Aus Gr nden der Effizienz ist es aber nicht immer sinnvoll diesen Weg zu gehen Einige komplexe Ausdr cke werden vorbei an der Minimal Logic direkt in die Automatenkon struktion mit einbezogen Auf diese Art wird eine Effizienzsteigerung erreicht Auf der n chste Ebene User Layer werden andere von MOSEL unabh ngige Spra chen User Logic an MOSEL angepasst Hier k nnte man beispielsweise die Presburger Arithmetik an MOSEL anpassen Dazu m sste man die anzupassende Sprache solange transformieren bis sie auf die Kernel Logic abgebildet wird Praktisch wurde dies schon mit der WS1S von MONA vollzogen Dabei wurde in einem ersten Schritt ein flattening durchgef hrt Ziel hierbei war es einige Funktionen und Konstanten durch Relationen zu ersetzen Dann musste man die Typen von MONA in MOSEL einbetten type embed ding Der letzte Schritt bestand aus einer Normalisierung Hierbei wurden Allquantoren durch negierte Existenzquantoren ersetzt Hier muss man anmerken dass es kein allgemeines Vorgehen gibt andere Sprachen nach MOSEL zu integrieren Die Integration einer anderen Sprache kann sich von der Einbin 98 KAPI
54. Nachfolgern links rechts Diese werden als endliche B ume interpretiert So sind die Variablen in WS1S nat rliche Zahlen und in WS2S Positionen in einem unendlichen Bin rbaum Die in MONA genutzte Logik ist zudem auch m chtig genug um Ausdr cke der Presburger Arithmetik sowie die M2L Str Monadic Second order Logic on Strings zu emulieren Ein weiteres Feature von MONA ist die M glichkeit DFAs und GTAs zu exportieren und zu importieren 2 4 1 2 MOSEL MOSEL ist in mehreren aufeinander aufbauenden Schichten angeordnet siehe Ab bildung 2 9 Auf der Ebene Tool Layer befindet sich die Minimal Logic Die Minimal 2 4 EXISTIERENDE L SUNGEN 97 Tool Layer User Layer Application Layer ts p Secs aaa PR N gt Kernal Logic hg User Logic O has en N Y Narr N BE al an Minimal Logic As _ Definition x Abbildung 2 9 Logik schichten in MOSEL Logic ist eine Sprache die aus einer minimalen Mengen von Primitiven besteht deren Se mantik mit Automaten korrespondiert Die hier verwendete Sprache ist eine Variante der M2L Str Aus ihr lassen sich Automaten induktiv konstruieren Die Vorteile der Minimal Logic sind dass ihre Semantik einfach ist und sich Beweise zur Abgeschlossenheit und Korrektheit von reicheren Sprachen h ufig auf diese Minimal Logic zur ckf hren lassen Die Minimal Logic wird um die Kernel Logic erweitert die komplexere Ausdr cke er laubt Denn ein Nachteil der Minimal
55. String string boolean initial boolean accepting Bei dieser Va riante besteht zus tzlich zu 3 die M glichkeit mit initial festzulegen ob der neue Zustand Startzustand sein soll bzw mit accepting festzulegen ob der neue Zustand akzeptierend sein soll Zus tzlich kann durch die Methode getOutgoingTransitions die Menge der vom Zu stand ausgehenden Transitionen ermittelt werden Die Methode getAdjacentStates dagegen gibt alle unmittelbaren Folgezust nde eines Zustands zur ck 3 2 1 2 Transitionen Genauso wie es bei Zust nden der Fall ist besitzt jeder Automat eine Menge von Tran sitionen die durch Instanzen der Klasse Transition dargestellt werden Intern sind alle Transitionen eines Automaten in der Liste transitions von Automaton zusammenge fasst Diese Liste enth lt f r jeden Zustand z eine Map die die zu z adjazenten Zust nde als Schl ssel enth lt Ist ein Zustand z solch ein Schl ssel so bildet ihn die Map auf das Transition Objekt von z nach z ab Diese Darstellung erm glicht es effizient zu berpr fen ob bereits eine Transition zwischen zwei gegebenen Zust nden existiert Eine Transition hat folgende Eigenschaften 1 from ist der Zustand von dem die Transition ausgeht Die Methoden Transition setFrom State kann nur aufgerufen werden wenn kein Eigent mer der Transition existiert 2 trigger ist ein Trigger Objekt welches die Menge der Symbole repr sentiert die die Transition feuern
56. Transitionen Transitionen werden erstellt indem sie aus einem Quellzustand herausgezogen und an einem Zielzustand losgelassen wer den Dazu dr ckt man die STRG Taste und h lt diese gedr ckt Mit der Maus klickt man nun auf den Quellzustand und h lt dabei die Maustaste gedr ckt Nun kann man per Drag amp Drop eine Transition aus dem Zustand herausziehen und ber einem beliebigen Zielzustand loslassen Bei Loslassen wird dann sofern noch keine Transition vorhanden war eine neue erstellt W hrend des Drag amp Drop Vorgangs werden der Quell und der je weils berflogene Zielzustand blau eingef rbt Abbildung 3 56 zeigt das Erzeugen einer neuen Transition auf dem halben Weg zwischen dem Quellzustand 2 und dem Zielzu stand 6 3 7 8 2 5 L schen von Transitionen Das L schen von Transitionen funktioniert analog zum L schen von Zust nden ber das Kontextmen der rechten Maustaste oder durch Dr cken der Taste ENTF 226 KAPITEL 3 GRUPPENERGEBNISSE Triple A Workspace Jol x File Action Analysis aa Automaton 4 Finite Automaton Finite Automaton Auomaton a ala ale mos 1 E Finite Automaton Properties transition trigger v epsilon Start End ar a je Console g j TOT intervall Initialize Addon Regular Expression Plugin Initialize Addon While Plugin Add riple A Workspace started Have fun Abbildung 3 57 Bearbeiten einer Transition im Proper
57. Transitionen modelliert Es ist jederzeit m glich leere markierte oder tote Transi tionen zum Automaten hinzuzuf gen Intern sind pro Zustandspaar aber h chstens eine markierte und h chstens eine leere Transition vorhanden Eine markierte Transition die dem Automaten hinzugef gt werden soll wird mit einer evtl vorhandenen markierten Transition verschmolzen das hei t die Symbolmengen Trigger mit denen die Transitio nen markiert sind werden vereinigt Soll eine leere Transition oder auch e Transition hinzugef gt werden und es existiert zwischen dem jeweiligen Zustandpaar schon eine leere Transition dann wird die neue ignoriert Methoden die beliebige Transitionen liefern z B Automaton getAllTransitions oder State getOutgoingTransitions liefern ungefiltert alle vorhandenen Transi tionen auch tote Die Methode State getAdjacentStates liefert allerdings nur ber nicht tote Transitionen erreichbare Zust nde Die Methoden in der Hilfsklasse GraphAlgorithms ber cksichtigen keine toten Transitionen Durch den Aufruf der Methode removeTransition Transition k nnen Transitionen aus dem Automaten entfernt werden Diese liefert die entfernte Transition zur ck ihr Eigent mer ist nun null Man kann nun die Zust nde ver ndern und die Transition sp ter wieder einf gen Es existieren verschiedene Konstruktoren die eine neue Transition erzeugen e Transition State from State to hier wird zun chst kein berga
58. Workspace wurde im zweiten Semester mit zwei Automaten und sechs Analyseplugins ausgestattet 3 5 DER WORKSPACE STAND JULI 2006 195 Automantenplugins e Plugin f r endliche Automaten e Plugin f r B chiautomaten Analysen mit endlichen Automaten Plugin zur Erzeugung eines endlichen Automaten aus regul ren Ausdr cken e Plugin zur L sung von Formeln der Presburger Arithmetik e Model Checking auf Basis eines Kripkemodells Model Checking ber eine LTL Formel e Erzeugung von B chiautomaten auf Basis eines w regul ren Ausdrucks e Erzeugung von Kripkemodellen aus While Programmen 196 KAPITEL 3 GRUPPENERGEBNISSE 3 6 Editor Zu Beginn der PG wurden einige Visualisierungsm glichkeiten f r Automaten durch Fremdbibliotheken evaluiert Zwar wurde mit JUNG Java Universal Network Graph Framework eine anfangs brauchbare L sung gefunden doch die Notwendigkeit in diesem Paket zahlreiche nderungen vornehmen zu m ssen sowie die Motivation auf Fremdbibliotheken weitgehend zu verzichten haben zu dem Entschluss gef hrt eine ei gene Implementation eines Visualisierers und Editors f r Automaten ergo Graphen zu erstellen Im Folgenden werden Ideen Funktionen und Implementationsdetails f r den entwickelten Editor aufgef hrt 3 6 1 Ziele Der Editor hat nat rlich als prim res Ziel die Visualisierung von Automaten Neben der Erstellung eines daf r geeigneten Frameworks zur graphischen Anzeige gab es aber a
59. and Systems 1997 Orna Kupferman and Moshe Y Vardi Weak alternating automata and tree automata emptiness In STOC pages 224 233 1998 http doi acm org 10 1145 276698 276748 LGPL http www gnu org licenses licenses html LGPL Bill Moore David Dean Anna Gerber Gunnar Wagenknecht and Philippe Vander heyden Eclipse Development using the Graphical Editing Framework and the Eclipse Modeling Framework IBM Corporation Feb 2004 LITERATURVERZEICHNIS 243 31 F Nielson H R Nielson and C L Hankin Principles of Program Analysis Springer Verlag 1999 32 org eclipse draw2d graph http help eclipse org help31 topic org eclipse draw2d doc isv reference api overview summary html 33 J P P cuchet On the complementation of B chi automata In Theoretical Computer Science 47 pages 95 98 1986 34 Spin Homepage http spinroot com spin whatispin html 35 Bernhard Steffen and Tiziana Margaria Metaframe in practice Design of intelligent network services In Correct System Design pages 390 415 1999 36 Das Java Automata Toolkit http humboldt sunyit edu JCT JAT htm 37 Wikipedia Verfahren unter Packrat http en wikipedia org wiki Packrat_ parser 38 M Y Vardi and P Wolper An automata theoretic approach to automatic program verification In lics86 pages 332 344 1986 39 Moshe Y Vardi Alternating automata and program verification In Computer Science Today pages 471 485 1995
60. auf einem gedachten Kreis positioniert Dieser Layouter welcher als Klasse CircularPlacementLayouter implementiert ist eignet sich vor allem f r gr ere Graphen die ihrer Komplexit t wegen nicht sinnvoll vom Fruchterman Reingold Algorithmus layoutet werden k nnen Zwar ist die Lesbarkeit des Graphen in diesem Fall bei kreisf rmiger Anordnung nicht unbedingt besser aber der Graph wird wesentlich schneller aufbereitet Im zweiten Semester wurden neue Automaten Modelle bzw auch eine OBDD Datenstruktur implementiert F r letztere ist beispielsweise ein Layouting wie es der Fruchterman Reingold Algorithmus leistet nicht unbeding optimal Das hoch motivierte Automaton Team nutzte die Layouter Schnittstelle und erstellte eigene Layouter welche nun folgend kurz beschrieben werden 3 6 6 5 OBBD Layouter Um OBDDs in gewohnter Weise als einen von oben wachsenden Baum darzustellen hat das Automaton Team mit der Klasse OBDDLayouter einen Layouter geschaffen der das Gew nschte erledigt Der Layouter nutzt die ber die Klasse OBDDState ermittel baren Informationen zur Einteilung der Knoten in Ebenen wobei die Variablenordnung des OBDDs nat rlich ber cksichtigt wird Anschlie end werden die Knoten einer Ebene m glichst ansprechend verteilt 3 6 EDITOR 217 3 6 6 6 Level Layouter Ebenfalls aus dem Automaton Team stammt die Klasse LevelLayouter Dieser ordnet Zust nde entsprechend ihres Abstands vom Startzustand aus an Dabei
61. beiden Mechanismen f hrten zu einem dramatischen Geschwindigkeitsanstieg Mit Einf hrung der Parserinfrastruktur siehe 3 3 1 im Zuge der Entwicklung der Parser der zweiten Generation siehe 3 3 3 wurde dieser Parser ebenfalls mit Hilfe der Kompa 13Bei einer Formel L nge vom 3200 Zeichen wurden 5 6 Mio Backtracks durchgef hrt Bei einer Aus drucksbaumtiefe von 22 und mit 107 unterschiedlichen Elementen dauerte das auf einem Athlon64 2800 38 sek 3 3 PARSER 153 tibilit tsmethoden aus den Infrastrukturklassen auf den aktuellen Stand gebracht 3 3 2 4 Anwendung Der Parser befindet sich in der Klasse aaa parser PresburgerParser und wird mit der Methode PNode parse String aufgerufen Der Methode wird ein Ausdruck der Pres burger Logik bergeben und gibt den dazu geh renden Ausdrucksbaum als PNode zur ck Dabei ist zu beachten dass dieser Parser das Kompatibilit tsinterface f r Tokens siehe 3 3 1 1 und PNodes siehe 3 3 1 1 8 verwendet Zu beachten ist dass das Feld position einer ParseException siehe 3 3 1 1 13 u U nicht den genauen Fehlerort anzeigt 3 3 2 5 Kritik Einer der Vorteile dieses Parsertyps ist es weit mehr Grammatiken parsen zu k nnen als bliche tabellengesteuerte LL k Parser Weiterhin ist die Optimierung und die eigentliche Implementierung einfach und schematisch zu verwirklichen Als Nachteil stellt sich allerdings heraus dass es sehr schwer ist Aussagen dar ber machen zu k nn
62. bleiben wird zu Beginn eine hohe Temperatur gew hlt die dann mit steigender Iterationsanzahl abnimmt Beim Experimentieren mit dem Algorithmus wurde beobachtet dass Graphen die aus mehreren Zusammenhangskomponenten bestehen unvorteilhaft layoutet wurden bedingt durch die wechselseitigen Absto ungskr fte trieben die einzelnen Zusammenhangskom ponenten sehr weit auseinander Als L sung f r dieses Problem das zugegebenerma en 216 KAPITEL 3 GRUPPENERGEBNISSE bei Automaten nicht wirklich gegeben ist wurde die Reichweite der Abst ungskr fte begrenzt Als gute Heuristik hat sich eine Maximalreichweite der Absto ungskraft von 2 k Einheiten herausgestellt Unsere Implementation des Fruchterman Reingold Algorithmus benutzt 500 Iterationen bei einer linear absteigenden Temperatur die jedoch ber einen konfigurierbaren Mindest wert gehalten wird Der Algorithmus ist in der Klasse FruchtermanReingoldLayouter im Package aaa workspace editor layout implementiert Die durchgef hrten Modifikationen sowie die Parameter des Algorithmus wie Iterati onszahl Temperaturfunktion etc sind im brigen gute Beispiele f r eine m gliche Im plementation eines Optionen Dialogs wie sie im Interface Layouter durch die Methode getOptionsAction erm glicht wird 3 6 6 4 Kreisf rmige Anordnung Neben dem Fruchterman Reingold Layouter steht noch ein wesentlich einfacherer Layou ter zur Verf gung welcher einfach alle Zust nde
63. d h ruft man sie auf einem Automaten auf ver ndert sich dieser selbst und es wird kein neues Fenster ge ffnet in dem ein neuer Automat erscheint Dies soll nur bei generating Operationen passieren e Treten bei der Anwendung von Automatenoperationen Fehler auf so m ssen diese an einen Anwender verst ndlich weitergeleitet werden e Ab einer gewissen Gr e kann man mit der graphischen Darstellung des Automa ten nichts mehr anfangen Es sollte dann zumindest m glich sein gewisse Daten abzurufen wie die Anzahl der Zust nde Anzahl der Transitionen Initialzust nde akzeptierende Zust nde usw e Bei sehr gro en Automaten ist die graphische Darstellung nicht nur so gut wie nutz los sondern auch hinderlich Sie verbraucht so viele Ressourcen dass der Workspace 3 5 DER WORKSPACE STAND JULI 2006 179 unbedienbar wird Darum sollten Automaten ab einer bestimmten Gr sse nur auf Anforderung des Anwenders gezeichnet werden e Da Operationen wie das Layouten von Automaten sehr viel Rechenzeit in Anspruch nimmt sollten solche Berechnungen nicht den Workspace blockieren sondern auf einem eigenen Thread ausgef hrt werden e Die Automatenliste k nnte Operationen per Drag amp Drop oder ber ein Kontextmen unterst tzen e Man sollte Eintr ge in der Automatenliste umbenennen k nnen e F r einige Automatenoperationen ist es wichtig die Reihenfolge der gew hlten Au tomaten zu erkennen und zu beeinflussen
64. der diesen Anforderungen gen gt ist ein pr diktiver Parser der ohne R cksetzen backtracking arbeitet Damit ein pr diktiver Parser seine Arbeit verrichten kann ist es n tig dass die Grammatik frei von Linksrekursionen ist Eine Linksrekursion liegt vor wenn f r ein Nichtterminal A eine Ableitung A Aa existiert Da ein pr diktiver Parser top down arbeitet l st dieser die Aufgabe indem er versucht beginnend mit dem Startsymbol eine Ableitung nach der anderen durchzuf hren Wenn nun eine Herleitung eine Linksrekursion enth lt so wie im Beispiel dann versucht der Parser von A zun chst nach A abzuleiten um in A wiederum nach A abzuleiten und immer so weiter Der Parser ger t in eine Endlosschleife Grammatiken f r einen pr diktiven Parser m ssen also von Linksrekursion befreit werden Damit vermieden wird dass der Parser bei seinem rekursiven Abstieg in den Syntaxbaum zur ckgesetzt wird muss der Parser an jeder Stelle im Syntaxbaum genau wissen welche Ableitung zu nehmen ist Dies ist der Fall wenn die Grammatik f r jedes eingelesene Zei chen nur eine Ableitung zul sst W rden mehrere Ableitungen zugelassen so m sste der Parser diese Ableitungen nacheinander durchprobieren und bei einem Fehlschlag sowohl 158 KAPITEL 3 GRUPPENERGEBNISSE an diese Stelle im Syntaxbaum als auch im Eingabestrom zur ckgesetzt werden Damit dies nicht passiert muss sichergestellt sein dass f r eine Ableitung niemals zwei od
65. direkt kein automatisches Graph Layouting unterst tzt sondern lediglich einen GraphViz Wrapper darstellt Ein Gra phlayout ist leider nur m glich indem man die integrierten GraphViz Funktionen verwendet das hei t einen Graphen im GraphViz Dot Format exportiert mit Hilfe von GraphViz layouten l sst und dann wieder einl dt Auf Basis dieser Ergebnisse haben wir uns im ersten Schritt dazu entschieden JUNG zu verwenden Es sei aber hier schon einmal vorweggenommen dass wir uns sp ter wieder davon getrennt haben und JUNG durch eine Eigenimplementation siehe 3 6 ersetzt haben Dieses wurde n tig da ein Bearbeiten von Graphen mit JUNG uns vor gr ere Probleme stellte 166 KAPITEL 3 GRUPPENERGEBNISSE 3 4 2 Das Workspacekonzept Bei der Strukturierung des Workspaces bilden folgende Elemente die Hauptkomponenten 1 die Automatenliste 2 die Automatenfenster auf der Arbeitsfl che 3 die Konsole In der Automatenliste werden alle Automaten eines Projektes in einer Baumstruktur untergliedert nach ihrem Automatentyp angezeigt Beim Anlegen eines neuen Automa ten wird dieser in die Baumstruktur eingef gt Hierbei kann es sich um einen neuen Automaten handeln oder um einen Automaten der auf Basis einer Automatenoperati on entstanden ist Um Automatenoperationen durchzuf hren werden Automaten in der Automatenliste markiert und durch Auswahl einer m glichen Operation im Aktionsmen diese dann angewendet Die Operation
66. ein Alphabet Ein un endliches Wort ist eine un endliche Zeichenfolge aus 2 bzw 2 Ein un endlicher Baum t ist ein un endlicher zusammenh ngender gerichteter Graph mit einem Wurzelknoten e jeder andere Knoten hat einen eindeutigen Elternknoten Die Stelligkeit arity v eines Knotens v ist die Zahl der Kinder von v die Tiefe v ist der Abstand zur Wurzel e Sei N eine Teilmenge positiver ganzer Zahlen bzw nat rlicher Zahlen Ein Baum r ber N ist eine Teilmenge von N so dass wenn v se T mit v N i N dann ist v rund es gibt eine Kante von v nach v i und f r i gt 0 gilt ebenfalls v 1 7 Man beachte dass die Konkatenation ausdr ckt Daher ist e die Wurzel eines solchen Baumes Beispiel N 0 1 7 e 0 1 00 01 F r eine Untermenge D C N hei t ein Baum r ber N ein D Baum gdw Vx T arity x D F r eine einelementige Menge D k hei t r uniform und wird als k Baum bezeichnet Ein Baum hei t bl tterlos wenn alle seine Knoten mindestens einen Kindknoten besitzen Somit ist ein unendliches Wort ein bl tterloser 1 Baum Ein un endlicher Zweig 8 vo v ist eine maximale Knotenfolge so dass Vi gt 0 v der Elternknoten von v 1 ist mit vg als Wurzel Ein D beschrifteter Baum ist ein Paar 7 T mit einem Baum 7 und einer zugeh rigen Abbildung T 7 2 die jedem Knoten ein Zeichen aus einem endlichen Alphabet zuweist Ein Zweig von 7 7 de
67. ein Objekt vom Typ PaintableSelectionEvent bermittelt das die Auswahlinformation enth lt Als Anwendungszweck w re denkbar dass die den Editor einbindende Applikation zu einem ausgew hlten Objekt zus tzliche Informationen anzeigt Genutzt wird diese Funktion beispielsweise bei der Anzeige im Property Panel des Workspace siehe 3 5 3 4 3 6 2 4 Klasse LayeredPaintableContainer Die Klasse LayeredPaintableContainer stellt einen Container mit mehreren Ebenen f r Paintable Objekte zur Verf gung Die Klasse wird intern vom Editor benutzt und stellt Methoden zum Hinzuf gen Entfernen und Positionieren von Objekten innerhalb ihrer Ebene zur Verf gung Zus tzlich ist ein Iterator verf gbar der die im Container enthal tenen Objekte in beide Richtungen zur ckliefern kann was einerseits f r die Reihenfolge beim Zeichnen unterste zuerst zeichnen als auch f r das Feststellen von Maus Zielen oberste zuerst pr fen von Bedeutung ist 3 6 2 5 Interface Label und Klasse TextLabel Das Interface Label und die implementierende Klasse TextLabel stellen einen innerhalb des Paintable Frameworks abgesetzten Teil dar Sie bieten einen Standard f r die Imple mentation von Beschriftungen die von innerhalb eines Paintable Objekts genutzt werden kann Nat rlich kann jede Paintable Komponente ihre Beschriftung sofern vorhanden auf ei gene Art und Weise vornehmen Die Verwendung der Klasse TextLabel kann aber eine gro e Vereinfachung dies
68. erzeugt und der Prozess beginnt nun den Programmgraphen von seiner Wurzel an abzuarbeiten An jedem Knoten des Programmgraphen in dem der Prozess seine Arbeit beginnt wird nun ein Knoten in der Kripkestruktur erzeugt Dieser Knoten enth lt zur eindeutigen Be schreibung des Programmablaufs Informationen ber seine Umgebung in der er erzeugt wurde Dazu geh rt z B der Knoten des Programmgraphen als auch Variablenbelegun gen des While Programms Bis zum Ende des Programmfragments wird dieser Schritt wiederholt au er es wird versucht einen Knoten anzulegen der schon in der Kripke struktur existent ist An dem Punkt kann die Prozedur vorzeitig abgebrochen werden Das Resultat ist eine Kripkestruktur die genau einen Programmdurchlauf beschreibt Graphisch dargestellt ist der Prozess in Abbildung 3 3 3 1 5 1 3 1 Erweiterung Die vorher beschriebene Methode ist ausreichend um ge nau einen Programmdurchlauf eines Prozesses zu beschreiben Um einige Grade komplexer wird es wenn mehrere Prozesse parallel laufen und diese sogar noch auf ein und die sel 3 1 TRANSFORMATION 95 ben Variablen zugreifen Dies f hrt dazu dass an Punkten an dem alle oder mehrere Prozesse jeweils eine Anweisung ausf hren k nnten alle M glichkeiten vom Kripkemodell modelliert werden m ssen Es ist nicht Aufgabe einer Modellierungssprache eine bestimmte Prozessreihenfolge vor zugeben 3 1 5 1 4 While Programme While Programme gliedern sich in
69. exponentiell in der L nge der Formel Der Automat repr sentiert genau diejenigen Pfade die die Formel erf llen wobei er sich auf kein spezielles Kripkemodell bezieht Ein und derselbe Automat kann also f r das Checking vieler verschiedener Krip kemodelle verwendet werden Die Implementierung ist eine Realisierung des Algorithmus von Gerth Peled Vardi und Wolper der in dargestellt ist Hier liegt der Schwerpunkt auf den Eigenheiten der Implementierung 3 1 3 1 Das Package aaa translation 1tl Der Code ist im Package aaa translation 1tl zu finden Die Klasse LTLtoBuchiTranslator kann verwendet werden um LTL Formeln in B chiautomaten zu bersetzen IAutomaton und IAutomatonState sind von LTLtoBuchiTranslator benutzte nach au en nicht sichtbare Hilfsklassen LTLBPNode stellt Formelb ume Ausdrucksb ume von LTL Formeln dar Ein weiterer Bestandteil des Package ist KripkeLTLModelChecker ein Model Checker f r das Pr fen von Kripkemodellen mit Formeln der LTL der von LTLtoBuchiTranslator Gebrauch macht Im Zusammenhang mit KripkeLTLModelChecker spielt das Interface LTLPreprocessor eine wichtige Rolle Zur Zeit wird dieses Interface nur von WhileLTLPreprocessor implementiert Die Pr prozessoren haben die Aufgabe sinnvolle Formeln die aber aus technischen Gr nden in ihrer Originalform Fehler verursachen w rden unter Erhaltung der Semantik so zu 88 KAPITEL 3 GRUPPENERGEBNISSE modifizieren dass dies nicht mehr geschieht
70. genau dann gleich sind wenn die besagten Formelmengen bereinstimmen Zum Abschluss l sst der Zwischenautomat den B chiautomaten degeneralisieren 3 1 4 4 Repr sentation von Teilformelmengen Wie die Parametrisierung der Mengen und Listen schon vermuten l sst repr sentiert der Algorithmus eine Teilformel direkt durch die Wurzel ihres LTLBPNode Baums So kann leicht auf ihre Unterformeln zugegriffen werden Da HashSets miteinander verglichen wer den sollte der Test auf syntaktische Gleichheit zweier Teilformeln effizient sein Stellen mehrere B ume syntaktisch quivalente Teilformeln dar so kann der Gleichheitstest nur dadurch erfolgen dass beide B ume komplett durchlaufen werden oder eine Knoten markierung z B String Repr sentation des Teilbaumes oder eindeutiger int f r jede vorkommende Teilformel verwendet wird Stattdessen sieht der hier gew hlte Weg vor dass der Baum der Normalform komprimiert wird bevor ein Zwischenautomat konstruiert wird Die Kompression ergibt sich dadurch dass im Normalform Baum alle Teilb ume die syntaktisch gleiche Teilformeln darstellen durch einen dieser Teilb ume ersetzt werden Alle Referenzen auf einen ersetzten Teilbaum werden auf den verbleibenden Teilbaum dieser Art umgesetzt Das Ergebnis der Kompression ist im Allgemeinen nur noch ein ge richteter azyklischer Graph Dieser stellt jedoch sicher dass zwei unterschiedliche Knoten auch zwei syntaktisch verschiedene Teilformeln repr sent
71. hier der Anwender dar ber informiert Die entsprechende Automatenanalyse kann leider nicht geladen werden bevor dieses Plugin nicht installiert worden ist Alle anderen Automatenanalysen f r die ein Plugin vorhanden ist werden geladen Beim Laden von Automatenanalysen kann es zu Umbenennungen kommen sofern eine Automatenanalyse mit dem angegebenen Namen bereits im Workspace existiert Hierbei wird dem doppelten Eintrag wieder eine Zahl angeh ngt Es ist also empfehlenswert vor dem Laden von Dateien alle anderen Automatenfenster zu schlie en 3 7 6 Speichern M chte man eine oder mehrere Automatenanalysen speichern so geht dieses sehr einfach Zuerst markiert man im Navigator alle Automatenanalysen die man speichern m chte Danach ruft man den Men punkt File Save auf Hier kann man den Speicherort und den Dateinamen festlegen Best tigt man mit OK so werden alle gew hlten Automaten in ein XML Format konvertiert und am angegebenen Ort gespeichert 3 7 7 Operationen und Analysen Um Operationen und Analysen auf einem oder mehreren Automaten ausfiihren zu k nnen m ssen diese zuerst ausgew hlt werden Dies geschieht indem man das Automatenfens ter direkt oder die Eintr ge im Navigator ausw hlt Je nach Auswahl wird dynamisch das Aktionen und Analysemen mit Operationen gef llt Sind keine g ltigen Aktionen verf gbar so sind die entsprechenden Men s ausgegraut 3 7 8 Automateneditor Der Automateneditor dient i
72. interessantes Problem beim Anzeigen von Automaten oder allgemeiner von Gra phen war das Realisieren eines automatischen Layoutings Diese Funktionalit t wurde im 3 6 EDITOR 213 PaintableAutomaton Framework geschaffen dessen wichtigsten Klassen im 3 48 darge stellt sind 3 6 6 1 Interface Layouter Um als Layouter f r das Framework benutzbar zu sein muss eine Klasse das Interface Layouter implementieren Dazu sind vier Methoden zu implementieren die fast alle selbs terkl rend sind public void setAutomaton PaintableAutomaton automaton bergibt dem Layouter den Automaten der zu layouten ist public void setPreferredSize Dimension preferredSize bermittelt dem Layou ter eine bevorzugte Endgr e f r den aus dem Layoutvorgang hervorgehenden Au tomaten public void layout f hrt den Layout Vorgang aus public Action getOptionsAction liefert sofern vom Layouter unterst tzt ein Action Objekt welches zur Anzeige eines Optionsmen s oder hnlichem benutzt werden kann public boolean canLayout PaintableAutomaton automaton liefert zur ck ob der Layouter den bergebenen PaintableAutomaton layouten kann Diese Methode wurde im zweiten Semester hinzugef gt da mit den neu hinzugekommenen spe zialisierten Layoutern erstmals Inkompatibilit ten entstanden So kann z B der OBDD Layouter nur OBBDs layouten und kann mit anderen Automaten nichts anfangen 3 6 6 2 Interface ProgressMonitorable Da das
73. javaz swing JInternalFrame Objekte Ihre Aufgabe besteht darin Transformations und Analyseergebnisse anzuzeigen Dazu verf gt ein InnerFrame ber eine geordnete Tabstruktur abgeleitet von javaz swing JTabbedPane ProjectPanel Auf der DesktopPane k nnen eine Vielzahl von InnerFrames er zeugt werden Das ProjectPanel dient zur strukturierten Anzeige aller vom Benutzer erzeugten InnerFrames Die Strukturierung erfolgt nach Typ des Automatenergebnisses Das ProjectPanel erf llt au erdem die Aufgabe ein Fenster schneller aufzufinden und Automaten markieren zu k nnen um auf diese Operation anzuwenden Beim ProjektPanel handelt es sich um ein javaz swing JTree Objekt Dieser JTree ist so programmiert dass ein Baum der Tiefe drei entsteht Die Wurzel des Baums bildet der aktuelle Projektna me Unter der Wurzel gibt es Verzweigungsknoten die die Strukturierung der Innerframes nach Automatentypen leisten Auf der Blattebene entsteht pro In nerframe ein Knoten mit Innerframebezeichnung Diese Strukturierung ist im Package aaa workspace gui projecttree ProjectTree implementiert Console Die Klasse Console ist eine Eigenentwicklung die es m glich macht alle aus gef hrten Aktionen Fehlermeldungen und Informationen vom Workspace zu do kumentieren und anzuzeigen Dabei ist die Konsole so einfach zu verwenden wie ein System out PrintStream Sie ist zus tzlich noch mit drei weiteren Funktionen ausgestattet Zum einen kann der Inhalt
74. jede Methode einen eigenen Programmgraphen 2 Erzeuge eine Variablenumgebung envjnit 3 Erzeuge einen Kontext der die Methode INIT unter einer Kopie von envnit ausf hrt 4 F r jeden Kontext c 4 1 Wenn cn mit n gt 1 Prozesse verwaltet klone c n 1 mal Jeder der n Kontexte f hrt einen anderen Prozess als n chstes aus 5 F r jeden Kontext c 5 1 Lasse jeden Kontext c Algorithmus 5 ausf hren 6 F r jeden Kontext c 6 1 Entferne Kontext c falls c terminiert hat 7 Ist die Anzahl laufender Kontexte ungleich null gehe zu 4 Algorithmus 4 Sandbox 3 1 5 1 5 2 Kontext Ein Kontext verwaltet e Fine eigene Variablenumgebung laufende Prozesse innerhalb des Kontexts Indikator welcher Prozess als n chstes ausgef hrt wird Knoten ky im Kripke Modell der zuletzt erzeugt wurde 100 KAPITEL 3 GRUPPENERGEBNISSE Init 344 proc 341 fsdf 934 Kripke Modell Prozess Abbildung 3 6 Ablauf 3 1 TRANSFORMATION 101 St if b S2 S3 else S4 S5 ED i o S6 AQ 52 o b true O S3 O Programmgraphknoten S6 p Ausf hrungspfad Abbildung 3 7 If Ausf hrung Der Algorithmus der abgearbeitet wird entspricht diesen Punkten 1 Lasse den zugewiesenen Prozess laufen Speichere alle Programmgraphknoten die der Prozess durchl uft falls er nicht sofort blockt oder terminiert Erzeuge ggf neue Prozesse w
75. jeder 2 1 AUTOMATENMODELLE 27 zuk nftige Zeitpunkt einer Berechnung eine eindeutige m gliche Zukunft In der verzwei genden Temporallogik CTL computational tree logic kann sich vereinfacht dargestellt ein Zeitpunkt dagegen verzweigen es ist nicht mehr nur eine lineare Berechnung wie bei LTL Beide Typen lassen sich mit der Theorie von Automaten auf unendlichen W rtern bzw auf unendlichen B umen verbinden die genau alle Berechnungen akzeptieren f r die eine Formel gilt 2 1 3 2 1 Lineare Temporallogik LTL Eine LTL Formel y wird induktiv ber einer Menge Prop von Atomen gebildet y kann eine atomare Formel sein Oder wenn yy und y LTL Formeln sind dann sind p und y A y sowie Xy und y Up ebenfalls LTL Formeln X und U sind dabei un re bzw bin re Temporalkonnektoren LTL Formeln werden ber Berechnungen interpretiert Eine Berechnung ist eine Funktion 7 w 2 die zu einem gegebenen Zeitpunkt den Atomen aus Prop Wahrheitswerte zuordnet Eine LTL Formel y gilt in einer Berechnung zum Zeitpunkt i w 7 1 E y gdw e n i p mit pe Prop gdw p x t e mi FOND gdw 7 1 Found mi Y e m i 6 gdw 7 1 6 gilt nicht e 7 1 Xo gdw mi 1 0 e 7 1 F9UY gdw Jj gt i 7 7 Y und Vk i lt k lt j k Eo y gilt in einer Berechnung 7 notiert als 7 py gdw 7 0 gilt Ein Programm P ber einer Menge von Atomen ist ein Tupe
76. man auch die Bitvektoren des bisherigen Alpha bets sequentiell einliest Jeder Zustand wird dann durch eine Art Entscheidungsdiagramm OBDD ersetzt Dadurch erh ht sich zwar die Zahl der Zust nde aber nicht so stark wie die Zahl der Transitionen sinkt Die Projektion beliebiger Bits sollte einfacher werden genauso wie die kompakte Produkt Automaten Konstruktion und die Alphabetsanglei chung 3 1 2 3 5 Parallelisierung von Berechnungen Das Verfahren ist sehr rechenin tensiv d rfte aber auch gut parallelisierbar sein Unabh ngige Zweige des Baums k nnen unabh ngig voneinander berechnet werden Eine andere M glichkeit bei der allerdings mehrere Threads gleichzeitig auf demselben Automaten arbeiten ist das Alphabet bei Anwendung des herk mmlichen Verfahrens auf die Threads aufzuteilen Der erste Thread ist zum Beispiel nur f r den Teil 000000 011111 zust ndig w hrend sich ein zweiter Thread um 100000 111111 k mmert Es ist zu berlegen ob das Verfahren nicht gleich als verteiltes System auszulegen ist Aber auch beim Einsatz auf einzelnen PCs wird Parallelisierung angesichts der auf dem Vormarsch befindlichen Multi Core CPUs immer wichtiger 3 1 3 Model Checking von Kripkemodellen mit LTL Formeln Eines der Teilziele der PG im zweiten Semester bestand darin dem Triple A Framework Features hinzuzuf gen die das Model Checking von Kripkemodellen mit Formeln der Linear Temporal Logic LTL auf m glichst effiz
77. mit einem Buttonklick in die Zwischenab lage kopiert werden die Konsole kann gel scht werden und als besonderes Feature kann das Scrollen in der Konsole aktiviert oder deaktiviert werden Das heisst man kann bestimmen ob die Konsole bei neuen Eintr gen automatisch scrollt oder an ihrer aktuellen Position verweilt Die Konsole ist ein javaz swing JPanel in dem eine javaz swing JTextArea eingebunden ist In diese Jjavaz swing JTextArea kann ber den PrintStream Console out einfach ein Eintrag hinzugef gt werden TextEntryPanel Um eine Transformation einer Eingabe durchzuf hren bietet die 170 KAPITEL 3 GRUPPENERGEBNISSE B Ge BE creating new automaton out of following representation 12 y 13 2 11 g 231 Z 22 12 13 11 g 231 Z 22 ToggleAutoScrollAction Console From Console Attributes ic Prints Operations Operations E q public Console public void clear public void setEnabled boolean enabled pu int getMaxCharsHard CopyAction From Console ClearAction From Console Attributes i popupListener MouseHandler From Console TextAreaOutputStream From Console Attributes Abbildung 3 27 Die Klasse Console Klasse TextEntryPanel eine komfortable M glichkeit Es besteht aus drei Kom ponenten Es kann eine Buttonleiste mit Sonderzeichen gef llt werden
78. n in der n i 1 ten Komponente den Namen der Variablen bereith lt auf deren Wert sich die Position i bezieht Die Umkehrung der Indizes h ngt damit zu sammen dass die Bitvektor Darstellung als 0 1 String wie blich absteigend von links 80 KAPITEL 3 GRUPPENERGEBNISSE nach rechts durchnummeriert ist n 1 0 Desweiteren ist die Registrierung und Deregistrierung von Listenern m glich 3 1 2 1 2 PresburgerAtom PresburgerAtom berechnet f r einen im Konstruktor bergebenen Ausdrucksbaum eines Atoms eine Normalform f r das Atom Variablenhal tige Terme werden auf die linke Seite gebracht und rechts steht nur ein konstanter Term Die linke Seite wird durch ein int Array der Koeffizienten und ein String Array der zu geh rigen Variablen die rechte Seite durch einen int repr sentiert Diese Daten k nnen nach der Erzeugung des PresburgerAtoms mit den passenden Methoden abgerufen wer den Die Methode isEquation liefert genau dann true zur ck wenn das Atom eine Gleichung ist Bei Ungleichungen ist das zwischen der linken und rechten Seite stehende Relationszeichen implizit lt Die toString Methode gibt die Normalform als String zur ck wobei die Terme immer durch verbunden sind Im Unterschied dazu wird im von toBeautifulString gelieferten String vor negativen Koeffizienten ein bin res eingesetzt Die Atom Normalisierung wurde in die Klasse PresburgerAtom ausgelagert weil sie naturgem ein recht eigenst
79. ndiger Schritt ist der bis auf den Teilbaum keine weiteren Informationen ben tigt 3 1 2 1 3 PresburgerBPNode Intern arbeitet PresburgerToDFATranslator nur mit aus PresburgerBPNode Instanzen zusammengesetzten Ausdrucksb umen PresburgerBPNode ist eine Unterklasse von BPNode und erbt die in Abschnitt 3 1 1 aufgez hlten grunds tzlichen Vorteile der Oberklasse Zus tzlich gibt es zwei Attribute zur Referenzierung von endlichen Automaten und PresburgerAtomen Die spezialisierte toString Methode stellt Quantoren korrekt dar und verwendet f r Knoten die die Wurzel eines Atoms sind und ein PresburgerAtom referenzieren dessen Methode toBeautifulString PresburgerBPNode enth lt Methoden wie isEx und isNot um den Typ ohne Angabe von Literalen ermitteln zu k nnen Au erdem gibt es Methoden wie makeEx und makeNot die die Festlegung des Typs ohne Angabe von Literalen erm glichen Bei Syntax nderungen der Presburger Formeln muss also nur PresburgerBPNode angepasst werden Werden auch Zwischenergebnisse gespei chert so wird jeder Zwischenautomat in dem Knoten der Normalform gespeichert f r den er berechnet worden ist Die Normalform enth lt in den Pr dikatsknoten stets PresburgerAtome Die Variablenordnung der Automaten ist direkt aus deren AssignmentAlphabeten ersichtlich 3 1 2 1 4 PresburgerToDFATranslatorListener Wenn sich ein Objekt bei PresburgerToDFATranslator als Listener registrieren m chte muss seine Klasse das Int
80. nicht klar verst ndlich werden Es gibt keine Funktion die eine berf hrung eines NFA Automaten in ein DFA Automaten erm glicht Als einzige positive Neuerung bleibt die Implementierung eines ChangeListeners zu nennen die es m glich macht alle Aktionen in einem Automaten zu berwachen 2 4 2 4 JAT Das Java Automata Toolkit bildet die Basis f r das Automaten Tool Java Computa bility Toolkit und wurde 1997 von Matthew B Robinson am Department of Computer Science SUNY Institute of Technology f r Java 1 2 entwickelt Die Bibliothek erm glicht das Arbeiten mit DFA NFA Automaten regul ren Ausdr cken und Turingmaschinen auf die ich in der weiteren Ausarbeitung aber nicht n her eingehen werden 2 4 EXISTIERENDE L SUNGEN 61 Funktionsumfang Wie in den bisher besprochenen Bibliotheken lassen sich auch hier Automaten auf zwei Arten modellieren Zum einen kann man einen Automaten durch explizite Angabe der Zust nde und Zustands bergangsfunktion modellieren Die zweite M glichkeit stellt eine Modellierung eines Automaten durch die Angabe eines regul ren Ausdrucks dar Automat Automaten im System k nnen unter Zuhilfenahme folgender Funktionalit ten ver ndert und bearbeitet werden Komplement Produktsprache Quotientenspra che Minimierung von Automaten Vereinigung von Automaten Vergleich von Au tomaten Konvertieren eines NFA Automaten in einen DFA Automaten Fazit Der gr te Kritikpunkt an JAT ist die I
81. nur 4k Zust nde falls der Automat A k Zust nde haben sollte 44 KAPITEL 2 SEMINARPHASE 2 3 Analyse mit Automaten 2 3 1 Erf llbarkeitspr fung von Formeln der Presburger Arithmetik mit Hilfe endlicher deterministischer Automa ten Die Presburger Arithmetik erlaubt es Gleichungen und Ungleichungen ber ganzzah ligen Variablen durch Boolesche Operatoren und Quantoren zu verkn pfen Jede der beiden Seiten einer Gleichung oder Ungleichung ist eine aus Variablen und konstanten Werten gebildete Summe wobei die Variablen beliebige konstante Koeffizienten besitzen d rfen Wichtig ist dass die Presburger Arithmetik aus Gr nden der Entscheidbarkeit mit Ausnahme der Variablenkoeffizienten keine Multiplikationen erm glicht Terme wie z B 3 21 za sind also syntaktisch nicht korrekt Als Boolesche Operatoren stehen A V und zur Verf gung au erdem gibt es die Quantoren 3 und VY Die Quantoren bezie hen sich auf einzelne Variablen Das hier dargestellte Verfahren zur Erf llbarkeitspr fung wurde entnommen 2 3 1 1 Presburger Arithmetik Die folgende Grammatik gibt die exakte Syntax an F ATOM F F V F FAF YV F 3V F F e ATOM T RT T L VT T T T L V e Ri lt gt Els e V small Alpha V small Alpha V digit small Alpha a z digit 0 9 e L ganze Zahlen positive negative 0 Gleichungen und Ungleichungen werden als Atome bezeichnet obwohl sie i
82. sind Als Beispiel steht das Stylesheet mkdot xs1 zur Verf gung das Textdateien im dot Format erzeugen kann Der gesamte Transformationsprozess von einem Automaten ber XML nach dot kann durch Aufruf der Methode Automaton Serializer saveAsDot Automaton String angesto en werden 3 2 1 8 2 dk Brics Die Automatenbibliothek dk brics ist eine offene Automatenbi bliothek die durch ihre Einfachheit und Kompaktheit zu berzeugen wei Alle grundle genden Operationen f r endliche Automaten werden angeboten Daher bietet die AAA Automatenbibliothek f r diese Bibliothek eine Import und eine Exportfunktion an Bei der Entwicklung dieser Automatenbibliothek hat es sich bei der Fehleranalyse mehr mals als n tzlich erwiesen die berechneten Ergebnisse von Operationen mit denen von dk brics vergleichen zu k nnen 3 2 1 3 3 Nutzung Im Paket aaa automaton util befindet sich eine Klasse AutomatonUtilities mit mehreren hilfreichen Funktionen Die Verwendung der Import und Exportfunktionen f r dk brics ist denkbar einfach gehalten Mittels eines einfachen statischen Imports import static aaa automaton util AutomatonUtilities lassen sich die Funktionen sofort nutzen e aaa automaton FiniteAutomaton importBric dk brics automaton Automaton e dk brics automaton Automaton exportToBrics aaa automaton Finite Automaton 122 KAPITEL 3 GRUPPENERGEBNISSE dienen dazu ein Automatenobjekt aus der einen Bibliothek in ein Automateno
83. tzlich zum Preprocessing negiert Das Modell besteht die Pr fung genau dann wenn der Schnitt der beiden B chiautomaten leer ist Dieser Interpretations Modus ist voreingestellt Ist das Flag dagegen nicht gesetzt so geht der Model Checker davon aus dass das Kripkemodell die Formel nicht erf llen soll und unterl sst die Ne gation der LTL Formel Wieder besteht das Modell die Pr fung genau dann wenn der Schnitt leer ist Ob der Schnittautomat tats chlich konstruiert wird h ngt von einem weiteren Flag ab Standardm ig wird er nicht konstruiert denn in der Regel gen gt dem Anwender ein einziges Gegenbeispiel BuchiAutomaton bietet eine Metho de findCommonWord BuchiAutomaton an die die beiden B chiautomaten parallel durchl uft und ein gemeinsames Wort zur ckgibt sobald sie eines findet Eine hnliche Methode liefert den passenden Pfad im Automaten f r den die Methode aufgerufen wor den ist Diese Methode wird vom Model Checker auf dem Automaten aufgerufen der f r das Kripkemodell berechnet wurde um ein Gegenbeispiel zu erhalten Wegen der oben an gesprochenen strukturellen Gleichheit von Modell und Automat existiert der so erhaltene Pfad auch im Modell und ist damit aussagekr ftig 3 1 TRANSFORMATION 89 Es ist als realistisch einzusch tzen dass der Benutzer seine Anforderungen an ein Modell als eine Menge von wenigen bis vielen Formeln formuliert und jede Anforderung ein zeln berpr fen l sst anstatt alle Forme
84. versuchen Verteilt man zun chst die Knoten zuf llig und simuliert dann den oben skizzierten Pro zess so stellt sich nach einer gewissen Anzahl von Iterationen ein Zustand nicht not wendigerweise globaler Gesamtkr fte ein Der so erzeugte Endzustand erf llt zumindest ann hernd folgende Eigenschaften e gleichverteilte Knoten e gleiche Kantenl ngen e Wiederspiegelung von Symmetrien im Graphen Der Algorithmus enth lt keinerlei Mechanismen zur m glichst planaren Darstellung von Graphen so dass das Ziel der weitestgehend kreuzungsfreien Darstellung von Kanten nicht immer erreicht wird Die Algorithmenerzeugnisse sind jedoch sofern eine gewisse ohnehin als un bersichtlich zu betrachtende Anzahl von Knoten und Kanten nicht berschritten wird durchaus als sthetisch zumindest aber als lesbar zu bezeichnen 3 6 6 3 1 Kr ftegleichgewicht Sei k die als optimal angesehene Kantenl nge und d die Distanz zweier Knoten dann ist f d d k die Anziehungskraft die eine Kante auf ihre inzidenten Knoten aus bt und f d k d die Absto ungskraft welche zwei beliebige Knoten jeweils zueinander aus ben Setzt man beide Kr fte gleich so erh lt man ein Gleichgewicht bei der Distanz d k Fruchterman und Reingold empfehlen als ein sinnvolles k den Wert k C me wobei hoehe und breite die gew nschten Dimensionen der Zeichenfl che und C eine experimentell zu bestimmende Konstante darstellen Bei eigenen Experime
85. von A nach B kann ausgel st werden von allen Zeichen im Schnitt der Symbolmengen mit denen die Transitionen markiert sind die im Originalautomaten in A beginnen und die einen Zustand in B erreichen In den Symbol mengen der brigen in A startenden Transitionen darf kein Zeichen vorkommen das sich in diesem Schnitt befindet Es ist also algorithmisch zu analysieren wie solche Schnittmengen aussehen und es sind entsprechende Transitionen auszugeben Die abstrakte Klasse TransitionAnalyzer stellt eine allgemeine Schnittstelle f r solche Transitionsanalysen zur Verf gung Die Eingabe ist eine Menge von Transitionen die Ausgabe ist formatiert als Liste von Objekten des Typs TransitionAnalyzer SharedTransition Ein solches Objekt referenziert eine Menge M von Startzust nden eine Menge M von erreichten Zust nden und ein Trigger Objekt das genau die gemeinsamen Zeichen der Transitionen von M nach M enth lt Eine m gliche Darstellung von Symbolmengen sind Intervalle SymbolRanges In Abbil dung 3 11 ist ein einfaches Beispiel dargestellt Hier sind die in S g0 q2 startenden Transitionen des Potenzmengenautomaten zu berechnen Von qo startet eine Transition nach q von q2 starten Transitionen nach q3 und q4 Die Transitionen sind als Linien dargestellt auf denen graue Rechtecke liegen die den Symbolintervallen entsprechen die 3 2 AUTOMATEN 125 Abbildung 3 11 Situation bei der Potenzmengenkonstruktion die Trans
86. wird auf das Vorliegen einer Disjunktion gepr ft Der Parser berpr ft zuerst die am st rksten bindende Operation den Kleeneschen Abschluss dann die Konkatenation und zum Schluss die am schw chsten bindende Operation die Disjunktion Auf diese Weise spiegelt die Grammatik die Bindung der Operationen wider Da wir nun auch w regul re Ausdr cke ableiten wollen erweiterten wir die Grammatik um das Terminalsymbol w Da das w ein unendlicher Kleenescher Abschluss ist bindet es genauso stark wie dieser Die Grammatik wird also in der Ableitung D um die Produktion w erweitert D sieht nun so aus Du oxl Il lule 160 KAPITEL 3 GRUPPENERGEBNISSE RegularExpressionParser rep new RegularExpressionParser try 4 PNode rep_root rep parse alb abb catch ParseException pe Abbildung 3 21 Verwendung des Parsers f r regul re Ausdr cke Die so erweiterte Grammatik erlaubt allerdings unsinnige Ausdr cke denn sie erlaubt dass der Ausdruck nach einem w abgeschlossenen Teil weiter geht so dass nachdem etwas Unendliches eingelesen wurde weiteres eingelesen werden kann Um nun dieses Problem in der Grammatik zu behandeln h tte diese wesentlich umgestellt werden m ssen F r die regul ren Ausdr cke wurde ein pr diktiver Parser der ohne R cksetzen aus kommt implementiert Dieser Parser Typ arbeitet mit Grammatiken die frei von Links Rekursionen sind Wie die meisten von Hand gesc
87. wird der Start zustand an den linken Rand geschoben und anschlie end alle Zust nde gleicher Ebene in Spalten nach rechts gehend angeordnet 3 6 6 7 Partitions Layouter Die Klasse PartitionedLayouter wurde vom Automaten Team entwickelt und ordnet Zust nde horizontal nach ihrer Partitionszahl an Die Partitionszahl wird dabei dem La bel der Zustands Objekte entnommen und muss durch ein Integer Objekt repr sentiert werden Anwendung kann dieser Layouter zum Beispiel bei der Darstellung von degene ralisierten B chiautomaten finden 218 KAPITEL 3 GRUPPENERGEBNISSE 3 7 Handbuch Ein wichtiger Punkt dieser Projektgruppe war es eine Benutzeroberfl che zu schaffen die dazu dient die Bedienung verst ndlicher einfacher und effektiver zu machen Dieses Handbuch behandelt diese graphische Benutzeroberfl che der Projektgruppe Es gibt eine umfassende bersicht ber die Funktionen und eine Einf hrung in alle Verfahren die im Umgang mit dem Workspace erforderlich sind An dieser Stelle sei darauf hingewiesen dass hier keine theoretischen Grundlagen der Automaten oder Analyseverfahren erkl rt werden Diese befinden sich an anderer Stelle im Endbericht Console Initialize Addon Regular Expression Plugin Initialize Addon While Plugin triple A Workspace started Have fun Abbildung 3 49 Triple A Workspace 3 7 1 Der Workspace Uberblick In der Abbildung 3 49 sieht man die Grundelemente des Workspace
88. wird f r jede Variable x eine Liste aufgebaut die alle Knoten enth lt die mit x markiert sind Die Knoten werden in der Liste gem ihrer Nachfolger sortiert so dass Knoten auf die die Merging Rule anwendbar ist in der Liste benachbart sind Es gen gt die sortierte Liste einmal zu durchlaufen um alle 3 2 AUTOMATEN 133 Verschmelzungen von mit x markierten Knoten durchzuf hren Nachdem alle Repr sentanten berechnet wurden wird ein neues OBDD aufgebaut das f r jeden Repr sentanten nur einen Knoten enth lt Die Reduzierung wird in der Automatenbibliothek durch die Klasse aaa automaton operation obdd Reducer realisiert und kann durch die Methode reduce in der Klasse aaa automaton implementation obdd aufgerufen werden 3 2 4 2 Synthese Die Synthese Operation erm glicht es zwei OBDDs durch einen Booleschen Operator zu verkn pfen Seien Ga und G zwei OBDDs die mit dem Operator verkn pft werden sollen Die Idee ist nun folgende f r eine Eingabe x 0 1 werden G und G parallel durchlaufen und an den Senken die beiden Funktionswerte a x und b x durch den Operator verkn pft Es wird davon ausgegangen dass die beiden OBDDs die gleiche Variablenordnung t n besitzen wobei anzumerken ist dass nicht notwendigerweise in beiden jede Variable auf allen Pfaden getestet werden muss Die Berechnung startet an den Quellen und man kann sich vorstellen dass ein Zeiger auf den aktuellen Knoten va
89. zur n chsttieferen entspricht genau einem Schritt Die Kanten sind mit den passenden Zeichen beschriftet Alle Bl tter haben dieselbe Tiefe S mtliche von derselben Ebene ausgehenden Kanten tragen auch dieselbe Beschriftung Jeder Pfad von der Wurzel zu einem Blatt ist mit w beschriftet Der Lauf ist genau dann akzeptierend wenn alle Bl tter Elemente von F sind 2 2 1 3 Vorg nger Berechnung f r Alternierende Pushdown Systeme Das Verfahren l uft fast genauso ab wie das f r PDS beschriebene Die induktive Kon struktion der Folge Y basiert dabei auf der Regel dit SU sh Di P UU Pa PD A oo Pa 38 KAPITEL 2 SEMINARPHASE 2 2 2 Statische Programmanalyse Das Ziel der statischen Programmanalyse ist es Wertebereiche von Variablen oder das Verhalten eines Programms zur Laufzeit approximativ zu berechnen Die Programmana lyse findet zur Compile Zeit statt weshalb sie statisch genannt wird Ihr Ziel ist es die Voraussagen so pr zise wie m glich und so sicher wie n tig zu treffen Diese approxima tiv berechneten Voraussagen sollten allerdings so aussagekr ftig sein dass mit ihrer Hilfe zur Compile Zeit n tzliche Entscheidungen getroffen werden k nnen Z B ist es n tzlich zu wissen dass eine Variable nur Werte zwischen 0 und 120 annimmt um ihr den Typ Byte statt Integer zuzuordnen oder im Fall einer getypten Sprache sicher zu sein dass diese Variable nicht berlaufen wird Ein Anwendungsgebiet der Programmanalyse i
90. 3 Y wird ab jetzt stati on r X dagegen nie Es ist X p Y yaYys p V473 U pl yirs 0 lt j lt i 2 f r alle i gt 2 2 2 1 5 Algorithmen f r das Model Checking Die oben vorgestellte Technik erlaubt den Entwurf eines neuen Algorithmus f r das Model Checking von Pushdown Systemen mit Linear Time Temporallogiken Der Algorithmus konstruiert einen B chiautomaten und reduziert das Problem auf akzeptierende L ufe Das Problem der akzeptierenden L ufe wird mit Hilfe der Vorg nger Berechnung f r PDS gel st Als Ergebnis erh lt man die Menge aller Konfigurationen die die gegebene Formel erf llen Um auch neue Algorithmen f r das Model Checking von Pushdown Systemen mit Branching Time Temporallogiken entwerfen zu k nnen wird eine Verallgemeinerung der vorgestellten Vorg nger Berechnung auf Alternierende Pushdown Systeme APDS und Alternierende Multi Automaten AMA vorgenommen Dem gegebenen PDS wird dann ein passender APDS zugeordnet und s mtliche Mengen werden durch AMA dargestellt Je nach verwendeter Logik sind v llig verschiedene Algorithmen notwendig die aber alle von einer polynomiellen Zahl von pre Berechnungen f r das APDS Gebrauch machen 2 2 1 6 Alternierende Pushdown Systeme APDS Ein Alternierendes Pushdown System APDS ist wieder ein Tripel P P T A wobei P und T wie bei PDS definiert sind A ist aber hier eine Funktion mit dem Definitions bereich P x I Die Menge der negationsfreien Boo
91. 3 22 Disjunktion von zwei regul ren Ausdr cken Die beiden alternativen Zweige des Ableitungsbaums werden mit Transitionen einge bunden 3 3 4 2 3 Literal Ein Literal erzeugt eine Transition mit dem Literal als Trigger 3 3 4 2 4 Kleenescher Abschluss Die resultierende Konstruktion sieht etwas so aus Es wird ein neuer Zustand eingef gt Zwischen dem Anfangszustand und dem neuen Zustand wird der Zweig des Ableitungsbaums eingef gt Entgegengesetzt dazu verl uft 162 KAPITEL 3 GRUPPENERGEBNISSE Zweig E BUD Abbildung 3 23 Kleenescher Abschluss von einem regul ren Ausdruck eine e Transition Au erdem wird der Anfangsknoten noch mit dem Endknoten mit einer e Transition verbunden 3 3 4 2 5 w Abschluss Der w Abschluss ist dem Kleeneschen Abschluss sehr hnlich Es gibt nur 2 Unterschiede Erstens unterscheidet sich die Semantik Der Kleenesche Ab schlu einer Sprache ist zwar eine beliebig h ufige auch nullfache aber nicht unendliche Konkatenation Zweitens muss der w Abschluss einen akzeptierenden Zustand beinhalten Zweig Abbildung 3 24 w Abschlu von einem regul ren Ausdruck Wenn die Klasse ThompsonConstruktion beim Konstruktor einen String statt einem Ab leitungsbaum bergeben bekommt dann ruft sie den passenden Parser auf Um die Frage nach dem Typ des Ausdrucks zu kl ren wird der Ausdrucksstring nach dem w Zeichen durchsucht Nachdem der Ausdruck in einen passenden Automaten transformiert wu
92. 3 5 5 7 Package aaa workspace plugin finiteautomatonplugin Die Klasse FiniteAutomatonPlugin Dies ist die Hauptklasse des Plugins f r endliche Automaten und implementiert alle im Plugin kennengelernten Methoden Wir geben hier einen kurzen berblick der Funktionsweise Men s f llen Bei Auswahl nderungen wird das Plugin dar ber infor miert und ruft die Methode updateMenus auf Diese pr ft ber checkSelectedFrames ob das Plugin f r einen markierten InnerFrame ver antwortlich ist Wenn ja dann wird dem GenericOperationDriver eine Lis te aller ausgew hlten Automaten bergeben Dieser liefert eine Liste aller 3 5 DER WORKSPACE STAND JULI 2006 191 Plugins GenericOperationDriver Plugin Pluginmanager Finiteautomatonplugin Regularexpressionplugin FiniteAutomatonPlugin RegularExpressionPlugin FiniteAutomatonPluginSerializer RegularExpressionSerializer PluginData RegularExpressionData FiniteAutomatonColorizer addon xml FiniteAutomatonFindMembersPanel Presturgerpiugin FiniteAutomatonBitVectorRunPanel PresburgerPlugin FiniteAutomatonCharacterRunPanel PresburgerPlugins nializer ad on xmi PresburgerPluginData Im i addon xml Abbildung 3 34 Klassenstruktur aller Plugins f r endliche Automaten 192 KAPITEL 3 GRUPPENERGEBNISSE g ltigen Automatenoperationen zur ck welche ber AutomatonAction in den
93. 3 sagt aus dass auf allen in q startenden Pfaden F gilt bis F gt gilt F r die ersten Zust nde eines jeden Pfades gilt also F Der erste Zustand der F nicht mehr erf llt muss F gt erf llen Es ist nicht spezifiziert was anschlie end passiert Es ist erlaubt dass F auf einem Pfad immer gilt aber F muss auf jedem Pfad irgendwann einmal erf llt sein Die Formel ist in q auch dann erf llt wenn F gt bereits in q wahr ist Die Erf lltheit von F ist in diesem Fall unerheblich 3 7 10 1 11 Release Operator R Eine Formel Fi RF ist genau dann erf llt wenn auf allen in q startenden Pfaden F gt stets erf llt ist bis zu dem Punkt an dem sowohl 3 7 HANDBUCH 233 F als auch Fa gelten Was danach geschieht ist nicht spezifiziert Der Zeitpunkt der gemeinsamen Erf lltheit von F und Fa muss nicht eintreten 3 7 10 2 Operationen Es stehen die f r B chiautomaten blichen Operationen im Action Men zur Verf gung Dies sind f r einzelne Automaten insbesondere das Generalisieren und De generalisieren und bei mehreren ausgew hlten Automaten das Schneiden und Vereinigen 3 7 11 Kripke Plugin 3 7 11 1 Eingabe Die Eingabe von Kripkemodellen erfolgt im Gegensatz zu den meisten anderen Plugins nicht ber die Eingabe einer Formel sondern durch direktes Zeichnen im Editor Direkt nach Starten des Plugins erscheint ein Dialog zur Eingabe der vom Kripkemodell abgedeckten Propositionen ber das Textfeld und die beid
94. 35 Die wichtigsten Klassen und Methoden des Paintable Frameworks Zur Visualisierung von Komponenten im Editor wurde auf keine bestehende Implemen tation eines graphischen Systems fiir Java zuriickgegriffen Stattdessen wurde ein eigenes System das Paintable Framework geschaffen Dieses nutzt das Standard Java Package java awt und verwendet die ebenfalls bekannten Klassen des javax swing Packages nur als Schnittstelle in Form von Panels welche in eine Zielanwendung eingebaut werden k nnen Die wichtigsten Klassen und Methoden sieht man in Abbildung 3 35 Im Sinne der Lesbarkeit werden nicht alle Methoden und Attribute dargestellt Die API Dokumentation die nicht Teil dieses Dokumentes ist ist jedoch vollst ndiger 3 6 2 1 Interface Paintable Ein Objekt dass im Paintable Framework gezeichnet werden soll muss von einer Klasse erzeugt worden sein die das Interface Paintable implementiert Dieses Interface verlangt 198 KAPITEL 3 GRUPPENERGEBNISSE vom Objekt sich selbst ber die Methode paint zeichnen zu k nnen Dar ber hinaus bietet es Schnittstellen zur Mausansteuerung Im folgenden werden die wichtigsten Me thoden kurz erkl rt F r eine umfassende Erl uterung sei auf die API Dokumentation verwiesen 3 6 2 1 1 public void paint Graphics2D g Diese Methode wird vom Editor auf gerufen wenn sich das Objekt selbst zeichnen soll Das bergebene Objekt g des Typs Graphics2D stammt aus dem Java AWT Package und ist somit durch j
95. 4 Die Konsole Console Per NOT TTS SOUT GOTT rag Initialize Addon Regular Expression Plugin Initialize Addon While Plugin Triple A Workspace started Have fun Abbildung 3 52 Die Konsole Die Konsole zeigt einige ausgef hrte Aktionen Fehlermeldungen und Informationen vom Workspace an Hier wird z B beim Start des Workspace angezeigt welche Plugins instal liert worden sind Die Konsole ist mit drei Aktionen ausgestattet Siehe Abbildung 3 52 die von links nach rechts folgende Funktion erf llen e Mit der ersten Schaltfl che kann der aktuelle Inhalt der Konsole in die Zwischenab lage kopiert werden e ber diese Sch ltfl che wird der gesamte Inhalt der Konsole gel scht e Normalerweise scrollt die Konsole bei jedem neuen Eintrag in ihr automatisch mit Diese Funktion kann ber den dritten Button ausgeschaltet oder eingeschaltet wer den 3 7 5 Laden Liegen gespeicherte Automatenanalysen vor so k nnen diese ber den Men punkt File Load wieder eingeladen werden Hierzu w hlt man in einem Dateidialog die XML Datei aus die man laden m chte Sollte die angegebene XML Datei ein fehlerhaftes Format haben oder besch digt sein so wird eine Fehlermeldung ausgegeben 222 KAPITEL 3 GRUPPENERGEBNISSE Ist die XML Datei g ltig so werden alle gespeicherten Automatenanalysen eingeladen Ist in der Datei eine Automatenanalyse mit einem unbekannten Plugin gespeichert worden so wird auch
96. 41 Tats chlich erh lt man sogar die kleinste L sung denn angenommen RD ist eine andere L sung d h es gilt D RD dann l sst sich mit einer vollst ndigen Induktion zeigen dass F 9 E RD Dies gilt auch dann wenn RD die kleinste L sung ist Da die L sung F 0 beinhaltet also die kleinste Menge von Reaching Definitions welche konsistent mit unserem Programm sind erh lt man eine L sung die den Anforderungen gen gt Man k nnte zwar weitere Paare hinzunehmen ohne dass die L sung inkonsistent zu dem Programm wird aber dies steht im Widerspruch zu dem Grundsatz dass die L sung so pr zise wie m glich und so sicher wie n tig sein soll Um die Berechnung nun zu automatisieren kann man den folgenden einfachen nichtde terministischen Algorithmus verwenden Initialisierung RD 0 d h RD is RD Iteration while es gibt ein j so dass RD F RD RDan do RD gt F RD PER RDs Der Algorithmus startet mit dem Nullvektor und wendet dann solange die rechte Seite einer Gleichung auf die linke an bis der kleinste Fixpunkt von F erreicht ist 2 2 3 Erreichbarkeitsanalyse paralleler Prozesse mit Baumauto maten Ein Eingabealphabet ist eine endliche Menge F von Symbolen mit einer Stelligkeits funktion y F N Die Unterteilung von F ist nach der Stelligkeit dargestellt F FHUJF UF23U T F bezeichnet die Menge von Termen ber F Elemente von 7 F werden endliche
97. 8 19 20 21 22 23 24 25 26 21 28 29 30 LITERATURVERZEICHNIS Javier Esparza and Jens Knoop An automata theoretic approach to interprocedural data flow analysis In Wolfgang Thomas editor FoSSaCS volume 1578 of Lecture Notes in Computer Science pages 14 30 Springer 1999 FMS Folien http 1s5 www cs uni dortmund de imperia md content fms05 fms05 folien1 pdf Thomas M J Fruchterman and Edward M Reingold Graph Drawing by Force directed Placement Softw Pract Exper 21 11 1129 1164 1991 Erich Gamma and Kent Beck Contributing to Eclipse Addison Wesley 2003 Rob Gerth Doron Peled Moshe Y Vardi and Pierre Wolper Simple on the fly automatic verification of linear temporal logic In PSTV pages 3 18 1995 GPL http www gnu org copyleft gpl html GraphViz http www research att com sw tools graphviz Grappa http www research att com 7Ejohn Grappa grappa html jABC http jabc cs uni dortmund de JFlap http www jflap org JRexx http www karneim com jrexx JUNG http jung sourceforge net P Kelb T Margaria M Mendler and C Gsottberger Mosel A flexible toolset for monadic second order logic March 1997 Aufsteigende Kettenbedingung http en wikipedia org wiki Ascending_ chain_condition Kupferman and Vardi Weak alternating automata are not that weak In ISTCS Sth Israeli Symposium on the Theory of Computing
98. Abbildung 2 3 a c a a DOI b c Abbildung 2 1 Automat A fiir Schnitt Abbildung 2 2 Automat B f r Schnitt 2 1 1 3 2 Vereinigung von b chierkennbaren Sprachen Die Vereinigung ist f r Model Checking nicht besonders interessant Deshalb wird sie hier kaum behandelt Die Idee ist dass man wie bei NFAs einfach einen neuen Initialzustand mit e Transitionen zu den Initialzust nden der beiden Automaten erzeugt und die e Kanten danach einsinken l sst 2 1 AUTOMATENMODELLE 13 Abbildung 2 3 Ergebnis Automat f r Schnitt 2 1 1 3 3 Leerheitstest von b chierkennbaren Sprachen Diese Operation wird hier besprochen da sie sich beim Model Checking als hilfreich erweist Man kann die Leer heit beweisen oder widerlegen durch den Nachweis ihres Komplements der Nichtleerheit Um ein Wort zu akzeptieren muss der Lauf p auf dem Wort v unendlich oft einen ak zeptierenden Zustand durchlaufen haben D h dass er eine stark zusammenh ngende Komponente mit einem akzeptierenden Zustand bilden muss die vom Initialzustand er reichbar ist Wenn es eine solche Komponente gibt muss folglich mindestens ein Wort akzeptiert werden und die Sprache kann damit nicht leer sein Anders formuliert wird ein erreichbarer akzeptierender Zustand gesucht der Teil eines Kreises ist Da die Existenz eines einzigen akzeptierten Wortes bereits ausreicht kann man das Problem zum Beispiel mit Hilfe von zwei DFS s vom Initialzustand aus l sen sieh
99. Allgemeine Analyse 2 2 1 Erreichbarkeitsanalyse f r Pushdown Systeme Pushdown Systeme sind Pushdown Automaten ohne Eingabe Ihre nichtdeterministi schen berg nge h ngen nur vom obersten Symbol auf dem Stack und dem aktuellen Kontrollpunkt ab Diese Art von Automat verf gt ber einen unendlichen Raum von Zust nden bei Pushdown Systemen als Konfigurationen bezeichnet weil der Stack be liebig wachsen kann Pushdown Systeme eignen sich sehr gut zur Modellierung von Pro grammen denn sie repr sentieren nicht nur die berg nge zwischen den endlich vielen Belegungen der globalen Variablen sondern auch den f r rekursive und nicht rekursive Prozeduraufrufe verwendeten Stack des Programms der zumindest theoretisch beliebig wachsen kann Offensichtlich k nnen schon recht einfache Programme einen unendlichen Zustandsraum haben wodurch eine Modellierung durch endliche Automaten inad quat wird Die hier vorgestellten Techniken zur Berechnung von Vorg ngern erm glichen eine Erreichbarkeitsanalyse f r Pushdown Systeme Ein grundlegendes Erreichbarkeitsproblem ist es z B zu entscheiden ob ein Pushdown System gem seiner Transitionsregeln von einer Konfiguration s in eine Konfiguration t bergehen kann Die Erreichbarkeitsanalyse f hrt zu neuen Algorithmen f r das Model Checking von Pushdown Systemen und zu neuen Datenflussanalyse Algorithmen f r Flussgraphen Die hier dargestellten Verfahren wurden entnommen Dort werden auch die
100. Automaton Element welche sich um die R ck bertragung gespeicherter Positionsinformationen in einen PaintableAutomaton kiimmert Zwischen einem dargestellten PaintableAutomaton und dem zugrundeliegendem Automaton gibt es eine 1 1 Abbildung der jeweiligen PaintableState und State Objekte Die von den State Objekten zur Verf gung gestellte eindeutige Zustands Nummer wird dabei ber den AutomatonToPaintableConverter f r den Serialisierungs und Deserialisierungs Prozess der Positionsinformationen genutzt F r jeden dargestellten Zu stand wird seine Position und ggf Dimension gesichert und mit der Zustandsnummer des zugeh rigen Automaton State Objekts versehen 3 6 3 7 2 Die Interfaces Locatable und Resizable Um verschiedene Paintable Modelle zu unterst tzen werden zwei Interfaces eingesetzt welche jeweils von einer Zustands Klasse implementiert werden k nnen Abh ngig davon welche Interfaces im plementiert sind wird zur Laufzeit entschieden ob nur die Positionsdaten oder auch die 3 6 EDITOR 209 Dimensions Informationen H he amp Breite gespeichert werden 3 6 4 Kripke Modelle Die Projektgruppe entschied sich im zweiten Semester das Projekt mehr in Richtung Mo del Checking zu bewegen Neben den dazu notwendigen Automaten und Transformations Komponenten war es auch wichtig berhaupt zu berpr fende Modelle eingeben zu k nnen Nat rlich bot es sich an dies einen Benutzer komfortabel ber den bereits exis
101. Automaton ba new BuchiAutomaton SymbolRangeList class ca ba renderGeneralized State q1 new State q1 State q2 new State q2 State q5 new State q5 ql setInitial true SymbolRangeList as new SymbolRangeList ca createSymbol a SymbolRangeList bs new SymbolRangeList ca createSymbol b ba addTransition q1 as q2 ba addTransition q2 bs q5 Set lt State gt m0 new HashSet lt State gt Set lt State gt m1 new HashSet lt State gt m0 add q2 m0 add q5 mi add q5 ba addAcceptanceSet m0 ba addAcceptanceSet ml 144 KAPITEL 3 GRUPPENERGEBNISSE BuchiAutomaton nonGBA ba degeneralize 3 2 6 Kripkestruktur Kripkestrukturen oder Kripkemodelle sind einfache Strukturen mit denen Transitions systeme beschrieben werden k nnen Zur Erinnerung formal ist eine Kripkestruktur K ein Tupel So S R L AP Dabei ist S eine beliebige Menge die Zust nde beschreibt z B N und So C S ist die Menge der Anfangszust nde R ist eine linkstotale bergangsrelation C SxS Die Abbildung L S 24 bildet Zust nde auf Mengen von atomaren Proposi tionen aus AP ab K l sst sich also als Graph mit Knotenbeschriftungen von Elementen aus AP auffassen Atomare Propositionen sind dabei aufzufassen als nullstellige Pr dikate deren Knotenbeschriftungen praktisch Vollkonjunktionen sind Nicht vorhandene Elemen te aus AP k nnen als negiert in S aufgefasst werden Da die abstr
102. Benutzer kombinieren diese Knoten zu Graphen wobei die Kanten gem des Verhaltensaspekts konstruiert werden das hei t sie sind gerichtet und geben die Rei henfolge wieder in der die den BB zugrunde liegenden Programmfragmente ausgef hrt werden sollen 2 5 1 1 2 BB Graphen Der innerhalb eines solchen Fragments erfolgende Pro grammfluss f hrt abh ngig von Kontext und Eingabe zu einem bestimmten Ergebnis Dieses Ergebnis legt fest an welcher Stelle im Programmablauf fortzufahren ist An ei nem BB teilt man konzeptionell die Menge m glicher Ergebnisse in quivalenzklassen ein wobei zwei Ergebnisse genau dann in derselben quivalenzklasse liegen wenn sie zur Fortsetzung des Programmablaufs an gleicher Stelle f hren sollen F r jede dieser quivalenzklassen erh lt ein BB eine benannte ausgehende Kante Die Kante f hrt zu dem BB der das Programmfragment repr sentiert an dem fortgesetzt werden soll 64 KAPITEL 2 SEMINARPHASE Der auf diese Weise konstruierte Fluss Graph kann einerseits dazu verwendet werden einen Prototypen oder ein fertiges Programm zu kompilieren andererseits bietet er eine Sicht auf das entstehende Programm als Transitionssystem Programmeinheiten sind auf ihr Ein Ausgabeverhalten reduziert ihr Einwirken auf den Kontext ist ausgeblendet Daher stellt der Fluss Graph im Allgemeinen nur quivalenzklassen der Zustandsmenge des entstehenden Programms dar Dabei bleibt offen in welcher konk
103. ChangeListener Diese Listener k nnen ber Ver nderungen im Layout eines PaintableAutomaton informiert werden Das ist im We sentlichen das Verschieben von Zust nden Ein m glicher Einsatzzweck dieses Listener Typs ist die Realisierung einer Mini Map welche den evtl nur teilweise dargestellten Automaten in einer kleinen Version aber vollst ndig im Workspace anzeigt und als Navigator dienen kann 3 6 3 1 2 PaintableAutomatonStructuralChangeListener Listener dieses Typs er halten Benachrichtigungen ber strukturelle nderungen am Automaten Strukturel le nderungen sind das Hinzuf gen Entfernen von Zust nden und Transitionen so wie Ver nderungen an den Labels also Zustandsbeschreibungen und Kanten bergangs Symbole Dieser Listener kann ebenfalls f r die oben erw hnte Mini Map genutzt werden und erm glicht au erdem das Aktualisieren des aaa automaton Automaton Objektes wel ches durch den dargestellten PaintableAutomaton repr sentiert wird Letzterer Anwen dungszweck wurde im zweiten Semester zur Bearbeitung und Erstellung von Automaten realisiert Diesem ist ein eigener Abschnitt 3 6 3 6 gewidmet 3 6 EDITOR 203 3 6 3 2 Klasse PaintableState Delete O Initial U Ac Sets whether or not this is an initial state m Abbildung 3 37 Beispielbild der drei m glichen Typen von Zust nden und ein Popup Men zur Bearbeitung Die in Abbildung 3 37 dargestellten Zust nde sind
104. Die Automatenbibliothek stellt verschiedene Triggertypen zur Verf gung die sich in ihren Vor und Nachteilen f r unterschiedliche Anwendungf lle unterscheiden F r eine detaillierte Darstellung des berarbeiten Triggerkonzepts sei auf Abschnitt 3 2 3 2 verwiesen 3 to ist der von der Transition erreichte Zustand Ebenso kann die Methode Transition setTo State nur aufgerufen werden wenn kein Eigent mer der Tran sition existiert 108 KAPITEL 3 GRUPPENERGEBNISSE 4 owner ist der mit dem Trigger assoziierte Automat Der owner wird beim Hinzuf gen der Transition zum Automaten automatisch gesetzt Die bertragung der formalen Darstellung von Transitionen in eine konkrete Implemen tierung erfordert es sich auf Konventionen im Umgang mit ihnen zu einigen Zuerst einmal wird zwischen zwei Transitionstypen unterschieden leere und markier te Transitionen F r leere Transitionen gilt getTrigger null markierte sind immer mit einem Trigger Objekt assoziiert Wenn f r eine markierte Transition getTrigger isFireable false gilt d h wenn der Trigger kein Zeichen enth lt wie z B das OBDD welches nur aus der 0 Senke besteht dann hei t diese Transition tote Transition Tote Transitionen k nnen z B auch vor bergehend bei der graphischen Eingabe entstehen Durch Aufruf der Methode removeDeadTransitions werden sie entfernt e Transitionen werden sowohl in endlichen Automaten als auch in B chiautomaten als leere
105. Eigenschaften eingeblendet werden So k nnen z B Automateninformationen wie An zahl der Zust nde Anzahl der Transitionen Initialzust nde akzeptierende Zust nde oder 180 KAPITEL 3 GRUPPENERGEBNISSE Transitionen von Automaten dort angezeigt und sogar bearbeitet werden So werden unn tige Dialoge minimiert die den Arbeitsfluss st ren k nnten Als n chstes Element sind nderungen in der Automatenliste zu erw hnen So wird diese nicht mehr nach Automatentyp kategorisiert sondern nach zugeh rigem Plugin Dies un terst tzt die Unterschiedlichkeit der einzelnen Automaten untereinander wie Alphabete Sonderfunktionen oder Editierm glichkeiten Beispiele hierf r sind Automaten auf Basis von regul ren Ausdr cken oder Presburger Formeln Die Ergebnisse beider Transformatio nen sind endliche Automaten mit abweichenden Alphabeten Bei regul ren Ausdr cken wird ein CharacterAlphabet und bei Presburger Formeln ein Assignment Alphabet ver wendet Einige Automatenoperationen sind aus diesem Grund nicht m glich und w rden zu diversen Fehlern f hren z B ein Schnitt dieser beiden Automaten Optisch wurde die Automatenliste stark berarbeitet So wird nun die Selektions Reihenfolge der vom Benutzer markierten Automaten angezeigt Das kann unter anderem sehr hilfreich sein bei Operationen die auf mehreren Automaten angewendet werden z B ist es beim Konkatenieren wichtig die korrekte Reihenfolge der Automaten festlegen zu k
106. Ein Lauf ist akzeptierend wenn lim r e O F 4 f r jeden Zweig P vo v von T gilt D h in jedem Zweig kommt unendlich oft ein Knoten v vor f r den r v F gilt Die Menge der von A akzeptierten B um wird mit Tu A bezeichnet Lemma 3 Der Leerheitstest auf einem NTA ist in quadratischer Zeit entscheidbar 2 1 3 1 5 Alternierende Automaten auf unendlichen B umen Ein alternieren der Automat auf unendlichen B umen ATA A ist identisch zu einem NTA mit einer anderen partiellen Ubergangsfunktion 9 Q x YE x D gt Bt N x Q 26 KAPITEL 2 SEMINARPHASE Hierbei dr ckt c N zur Erinnerung D C N eine Richtung zu dem n chsten Kind aus in die ein Automat in einem Zustand q Q beim Lesen eines Knotens fortf hrt So dr ckt qo a 2 1 1 A 2 q2 aus dass der Automat A am Anfang beim Lesen von a eine Kopie von A im Zustand q in Richtung 1 und eine Kopie von A im Zustand q in Richtung 2 startet Ein Lauf r eines ATA auf einem bl tterlosen D Baum 7 7 ist ein N x Q beschrifteter Baum p r bei dem jedem Knoten p aus p r nicht eindeutig ein Knoten v aus 7 entspricht Im Gegensatz dazu ist diese Zuordnung bei einem NTA eindeutig Ein Knoten uv q in r entspricht dem Automaten der den Knoten v aus 7 im Zustand q liest Ein Lauf p r 7 Tp ist ein D beschrifteter Baum mit 2 N x Q es gilt 1 T e e go 2 Sei 0 Tr T v v q arity v k q T v Dan
107. Endbericht PG AAA 19 Dezember 2006 II Inhaltsverzeichnis 1 Allgemeines TL Motiv tion 42 3 2402 A e a A ee a a ME BE a A a ee Ds a ed ia ed A E 2 Seminarphase 2 1 Automatenmodelle 22 2 CC on nn 2 1 1 ZB cmantonaten s s ser aa EA E E dl 2 1 2 Endliche Baumautomaten e ds 2m Br Her riss 2 1 3 Alternierende Automaten 3 ur 8 za ken lass 2 2 Allgemeine Analys s AA ewe FI keit 2 2 1 Erreichbarkeitsanalyse f r Pushdown Systeme 2 2 2 Statische Programmanalyse ey au ua ra a 2 2 3 Erreichbarkeitsanalyse paralleler Prozesse mit Baumautomaten 2 3 Analyse mit Automaten 4 4 25 Ha a e a D da 2 3 1 Erf llbarkeitspr fung von Formeln der Presburger Arithmetik 2 3 2 Model Checking mit Automaten 2 2 2 mE nme nn 24 Bxisherende L sungen ardid REN AE Mona Mosela a asta da De 2 4 2 berblick ber Automaten Bibliotheken 2707 Werkzeuge ol an ii a Eee 29 JABE and Mendes is ESE ERA a 25 2 Das Eclipse Project ais wa da a ee e da 3 Gruppenergebnisse 31 Transformation cd ts abona ds a rats ES Prat Sls Dee tana acid pide asas ams Ta tion MTL ost ae DAA Ba spe 3 1 2 Transformation von Formeln der Presburger Arithmetik in endliche Aulomalen Ata AR ARI Roe Reed de 3 1 3 Model Checking von Kripkemodellen mit LTL Formeln 3 1 4 Transformation von LTL Formeln in B chiautomaten 3 1 5 Transformation von Whileprogrammen in Kripkemodelle III 16 22
108. KAPITEL 2 SEMINARPHASE O log c gt 1 lt i lt n la viele Zust nde erzeugt procedure automatonForEquation Zustandsmenge Q c init Transitionsmenge T 0 Queue queue c while queue do q dequeue queue for all b 0 1 do do q a b 2 if qo ganzzahlig then if qo Q then Q Q U qo und enqueue queue qo T TU 5 9 if q a b then T T U init b g if T enth lt keine ausgehenden Transitionen f r init then Q init T init x 0 1 x init init ist nicht akzeptierend else Q QU reject T TU q b reject If Q q b qd E TH mache c akzeptierend if c 0 then mache init akzeptierend end procedure Algorithmus 2 Konstruktion eines Automaten f r eine Gleichung 2 3 1 4 Konstruktion von Automaten f r Ungleichungen Das vorgestellte Konstruktionsprinzip kann auf Ungleichungen der Form 011 2 2 Ann lt c bertragen werden Der Zustand q bedeutet nun dass die linke Seite momentan kleiner oder gleich q ist Der Initialzustand init ist genau dann akzeptierend wenn c gt 0 ist F r alle anderen Zust nde q ist q genau dann akzeptierend falls q lt c Bei der R ckw rtskonstruktion wird qo q a b 2 anstelle von qo q a b 2 benutzt Ungleichungen sind stets erf llbar weshalb Schritt 3 entfallen kann Allerdings sind die entstehenden Automaten nicht notwendigerweise deterministisch F
109. Konzept das es Objekten erlaubt sich w hrend des Automaten Konstruktionsprozesses ber den Fortschritt der Berechnungen informieren zu lassen berdies wurden zur angemessenen Reaktion auf Fehlerzust nde spezielle Ex ceptions entworfen 3 1 2 1 Statische Struktur Der Code befindet sich im Paket aaa translation presburger Bevor der Transforma tionsprozess beschrieben wird sollen zun chst die Bestandteile dieses Pakets erl utert werden 3 1 2 1 1 PresburgerToDFATranslator Dies ist die die Transformation steuernde zentrale Klasse Eine Instanz kann eine beliebige Zahl von Formeln der Presburger Arithmetik nacheinander in endliche Automaten bersetzen Ein im Konstruktor bergebenes Flag bestimmt ob bei jedem Konstruktionsprozess auch alle Automaten gespeichert werden die nur als Zwischenergebnisse entstehen Durch einen Aufruf der Methode computeResult PNode wird der Konstruktionsprozess angesto en wobei als Parameter die Wurzel des Ausdrucksbaumes der Presburger Formel erwartet wird Der R ckgabewert der Methode ist der Ergebnisautomat Die Eingabe die normalisierte Ein gabe und der Ergebnisautomaten des letzten Aufrufs sind ber Methoden zug nglich Gleiches gilt f r das Array aller relevanten Variablen die Liste aller normalisierten Ato me der Normalform und die vom Ergebnisautomaten benutzte Variablenordnung Eine Variablenordnung ist ein Array das f r jede Bitposition des AssignmentAlphabets der Bitvektorl nge
110. Layouten unter Umst nden l ngere Zeit in Anspruch nehmen kann man bedenke dass bereits zahlreiche Entscheidungsprobleme auf Graphen NP vollst ndig sind ist es vorteilhaft wenn der Layoutvorgang nicht die komplette Anwendung blockiert und der Anwender in der Zwischenzeit an anderen Automaten weiterarbeiten kann Dies kann erreicht werden indem ein Layouter zus tzlich das Interface Progress Monitorable implementiert Die Implementierung erfordert dass der Layouter Listener zur Verf gung stellt mit denen die benutzende Anwendung also bei uns der Workspace ber den aktuellen Fortschritt informiert wird Sobald ein Layouter das Interface implementiert wird er automatisch in einem eigenen Thread gestartet und l uft in diesem nebenl ufig bis zur Vollendung des Layoutvorgangs 214 KAPITEL 3 GRUPPENERGEBNISSE 3 6 6 3 Fruchterman Reingold Algorithmus Nach den durchaus positiven Erfahrungen des Fruchterman Reingold Layouters im JUNG Framework sollte dieser auch im PG Editor implementiert werden Das Verfah ren von Thomas M J Fruchterman und Edward M Reingold wurde 1991 in deren Paper Graph Drawing by Force directed Placement vorgestellt und anhand des Papers f r unseren Editor implementiert Das Verfahren beruht auf der Simulation eines physikalischen Modells bei dem man die Knoten eines Graphen als sich absto ende K rper betrachtet und sich die Kanten als Federn vorstellt die ihre inzidenten Knoten zueinander zu ziehen
111. Node ist inzwischen sehr allgemein und erlaubt beliebige Knoten grade Ihre toString Methode kann nicht f r alle Sprachen sinnvolle bzw erwiinschte Ergebnisse liefern z B Sprache der Presburger Formeln BPNode wurde eingef hrt um auf bin ren Ausdrucksb umen operierenden Code lesbarer zu machen Es gibt Metho den wie getLeftChild und setLeftChild BPNode und das Token ist ein einfacher String Ausserdem h lt die Klasse ein Label des Typs Object bereit 3 1 1 1 2 Unterklassen Die einzelnen Transformationen k nnen weitere Anforde rungen an die Knotenklasse stellen die von Unterklassen erf llt werden k nnen In PresburgerBPNode und LTLBPNode existieren jeweils is und make Methoden um den Knotentyp das Token zu ermitteln oder zu ndern In LTLBPNode wird sogar die 78 KAPITEL 3 GRUPPENERGEBNISSE equals Methode berschrieben Die toString Methode von BPNode rekonstruiert f r die Wurzel eines Teil Baums die durch diesen Teil Baum repr sentierte Formel kor rekt falls die Sprache nur einfache bin re und un re Operatoren verwendet Die Methode ist beispielsweise auf LTL Formeln anwendbar und wird deshalb von LTLBPNode nicht berschrieben 3 1 1 1 3 Kompression von B umen BPNode definiert eine Methode zur Kompres sion von B umen Diese Methode ersetzt im Baum alle Teilb ume die syntaktisch gleiche Teilformeln repr sentieren durch genau einen dieser Teilb ume Alle Referenzen auf einen ersetzten Teil
112. O B d A nehmen wir an dass Gleichungen Ungleichungen immer in der Form a x 4223 On Tn C A121 4222 Mp Tn lt c mit n gt 0 vorliegen wobei 2 En paarweise verschiedene Variablen und a a ganzzahlige Koeffizienten mit a 4 0 f r ein sind und c eine beliebige ganzzahlige Konstante ist Zus tzlich definieren wir noch a a1 Q3 und x 1 12 n Das Verfahren konstruiert zun chst f r jedes Atom einen Automaten der genau die L sungen des Atoms akzeptiert Die Atom Automaten k nnen beliebige Belegungen der im zugeh rigen Atom vorkommenden Varia blen lesen und treffen die korrekte Entscheidung F r ein Atom in der oben beschriebenen Normalform ergibt sich ein Automat der auf dem Bitvektoralphabet 0 1 arbeitet Die i te Position der Vektoren bezieht sich dabei auf x Wenn nun ein Wort w b 0m von Bitvektoren b gelesen wird dann wird f r jede Variable x ein Bitmuster der L nge m gelesen n mlich bi b2 bm Dieses Bitmuster wird als Zweierkomplementdarstellung einer ganzen Zahl der Belegung von z interpretiert Das erste Bit l sst das Vorzeichen erkennen fr her eingelesene Vektoren haben eine h here Bitwertigkeit es wird also aus gehend vom Most Significant Bit in Richtung Least Significant Bit gelesen Jedes Wort kann auf diese Weise als Variablenbelegung interpretiert werden Das leere Wort werde als Belegung interpretiert die allen Variablen den Wert 0 zuordne
113. Objekt verbindet Da der Konverter das Inter face PaintableAutomatonStructuralChangeListener implementiert kann er sich dem PaintableAutomaton als Interessent fiir Anderungen am im Editor dargestellten Auto maten anmelden Eine solche Anderung zum Beispiel ein Hinzufiigen eines neuen Zu stands erzeugt ein entsprechendes Event hier ein PaintableStateChangedEvent Mit diesem Event wird sowohl der neu erzeugte oder gel schte ver nderte PaintableState bergeben als auch die Information was mit diesem Zustand geschehen ist Der Konver ter kann diese Informationen auswerten und mittels seiner Verkniipfungs Tabellen auf den entsprechenden Automaton Aquivalenten die Anderung auch dort durchfiihren Als Besonderheit seien hier lediglich die e Transitionen genannt W hrend im dargestell ten Paintable Automaten eine e Transition einfach durch ein weiteres Symbol e im Transitions Label dargestellt wird so als w re sie einfach ein Element einer Menge von Triggern sind e Transitionen im aaa automaton Automaton Automaten als eigenes explizites Transitions Objekt modelliert und liegen potentiell parallel zu einer weiteren gelabelten Transition zwischen den gleichen Zust nden 208 KAPITEL 3 GRUPPENERGEBNISSE 3 6 3 7 Das Speichern und Wiedereinladen von Automaten Layouts Eine wesentliche Neuerung im zweiten Semester stellte das Sichern und Wiedereinladen von Layout Informationen dar Zuvor wurde ein vom Benutzer miihevoll durchgefiihrtes
114. Pluginfunktionalit t gesteuert wird e Die Plugin Schnittstelle erm glicht die Erweiterung der Modellierungsumgebung um Plugins Erst durch Plugins erhalten SIBs eine Bedeutung in der blo en Model lierungsumgebung sind sie nur leere Entit ten deren Attribute man ndern kann F r jedes Plugin wird eine lokal verf gbare Plugin Klasse ben tigt Beim Start von Java ABC wird von jeder bekannten Plugin Klasse eine Instanz erzeugt und auf dieser Instanz die start Methode aufgerufen Also wird pluginspezifischer Code ausgef hrt in dem zum Beispiel Men Eintr ge erzeugt werden k nnen ber die ein Benutzer Pluginfunktionalit t aktivieren kann 2 5 1 4 Schlussbemerkungen Das Paradigma der programmierungsfreien Programmierung umzusetzen ist eine an spruchsvolle Aufgabe Die vorgestellten im Bereich der universit ren Forschung entwi ckelten Tools sind zumindest hoffnungsvolle proofs of concept Der Einsatz von ABC ist sinnvoll wenn gut strukturierte workflows zu modellieren sind oder wenn man Code ausf hren m chte der in isolierte Teile mit einfacher Schnittstelle zerlegt ist so dass die mit den Kanten modellierten berg nge nicht zu sehr an der 68 KAPITEL 2 SEMINARPHASE Wirklichkeit vorbeigehen und die auf viele verschiedene Weisen miteinander kombiniert werden k nnen Dann bietet sich die Benutzung des Tracers an Au erdem hat ABC eine relativ leicht zu bedienende grafische Oberfl che
115. Semesters musste dann entschieden werden welche weiteren Auto matentypen und Analyseverfahren in unser Projekt aufgenommen werden sollten Baum automaten wurden als sehr interessant erachtet weil sie vielf ltige Einsatzm glichkeiten haben und sich deutlich von den klassischen Automatenmodellen unterscheiden Die In tegration dieses Automatentyps in die Bibliothek w rde die Erweiterbarkeitskonzepte der Bibliothek auf eine harte Probe stellen Allerdings fiel die Entscheidung dann doch zu gunsten von B chiautomaten aus B chiautomaten sind endliche Automaten die nur unendliche W rter akzeptieren k nnen Strukturell unterscheiden sie sich nicht von den klassischen endlichen Automaten allerdings laufen die Operationen nicht identisch ab Einige bei klassischen Automaten bliche Operationen wie zum Beispiel die Komple mentbildung sind hier nicht ausreichend effizient berechenbar und es kommen weitere Operationen wie zum Beispiel die Degeneralisierung hinzu B chiautomaten hatten den Vorteil dass an das bereits Erreichte angekn pft werden konnte statt etwas v llig Neues zu beginnen Dies war auch im Hinblick auf den im zweiten Semester stark begrenzten Zeitrahmen von Bedeutung F r das Modelchecking wurden Kripkemodelle implemen tiert Auch wenn diese im eigentlichen Sinne keine richtigen Automaten sind besitzen sie jedoch gemeinsame Strukturen so dass dies durch Vererbung ausgenutzt wurde Auf der Basis von B chiautomaten und der Kripke
116. Sprache und die Implementation an sich weisen jedoch einige Einschr nkungen auf die haupts chlich der knappen Zeit anzulasten sind auf die hier kurz eingegangen werden soll e While ist zu sehr eine traditionell Programmiersprache Man mag auf den ersten Blick meinen dass dies von Vorteil ware jedoch vergleicht man diese Sprache mit problemspezifischen Sprachen wie z B PROMELA aus dem Spin Projekt siehe f llt auf dass die dort modellierten Modelle sich wesentlich k rzer beschrei ben lassen While tr gt zu viel syntaktischen Ballast mit sich herum Vor allem Schl sselw rter vergr ern den Schreibaufwand erheblich e Keine Typisierung Dies ist eine Einschr nkung dieser Implementation Typen und Enumerationen erh hen die Lesbarkeit und vereinfachen oft die Modellierung er fordern jedoch eine aufw ndigere Variablenbehandlung e Prozess Methodenaufrufe sind nicht parametrisiert Dies ist eine Einschr nkung dieser Implementation Es ist m glich Methoden Parameter zu bergeben jedoch ist dies nur ber call by reference m glich Da damit auch eine bergabe von Kon stanten unm glich ist wurde die M glichkeit zur Parameter bergabe nicht weiter verfolgt Die Implementation ist unvollst ndig Zur vollst ndigen Unterst tzung von parametrisierten Aufrufen ist eine andere Konzeption der Methodenbehandlung not wendig als dies hier ansatzweise verwirklicht wurde e Keine lokalen Variablen Dies ist eine
117. Stackautomat Je nach Struktur der verwendeten Grammatik bzw der Einsatzumgebung oder sonsti ger Randbedingungen k nnen sich verschiedene Arten von Verfahren mehr oder weniger eignen Im Folgenden seien ein paar genannt e Parser mit Sprung bzw Steuertabelle Dies ist m glich da Stack und Sprungta belle funktional quivalent sind Die Sprungtabelle versetzt den Parser jeweils in verschiedene Zust nde die verschiedenen Stackkonfigurationen entsprechen Parser die mit solchen Tabellen arbeiten nennt man tabellengesteuert Als Konsequenz ist der Rahmen eines solchen Parsers immer gleich und wird auch Treiberprogramm genannt Vorausschauender Parser Dies ist die einfachste M glichkeit einen Parser zu implementieren sowie auch von der Ausf hrungsgeschwindigkeit die schnellste Die Grammatiken die verwendet werden k nnen sind allerdings eingeschr nkt Auf die Einschr nkungen soll an dieser Stelle jedoch nicht weiter eingegangen werden Die genaue Vorgehensweise ist hnlich dem des rekursiv absteigenden Parsers und genauer in 3 3 3 beschrieben Rekursiv absteigende Parser mit Backtracking Ist eine erweiterte Variante des vorhersehbaren Parsers jedoch um die M glichkeit des Backtrackings erweitert Das Konzept dieses Types wird in 3 3 2 mit einem Beispiel erl utert 3 3 1 Parser Infrastruktur Die Parser Infrastruktur ist eine Kombination mehrerer Klassen die den Bau Auswertung und inte
118. TEL 2 SEMINARPHASE dung der WS1S von MONA drastisch unterscheiden Die letzte Ebene hei t Application Layer auf dieser Ebene sollen Anwendungen einge bunden werden die Mosel nutzen Es soll erm glicht werden dass aus einer Anwendung heraus auf Mosel zugegriffen wird Als eine Anwendung ist die Modellierung und Verifi kation von Hardware angedacht 2 4 2 berblick ber Automaten Bibliotheken Die Modularisierung ist eines der zentralen Konzepte in der Softwareentwicklung Sie hat den Vorteil dass Projekte einfach erweiterbar sind und dass sich Kosten und Zeit aufwand f r die Realisierung eines Projektes erheblich reduzieren lassen Der Quelltext eines Moduls wird dann in Bibliotheken abgelegt die als eigenst ndige und unabh ngige Objekte in ein Softwareprojekt eingef gt werden k nnen 2 4 2 1 Lizenzen Bei Verwendung von Bibliotheken gibt es einige rechtliche Grundlagen die man beachten muss Die meisten frei verwendbaren Bibliotheken stehen unter der GPL oder einer leicht modifizierten GPL GPL General Public License Die GPL bildet eine rechtliche Grundlage um frei Software zu schaffen und zu ver ffentlichen die von fremden Personen genutzt wer den darf kopieren verteilen weiterentwickeln oder anpassen Nach der gelten den Rechtslage ist ein ver ndertes Werk aber nicht mehr automatisch wie das ur spr ngliche Werk frei verwendbar Um diesen Mangel zu beseitigen erkl rt sich ein Nutzer durch den Ge
119. Textdatei mit Hilfe eines FileInputStreans 3 5 3 4 PropertyPanel Dieses Panel besteht aus zwei Komponenten Zum einen aus der Klasse PropertyPanel und zum anderen aus dem Interface PropertypPanelUser Das Interface PropertyPanelUser muss von allen Klassen implementiert werden die das PropertyPanel nutzen wollen Dieses Interface beinhaltet einen Methoderumpf f r die Methode lostPanel Die Klasse PropertyPanel erweitert ein javax swing JPanel und erh lt seine Funktio nalit t durch die folgenden zwei Hauptmethoden grabPanel und releasePanel Das Vorgehen wird an dieser Stelle einmal beispielhaft skizziert Nehmen wir die folgende Situation an Im PropertyPanel wird gegenw rtig ein Panel des aktuellen Automaten angezeigt und durch eine Editor Aktion soll z B ein Transitionspanel im PropertyPanel angezeigt werden Dies geschieht indem vom Editor die Methode grabPanel PropertypPanelUser JPanel mit dem Editor als PropertyPanelUser und dem Transitions Panel als weiteren Parameter aufgerufen wird Der vorherige Nutzer des PropertyPanels wird durch Aufruf der Methode lostPanel dar ber informiert dass er nicht mehr der Besitzer des Panels im PropertyPanel ist Er kann dann auf den Verlust des Panels reagieren und z B nicht mehr ben tigte Ressourcen freigeben oder sich von 3 5 DER WORKSPACE STAND JULI 2006 183 Listenern abzumelden Diese einfache Struktur erm glicht eine schnelle Implementierung Mit der Methode releasePane
120. Verifikation von Programmen Es wurde von Anfang an als eher unwahrscheinlich eingesch tzt dass im Rahmen der PG ein direkt in kommerziellen Projekten einsetzbares Endprodukt entsteht Vielmehr sollte das Produkt f r den akademischen Bereich von Interesse sein Neue automatenbasierte Algorithmen k nnen auf recht einfache Weise als weitere Analyse integriert werden und die Automatenbibliothek ist um neue Typen von Automaten erweiterbar Alle neuen Komponenten k nnen in standardisierter Weise ber die grafische Oberfl che zug nglich gemacht werden Dort kann dann das Verhalten der Algorithmen auf konkreten Eingaben untersucht werden Deshalb und wegen der visuellen Darstellung von Automaten k nnte auch ein Einsatz in der Lehre als Werkzeug zur Veranschaulichung in Betracht kommen Wenn der Baukasten wirklich so flexibel und erweiterbar wird wie geplant und vor allem die Automatenbibliothek effizient arbeitet dann ist das Produkt sehr ausbauf hig Selbstverst ndlich existierte bereits ein Markt f r Automatenbibliotheken Nach der Untersuchung einiger Automaten und Graphenbibliotheken ist die Projektgruppe jedoch zu dem Schluss gekommen dass keine von ihnen das Potenzial hatte zu einem Baukasten mit den von uns gew nschten Eigenschaften ausgebaut oder umgebaut zu werden Die Er gebnisse der Untersuchungen sind in Abschnitt 2 4 2 dokumentiert So lie en alle betrach teten Bibliotheken ein umfassendes Alphabetkonzept vermissen s
121. Workspace eingetragen werden Eine Besonderheit sind die zwei Analysever fahren FindMember und FiniteRun Diese werden in einem solchen Fall in das Analysemen eingetragen Serialisieren siehe FiniteAutomatonPluginSerializer Die Klasse FiniteAutomatonPluginSerializer Um die Klasse FiniteAutomatonPlugin etwas bersichtlicher zu gestalten wurden alle Ope rationen zum Speichern und Laden in diese Klasse ausgelagert Wird ein Plugin zum Speichern oder Laden aufgefordert so leitet es diese Aufforderung an diese Klasse weiter Speichert man einen einfachen endlichen Automaten so erh lt man die folgende Struktur lt xml version 1 0 encoding windows 1252 gt x XML Header x lt project gt x Wurzel des XML Dokuments lt plugin class aaa workspace plugin finiteautomatonplugin FiniteAutomatonPlugin gt Plugin des ersten gespeicherten Automatenk lt title gt Finite Automaton lt title gt Titel des Automatenx lt automaton editable true gt Informationen des Backendautomaten Das Attribut editable gibt an ob der Automat bearbeitet werden darfx lt automaton gt lt statelocations gt Posititon aller Frontendknoten lt statelocations gt lt plugin gt weitere Automatenx 3 9 DER WORKSPACE STAND JULI 2006 193 lt project gt Diese Struktur entsteht folgenderma en der Pluginmanager erzeugt ein org w3c dom Document mit Wurzelknoten project Danach e
122. ace Wird diese Klasse instanziiert so erzeugt sie ein Objekt der Klasse WorkspaceFrame und initialisiert somit den Workspace Ihre weiteren Kon trollaufgaben bestehen darin alle statischen Aktionen des Workspace zu verwalten Diese statischen Aktionen bilden innere Klassen und sind in einer HashMap abgelegt Es sind folgende statische Aktionen implementiert 168 KAPITEL 3 GRUPPENERGEBNISSE Resources_de From resources WorkspaceToolBar SEE O AS z TextEntryPanel WorkspaceMenu Eemi From gui A PAN workspaceFrame b teolBar Y 5 R 5 4 Resources instance workspaceFrame N Ze Workspace From resources resources menu WorkspaceFrame From gui workspaceFrame A E u worksp ceFrame MR consolePanel o 7 projectPanel wsFrame PropertyManager a controller wsFrame A instance zu desktopPane DesktopPane From gui NavigatorPanel From gui PE gt InnerFrame From gui p Sy properties workspace Contra WorkspaceControl From control Ss Abbildung 3 26 Klasseniibersicht des Workspaces e den Workspace schlie en e ein neues Projekt anlegen e das Look amp Feel des Workspace ndern e eine Sprache w hlen Zusatzlich kiimmert er sich um die Instanziierung und Verwaltung der Addonma nager die im Abschnitt Addons n her erkl rt werden WorkspaceFrame Der Triple A Workspace wird zentral durch die Klasse Workspa
123. akte Klasse Automaton ein Grundger st f r graphenartige Objekte bietet liegt es nahe dass auch Kripkemodelle diese Klasse als gemeinsames Modell nutzen So mit muss kaum Code geschrieben werden da Kripkemodelle eine sehr einfache Daten struktur sind und viel eingeschr nkter als normale Automaten Die Menge der atomaren Propositionen die in einem Zustand gelten werden einfach an das Label eines Zustandes geh ngt und zwar als BitVector bzw Assignment um ausdrucksst rker zu sein siehe Abschnitt zu Alphabeten der eine Vollkonjunktion repr sentiert Da Zust nde theoretisch immer akzeptierend sind und die Beschriftung der Trig ger einer Transition belanglos brauchen wir speziell eingeschr nkte Methoden Diese berschreiben die herk mmlichen Methoden so dass sie keinerlei andere Zust nde oder Transitionen die dagegen versto en annehmen sie werfen Exceptions Zus tzlich sollte der Benutzer nicht unn tig komplexe Schnittstellen f r so einen einfachen Aufbau nutzen m ssen Zu diesem Zwecke wurden die beiden Methoden e void addTransition int fromKey int toKey e void addState int key boolean isInitial Assignment atomicPropositons eingef hrt Zust nde werden nur noch ber Zahlen referenziert Zust nde k nnen nur initial oder nicht sein und erhalten sofort ihre AP Transitionen werden nur als Paar von Zust nden angegeben 3 2 AUTOMATEN 145 3 2 6 1 Umwandlung in Biichiautomaten Die Konstruk
124. amt Projekts e Integration in den Triple A Workspace 3 6 2 Das Paintable Framework interface Paintable PaintableSelectionEvent interface PaintableSelectionListener Paintable selectedPaintable Paintable getPaintabled void valueChanged PaintableSelectionEvent e void paint Graphics2D g Rectangle getBounds boolean contains Point p void mouseClicked MouseEvent e void mouseDragged MouseEvent e PaintableContainerPanel LayeredPaintableContainer layers List PaintableSelectionListener selectionListener void addPaintable Paintable component int layer void removePaintable Paintable component void setSelected Paintable component bjavax swing JPanel AbstractPaintable Rectangle bounds PaintableContainerPanel container boolean selected void setSelected boolean b i Rectangle getBounds0 LayeredPaintableContainer boolean isSelectedd void addPaintable Paintable component int layer void repaint void removePaintable Paintable component void shapeChanged void bringToFront Paintable component Bidirectionallterator iteratord TextLabel gt interface Label AttributedString attributedText i void paintCentered Graphics2D g Point center double angle void paintCentered Graphics2D g Point center double angle void edit void edito void setText String text void setText AttributedString text Abbildung 3
125. ann anhand dieser Markierungen die jeweils anwendbaren Methoden heraussuchen und bei Anforderung die gew nschte Ope ration durchf hren Die Klasse GenericOperationDriver leistet das genannte und wird im Folgenden erkl rt 3 5 5 1 Die verwendeten Annotations Annotations wurden in Java 5 erstmals eingef hrt Es handelt sich dabei um Markierungen im Quellcode mit deren Hilfe Meta Informationen eingef gt und zur Programm Laufzeit ausgelesen werden k nnen F r den Einsatz des generischen Operations Treibers haben wir eine Annotation COperation entwickelt und in der Klasse GenericOperationDriver untergebracht Die Annotation selbst wirkt bereits durch ihre alleinige Anwesenheit als Markierung einer Methode in einer Automaton Implementation Per Parameter k nnen ber die Annotation aber noch weitere Informationen zur Verf gung gestellt werden type Gibt eine Typisierung der annotierten Methode an wobei im Augenblick zwischen rendering und generating Operationen unterscheiden wird Eine rendering Operation modifiziert das bergebene Automaten Objekt w hrend eine genera ting Operation ein neues Automaten Objekt erstellt chainable ber diesen Booleschen Parameter kann angegeben werden ob die mit ei nem Parameter aufgerufene Methode durch mehrfache Hintereinanderausf hrung auch f r die Verkn pfung einer ganzen Liste von Parametern dienen kann Bei spielsweise kann eine Konkatenations Methode welche auf e
126. aphen in Kontext dieser Analyse seien wie folgt informell definiert Programmgraph Jeder Knoten eines Programmgraphen hat beliebig viele Nachfolger und ist mit einer An weisung x aus der Sprache While beschriftet Einer der Nachfolger ist ein Programm graphknoten der mit der Anweisung y beschriftet ist die x im While Programm folgt falls diese existiert Weitere Nachfolger existieren nur wenn x weitere Unterprogramm fragmente einbettet wie z B while if atomic siehe 3 1 5 1 4 1 Die weiteren Nachfolger repr sentieren diese Programmfragmente und sind Unterprogrammgraphen Ein Programmgraph ist ein Baum F r ein Beispiel siehe Abbildung 3 2 Enth lt also keine Schleifen und f hrt auch keine Unterb ume zusammen 94 KAPITEL 3 GRUPPENERGEBNISSE Programm graph O Programm S1 if b S2 S3 else S4 S5 gt O S4 un S5 Y Kripke Modell t g Ta Abbildung 3 3 Pipeline 3 1 5 1 3 Prinzip Das Prinzip sei hier anhand eines einfachen Beispiels erkl rt Da bei wird angenommen dass hier nur ein Programmfragment von einem einzigen Prozess bearbeitet wird und das deterministisch anhand der Ausf hrungsumgebung genau eine m gliche Zukunft gew hlt wird Nach dem Parsen des While Programmes wird das Fragment in einen Programmgra phen siehe 3 1 5 1 2 umgewandelt Eine leere Kripkestruktur wird im Speicher
127. as bedeutet dass man sich den Durchlauf von A ber v als endliche Zustandsfolge oder Pfad innerhalb des Graphen vorstellen kann vgl S 121 2 1 1 1 1 Determinismus Endliche Automaten auf endlichen W rtern kann man un terteilen in deterministische DFA und nichtdeterministische NFA Bei einem NFA hat der Automat die Wahl zwischen mehreren erlaubten Transitionen 2 1 1 2 Endliche Automaten auf unendlichen W rtern NFAs und DFAs sind so definiert dass sie beim erreichen eines akzeptierenden Zustandes akzeptieren und halten Endliche Automaten auf unendlichen W rtern sind so definiert 10 KAPITEL 2 SEMINARPHASE dass sie akzeptieren sobald mindestens ein akzeptierender Zustand unendlich oft in einem Lauf vorkommt Dies bedeutet dass sie nie halten wenn der Automat als eine reelle Maschine betrachtet wird Das ist besonders interessant da viele Systeme bei denen man Model Checking anwenden will auch nicht terminieren Das wirft aber auch die Frage auf wie man berhaupt berpr fen soll ob ein solcher Automat akzeptiert Als direkte Folgerung aus den o g Argumenten ergibt sich dass W rter die von einem solchen Automaten erkannt werden sich jeweils aus einem endlichen Anfangsst ck und einem sich unendlich wiederholenden Endst ck endlicher L nge zusammensetzen Sp testens das Endst ck schlie t also einen Kreis Die akzeptierten W rter v haben also die formale Form v X wobei w die unendliche Entsprechung d
128. atische Analysen wie sie von der Projekt gruppe geplant waren von Nachteil ist Daher wurde der Entschluss gefasst eine komplett neue Bibliothek f r Automaten zu verfassen die sich einerseits an Konzepten schon be stehender Bibliotheken orientiert andererseits aber insbesondere in den o g Punkten eine gr ere Flexibilit t erm glicht Im Folgenden wird zuerst das Fundament der Bibliothek beschrieben Es wird auf die elementaren Bausteine eines jeden Automatens eingegangen und beschrieben wie diese in der Bibliothek verwirklicht wurden Der Kern der Bibliothek ist im ersten Semester des Projektes entstanden Im zweiten Semester wurde dieser dann einer gr ndlichen Re vision unterzogen Die gr ten nderungen ergaben sich bei der Darstellung von Mengen transitionsbewirkender Zeichen Wir wenden uns nun dem Ger st des AAA Automaten zu 3 2 1 Aufbau eines Automaten Alle Automaten verwenden Zust nde und Transitionen Daher erben alle Implementie rungen von der abstrakten Klasse aaa automaton Automaton deren Aufgabe es ist eine Verwaltung dieser Objekte anzubieten Alles was spezifischer ist insbesondere Operatio nen wird in abgeleiteten Klassen implementiert Es besteht die M glichkeit andere hnliche Automatenmodelle durch Vererbung zu rea lisieren Ge ndertes und neues Verhalten kann dann implementiert oder berschrieben werden Ein Automat ist eine graphen hnliche Struktur mit Zust nden als Knote
129. b schnitt 2 1 auf Seite 12 beschrieben alle im Automaten f r L A N L B dazu adjazenten Zust nde ebenfalls durch solche Tripel dargestellt werden ohne dass eine Datenstruktur f r den gesamten Ergebnisautomaten existiert An einem dieser Zust nde wird die Tie fensuche fortgesetzt die brigen Zust nde werden zusammen mit dem aktuellen Zustand auf dem Stack gespeichert Beginnt man also bei den Startzust nden des Automaten f r L A M L B die Tripel bestehen aus zwei Startzust nden und dem Index 0 so kann alles erledigt werden was im Abschnitt 3 2 5 4 beschrieben wird Die Methode findCommonWord liefert wie dort erw hnt ein im Schnitt von L A und L B liegendes Wort falls er nicht leer ist Die Methode findCommonRun liefert eine zu diesem Wort korrespondierende Zustandsfolge des Automaten auf dem die Methode aufgerufen wurde R ckgabewerte der Methoden sind Paare von W rtern bzw Paare von Zustandsfolgen wobei die erste Komponente das endliche Pr fix der akzeptierten Eingabe des akzeptierenden Runs ist und die zweite Komponente der zyklische Teil Der Vorteil dieses impliziten Leerheitstests besteht darin dass nur Speicher f r die Stacks der Tiefensuchen ben tigt wird Von selten vorkommenden worst case Eingaben z B Automaten die nur aus langen Ketten bestehen abgesehen ergibt sich ein viel geringerer Platzbedarf als bei der expliziten Konstruktion des Ergebnisautomaten Au erdem entf llt die f r diese Konstrukti
130. baum werden auf den verbleibenden Teilbaum dieser Art umgesetzt Das Er gebnis der Kompression ist im Allgemeinen nur noch ein gerichteter azyklischer Graph Die Methode behandelt zun chst die Bl tter des Originalbaumes wobei sie sich an den Tokens orientiert Im Anschluss werden alle Teilb ume der Tiefe 1 behandelt dann alle der Tiefe 2 usw wobei zwei Teilb ume der Tiefe syntaktisch quivalente Teilformeln repr sentieren wenn ihre Tokens bereinstimmen beide Wurzeln als linken Nachfolger dasselbe Objekt referenzieren und beide Wurzeln als rechten Nachfolger dasselbe Ob jekt referenzieren Der Zweck der Kompression besteht weniger in der Reduktion des ben tigten Speicherplatzes als in der M glichkeit jede Teilformel durch eine eindeutige Referenz zu identifizieren unabh ngig davon wie oft sie in der Formel vorkommt 3 1 1 1 4 Konversion zwischen B umen verschiedenen Knotentyps PNode B ume k nnen ber eine statische Methode der Klasse BPNode in BPNode B ume kon vertiert werden Jede direkte oder indirekte Unterklasse von BPNode sollte ber ei ne statische Methode zur Konversion von BPNode B umen in den jeweiligen Untertyp verf gen Da auch BPNode ber eine solche Methode besitzt kann innerhalb der BPNode Klassenhierarchie jeder Baum aus Objekten eines Typs mit genau einer Konversion in einen Baum eines beliebigen anderen Typs konvertiert werden Dabei k nnen nat rlich Informationen verloren gehen und nicht jede Ko
131. baums statt das Verfahren geht also wie in der Theo rie beschrieben nach dem Bottom Up Ansatz vor Auf der untersten Ebene werden f r die PresburgerAtome Automaten berechnet Diese Atom Automaten arbeiten auf einem Al phabet mit Bitvektoren der L nge von allVariables Jede Bitposition entspricht genau einer Arrayposition Genauer gesagt ist allVariables die Variablenordnung jedes ein zelnen Atom Automaten Das zugrundeliegende PresburgerAtom muss man sich also auf s mtliche relevante Variablen expandiert vorstellen wobei nicht vorkommende Variablen den Koeffizienten O erhalten Alle Atom Automaten benutzen dasselbe Alphabet Nachdem alle Atome und Booleschen Verkn pfungen behandelt worden sind werden die Quantor Automaten berechnet Der innerste Quantor wird zuerst bearbeitet Aufgrund der gew hlten Variablenordnung steht die zugeh rige Variable in der letzten Komponente von allVariables Der zugeh rige Bitindex ist 0 Diese Bitposition muss wegprojiziert werden was besonders einfach ist Es m ssen lediglich s mtliche Symbolintervall Grenzen des Automaten durch 2 dividiert werden Aufeinanderfolgende Intervalle verschmelzen genau dann zu einem Intervall wenn zwischen ihnen nur ein Symbol lag Beim n chsten Quantor bezieht sich wieder die letzte Bitposition auf die durch diesen Quantor gebundene Variable dies ist bei allen Quantoren so Direkt im Anschluss an die Projektion muss noch sichergestellt werden dass alle Re pr sentatione
132. ben beschriebene parallele Automat 3 2 1 7 5 Umkehrung Die Umkehrung eines Automaten bezeichnet die Operation die bei einem endlichen Automaten einen endlichen Automaten zur ckgibt der genau die umgekehrte bzw gespiegelte Sprache des urspr nglichen Automaten akzeptiert So w rde bei der Umkehrung eines Automaten der das Wort Hallo akzeptiert ein Automat entstehen der das Wort ollaH akzeptiert Wenn a ein endlicher Automat vom Typ aaa automaton FiniteAutomaton ist so wird mittels a renderReversed der Automat umgekehrt Intern arbeitet die Umkehrung so dass alle Transitionen umgedreht werden dazu besit zen Transitionen eine eigene interne Methode Danach werden alle Anfangszust nde zu akzeptierenden Zust nden und alle akzeptierenden Zust nde zu Anfangszust nden 3 2 1 7 6 Determinisierung M chte man den zu einem NFA quivalenten DFA be rechnen so muss der NFA determinisiert werden Da NFAs in der Regel eine kompaktere Beschreibung regul rer Sprachen erm glichen ist dabei mit einer Zunahme der Zustands anzahl zu rechnen welche im worst case exponentiell sein kann In vielen F llen beobach tet man jedoch nur ein mildes Wachstum des Automaten Die Methode determinize determinisiert einen gegebenen nichtdeterministischen endlichen Automaten per Potenzmengenkonstruktion Im resultierenden DFA entspricht ein Zustand einer Zustandsmenge des NFA F r alle W rter w die einen Zustand s die ses DFA er
133. bjekt der anderen umzuwandeln 3 2 1 8 4 Hilfsfunktionen In der Klasse aaa automaton AutomatonUtilities be finden sich eine Reihe n tzlicher statischer Methoden die bisher noch keinerlei Erw hnung fanden Diese dienen dazu h ufig ben tigte und g ngige Automaten zu erzeugen So gibt es eine Methode createAutomatonForWord String f r die Erstellung von Automaten die genau ein bestimmtes Wort erkennen das mittels eines String ausgedr ckt wird Andere g ngige Automaten sind der Automat der alles akzeptiert derjenige der nichts akzeptiert und schlie lich der der nur das leere Wort akzeptiert Zuletzt sei noch erw hnt dass die M glichkeit besteht einen Automaten aus einem re gul ren Ausdruck zu konstruieren Intern wird dabei die entsprechende Funktionalit t in der Bibliothek dk brics benutzt und der resultierende Automat importiert s 0 Dies leistet die Methode fromRegExp String Diese Methode nutzt die Import und Ex portm glichkeiten von dk brics und kann daher nur endliche Automaten konstruieren Es gibt jedoch auch einen eigenen Parser f r regul re Ausdr cke der auch die Konstruk tion von B chiautomaten aus w regul ren Ausdr cken erlaubt Zu diesem Thema sei auf Abschnitt 3 3 4 auf Seite 157 verwiesen 3 2 2 Berechnung von Transitionen bei Automatenoperationen Bei der Implementierung von Operationen auf endlichen Automaten sind Ergebnisautoma ten zu konstruieren f r die Transitionen berechnet werden m
134. bjekte zu vereinigen Wenn L A die vom Automaten A erkannte Spra che ist und L B die von B erkannte Sprache dann akzeptiert der Automat A union B die Sprache L A UL B 3 2 1 7 3 Vereinigung von FiniteAutomaton Objekten Zwei Finite Automaton Objekte k nnen vereinigt werden falls sie quivalente Alphabete benutzen Die Methode FiniteAutomaton union Automaton ver ndert beide Automaten nicht sondern gibt ein neues FiniteAutomaton Objekt zur ck Es wird ein neuer Startzustand erzeugt vom dem e Transitionen auf alle Startzust nde der beiden Automaten zeigen Der vereinigte Automat ist sicher nichtdeterministisch 3 2 1 7 4 Schnitt Bei der Schnittbildung soll zu Automaten A und B die Sprachen L A und L B erkennen der die Sprache L A N L B erkennende Automat konstruiert werden Dies wird von der Methode intersect realisiert Zu dem Automaten auf dem diese Methode aufgerufen wird und zu dem als Parameter angegebenen Automaten wird der parallele Automat berechnet der alle auf parallelen L ufen erreichbaren Paare von Zust nden aus den beiden urspr nglichen Automaten enth lt In diesem Automaten ist ein Zustand genau dann akzeptierend wenn die beiden Zust nde aus dem entsprechenden Paar es auch sind intersect berf hrt die Automaten zu denen der Schnittautomat zu berechnen ist nach 3 2 AUTOMATEN 117 Bedarf in deterministische Automaten Zur ckgeliefert wird ein neues FiniteAutomaton Objekt der o
135. brauch einer Software unter der GPL damit einverstanden dass seine eigene Software den gleichen rechtlichen Grundlagen unterliegt wie die urspr ngliche Software Diesen Vorgang nennt man auch Copyleft LGPL Lesser General Public License Die LGPL urspr nglich Library Gene ral Public License genannt ist speziell f r Softwarebibliotheken entwickelt worden Sie entspringt einer Kritik an der Forderung der GPL dass eine Software die Biblio theken unter der GPL nutzt ebenfalls unter der GPL ver ffentlicht werden muss Steht eine Bibliothek unter der LGPL so kann sie frei verwendet werden und es m ssen nur Ver nderungen an der Bibliothek ffentlich gemacht werden BSD Die BSD Lizenz hnelt nur noch in groben Z gen der GPL Sofware un ter der BSD Lizenz darf von fremden Personen genutzt werden und nderungen 2 4 EXISTIERENDE L SUNGEN 99 m ssen nicht ver ffentlicht werden Das hei t die Software steht nicht unter der Einschr nkung des Copylefts Die BSD Lizenz schr nkt einen User nur bez glich der Copyright Vermerke ein Diese d rfen unter keinen Umst nden entfernt werden 2 4 2 2 dk brics automaton dk brics automaton ist von Anders M ller am BRICS research center der Universit t von Aarhus entwickelt worden Es handelt sich hierbei um eine Bibliothek die DFA NFA Automaten und regul re Ausdr cke implementiert Diese Bibliothek wird st ndig weiterentwickelt Die letzte verf gbare Version wur
136. bschnitten 3 6 4 Kripke Modelle und 3 6 5 OBDDs beschrieben Die Klassen PaintableAutomaton PaintableState und PaintableTransition stellen eine eigene Datenstruktur fiir Automaten dar Allerdings enth lt sie keine automatenspe 202 KAPITEL 3 GRUPPENERGEBNISSE zifische Funktionalit ten kann sich daf r aber ber das Paintable Framework darstellen und bearbeiten lassen Zur Anzeige eines Automaten aus dem aaa automaton Package ist eine bersetzung in einen PaintableAutomaton Automaten erforderlich welche aber im Prinzip nur eine 1 1 Abbildung darstellt und somit ohne gr eren Aufwand m glich ist Abbildung 3 36 zeigt die wichtigsten zur Umsetzung implementierten Klassen Die Paintable Basis findet man in den Klassen PaintableContainer AbstractPaintable und TextLabel wieder die zur Verwendung f r die Automatendarstellung passend erwei tert werden 3 6 3 1 Klasse PaintableAutomaton Die Klasse PaintableAutomaton stellt das visualisierbare Gegenst ck zur Klasse aaa automaton Automaton dar Sie ist im Prinzip nur ein Container f r PaintableState und PaintableTransition Objekte PaintableAutomaton implementiert selbst nicht das Paintable Interface sondern ist im Prinzip nur eine Verwaltungsklasse Da die Methoden zur Verwaltung von Zust nden und Transitionen selbstbeschreibend sind seien hier nur noch kurz die Listener erw hnt die sich in PaintableAutomaton registrieren lassen 3 6 3 1 1 PaintableAutomatonLayout
137. bzw vy der beiden OBDDs gerichtet ist W hrend der Berechnung wird das OBDD Ga b erzeugt dessen Knoten mit Va vb bezeichnet werden Es k nnen sechs F lle auftreten 1 Fall vg und v sind beide mit der Variable x markiert Es wird der Knoten Va vp erzeugt und mit der Variable x markiert Der 0 Nachfolger ist der Knoten Vag Ub wobei Va der 0 Nachfolger von Knoten va ist Der 1 Nachfolger von va vp ist analog Vai Up Die Berechnung wird dann rekursiv an den beiden Nachfolgern fortgesetzt 2 Fall va ist mit der Variable x und v mit x markiert wobei i lt j ist Die Variable x steht also in der Ordnung vor x das OBDD G muss auf Ga warten der Zeiger bleibt also auf v ruhen w hrend er in G den 0 bzw 1 Nachfolger folgen muss Es wird der Knoten va vb erzeugt und mit x markiert Sein 0 Nachfolger wird Vao Up und sein 1 Nachfolger wird v U Ga muss warten 3 Fall va ist mit x und v mit x markiert wobei gt j ist Der Fall ist analog zu Fall 2 Es wird der Knoten va vp erzeugt und mit x markiert Sein 0 Nachfolger wird Va Vbo und sein 1 Nachfolger wird va v Ga muss warten 4 Fall va ist eine Senke und vp ist mit x markiert Auch hier muss das OBDD Ga auf G warten Es wird der Knoten va vp erzeugt und mit x markiert Sein 0 Nachfolger wird vq Vbo sein 1 Nachfolger Va Up 134 KAPITEL 3 GRUPPENERGEBNISSE 5 Fall va ist mit x markiert und v ist ei
138. c List lt Method gt availableMethods List lt extends Object gt Diese Methode liefert eine Liste von Method Objekten zur ck welche mit der bergebenen Liste von Parametern ber diesen Driver aufgerufen werden k nnen Die Entscheidung dar ber ob eine Methode auf die bergebenen Parameter aufgerufen werden kann wird anhand von Typ und Anzahl der Parameter Objekte und anhand der Meta Informationen der entsprechenden Operation Annotation der Methode getroffen Die Implementation dieser Entscheidungsfindung ist in der privaten Methode private boolean canOperateOn Method List lt extends Object gt siehe auch 3 5 5 3 gegeben Die zur ckgelieferte Liste enth lt Objekte der Standard API Klasse java lang reflect Method aus dem Java Reflection Package Aus diesen Objekten k nnen dann f r den Workspace auf einfache Weise die jeweiligen Methodennamen und gegebenenfalls auch weitere Informationen extrahiert werden 3 5 5 2 2 public OperationResult operate Method List lt extends Object gt Diese Methode f hrt eine als Parameter bergebene Methode auf die ebenfalls bergebene Liste von Parametern aus und liefert das Ergebnis des Methoden Aufrufes zur ck Hier sollten nur Methoden und Parameterlisten bergeben werden die von der zuvor erw hnten Methode availableMethods als kompatibel identifiziert wurden 186 KAPITEL 3 GRUPPENERGEBNISSE da andernfalls eine IllegalArgumentException geworfen wird Passen Parameter und Method
139. ceFrame gezeichnet Sie ist von der Klasse javaz swing JFrame ab geleitet und bildet das Hauptfenster des Workspace Im Workspace werden folgende Komponenten initialisiert WorkspaceMenu Diese Klasse bildet das Men des Workspace in dem Aktionen abgelegt werden k nnen Beim Initialisieren des Men s werden alle statischen Aktionen aus der Klasse WorkspaceControl ins Men aufgenommen Au er dem enth lt die Klasse Methoden mit denen dynamisch Eintr ge dem Men hinzugef gt werden k nnen Diese Methoden bilden eine Schnittstelle f r die Addons um sich beim dynamischen Laden ins Men einzutragen Es gibt zwei Schnittstellen im Men e addFileNewItem JMenultem item Diese Methode erm glicht neue Transformationsverfahren dem Men hinzuzuf gen 3 4 DER WORKSPACE STAND FEBRUAR 2006 169 e addFileActionItem JMenultem item ber diese Methode k nnen Au tomatenaktionen ins Men eingetragen werden Die WorkspaceToolBar Der Workspace verf gt ber eine Toolbar ber die schnell und bequem Aktionen aufgerufen werden k nnen Diese Toolbar wird nur zum Anlegen von neuen Projekten verwendet DesktopPane Die DesktopPane bildet die zentrale Arbeitsfl che des Workspace In ihr k nnen beliebig viele InnerFrame Objekte angelegt werden Sie ist ab geleitet von der Klasse javaz swing JDesktopPane InnerFrame InnerFrames wurden im vorherigen Abschnitt als Automatenfens ter bezeichnet Hierbei handelt es sich um
140. chlaufen und f r alle gefundenen Knoten die mit einem Pr dikat markiert sind ein PresburgerAtom mit dem Knoten als Parameter erzeugt Das PresburgerAtom wird im Knoten gespeichert Alle gefundenen Atome werden in eine Liste aufgenommen Die f r das Atom berech nete Normalform entspricht der im Abschnitt Erf llbarkeitspr fung von Formeln der Presburger Arithmetik definierten Hinzu kommt lediglich dass die Variablen lexikogra phisch sortiert sind und alle Koeffizienten von Null verschieden sind Das PresburgerAtom durchl uft jeden der beiden Term B ume und aktualisiert die Variablenkoeffizienten in ei ner HashMap wann immer er auf die Variable st t sie kann ja mehrfach in der Summe vorkommen Dabei wird ber einen Vorzeichenparameter auch das bin re korrekt ver arbeitet Anschlie end werden die beiden Terme zur linken Seite verrechnet aber die konstanten Summanden zur rechten Seite verrechnet 3 1 2 2 4 Bestimmung der relevanten Variablen Der normalisierte Syntaxbaum kann irrelevante Variablen enthalten Dabei handelt es sich zum einen um Quantor Variablen die im G ltigkeitsbereich des Quantors gar nicht auftreten Zum anderen sind solche Variablen irrelevant die zwar in unnormalisierten Atomen vorkommen je doch in keiner der durch die PresburgerAtome dargestellten Normalformen So ist in 7xa 8xy z 7xx 2 y 16 V 4x1 8xy 3x1 r 2xz A 30xy 60xz lt 0 die Va riable x irrelevant Die Menge der relevan
141. d OBDDBuilder createFromFormula boolexp psa Umgekehrt l sst sich ein OBDD auch wieder zur ck in eine Formel umwandeln Es wird immer die Shannon Zerlegung berechnet Diese ist wie folgt definiert Definition 2 Die von einem Knoten v dargestellte Funktion f ergibt sich wie folgt e fallsv eine Senke ist dann ist die dargestellte Funktion f der Wert der Markierung von Y e falls v ein innerer Knoten mit Beschriftung x ist dann ist f x ai A foo V Ti A fo Wobei fy die vom 0 Nachfolger von v dargestellte Funktion ist Der aaa automaton util obdd formula 0BDD2BooleanExpressionConverter be rechnet aus einem OBDD einen BooleanExpression Baum der dann mit dem InfixConverter im selben Package zu einer Formel in Infixnotation konvertiert werden kann Beispiel OBDD2BooleanExpressionConverter conv new OBDD2BooleanExpressionConverter obdd BooleanExpression converted conv computeResult InfixConverter infix new InfixConverter converted System out println infix computeResult Eleganter l st diese Aufgabe allerdings die toString Methode der OBDD Klasse 3 2 4 7 Nutzung W hrend bei endlichen Automaten sogar nicht vorhandene Knoten durch eine neue Tran sition implizit erzeugt und verbunden werden k nnen kann dies bei OBDDs nur expli zit durch die connect Methode mit vorhandenen Knoten geschehen Durch diese Me thode werden zwei Zust nde from und to durch eine Kante mit de
142. dd1 union obdd2 liefert ein OBDD f r die Vereinigung zur ck analog der Aufruf obdd1 intersect obdd2 f r den Schnitt 3 2 4 4 Komplement Wenn man ein OBDD Gy als eine kompakte Darstellung der Menge der erf llenden Be legungen f r die Formel f auffasst dann ist das Komplement Gy die Menge der nicht erf llenden Belegungen von f oder die Formel f Das Komplement von einem OBDD Objekt wird durch OBDD renderComplementary berechnet Dabei wird das Objekt wie bei allen render Methoden selbst ver ndert Es ist nichts weiter zu tun als die beiden Senken zu vertauschen 3 2 AUTOMATEN 135 3 2 4 5 Ersetzung durch Konstanten und Quantifizierung Die Operation Ersetzung durch Konstanten erlaubt es eine Variable x in dem OBDD konstant auf 1 oder 0 zu setzten Durch den Methodenaufruf OBDD assignConstant int i boolean constant wird ein reduziertes OBDD berechnet in dem die Variable x auf den Booleschen Wert constant gesetzt ist Alle Vorkommen von mit x markierten Knoten werden eliminiert und ihre eingehenden Kanten auf den entsprechenden constant Nachfolger des x Knotens gesetzt Durch diese Methode ist es leicht in einem OBDD die Variable x zu quantifizieren Hierzu wird das OBDD Gyo f r die Funktion a 9 und das OBDD Ga f r die Funk tion aj2 berechnet Falls x allquantifiziert werden sollen werden die beiden OBDDs Gao und Gay mit AND synthetisiert Die Funktion soll alle m glichen Belegungen von z er
143. de am 8 August 2005 ver ffentlicht und ist bereits an Java 1 5 angepa t ltere Versionen f r Java 1 4 sind ebenfalls erh ltlich Der Sourcecode ist nutzbar unter den Bedingungen der Open Source BSD Lizenz Funktionsumfang Mit Hilfe von dk brics automaton lassen sich Automaten auf zwei Arten modellieren Zum einen kann man einen Automaten durch explizite Angabe der Zust nde und Zustands bergangsfunktion modellieren Auf diese Art lassen sich auch NFAs implementieren Die zweite M glichkeit besteht darin einen Automaten durch die Angabe eines regul ren Ausdrucks erzeugen zu lassen Automat Auf Automaten sind eine Vielzahl weiterer Operationen erlaubt Es stehen drei Algorithmen zur Minimierung von Automaten zur Verf gung Brzozowski s O 2 Hopcroft s O n log n Huffman s O n Komplement Produktsprache Quo tientensprache Entfernen von berfl ssigen Zust nden Vereinigung von Automa ten Kleene scher Abschluss von Automaten Konvertieren eines NFA Automaten in einen DFA Automaten Fazit dk brics automaton ist eine sehr kleine und bersichtliche Automatenbibliothek Sie besteht aus sechs Klassen was sie sehr bersichtlich und verst ndlich macht Sie erf llt so gut wie alle Anspr che an eine Automatenbibliothek und arbeitet dar ber hinaus sehr effizient Sehr positiv f llt au erdem auf dass ein Automat aus Zust nden und Zu stands bergangsfunktion identisch zum Automaten seines regul ren Ausdrucks i
144. dem dritten Objekt der Liste aufgerufen usw 3 5 5 4 Die abstrakte Klasse Plugin Die Klasse Plugin ersetzt und bernimmt die Funktionen der Klasse AddonWorkspacePreprocess da diese Klasse im zweiten Semester umbenannt und mit weiteren Funktionen versehen worden ist Hauptaufgabe der Klasse AddonWorkspacePreprocess war es eine einheitliche Struktur aller Addons zu er reichen um diese dynamisch zu laden Die neue abstrakte Klasse Plugin erf llt weiterhin diese Aufgabe und folgende neue Aufgaben kamen im zweiten Semester dazu e ber die Methode addAutomatonToFrame InnerFrame innerFrame Automaton automaton boolean editable kann jedes Plugin flexibel bestimmen wie ein Au tomat in seinem zugeh rigen InnerFrame dargestellt wird Au erdem kann bestimmt werden ob dieser Automat im Editor bearbeitet oder nicht bearbeitet werden darf Eine konsistente Darstellung der Eingabe und der dargestellten Automaten wird so erreicht Siehe GenericOperationDriver Abschnitt identity e Jedes Plugin wird ber Auswahlver nderungen von Automaten im Workspace in formiert Dies geschieht ber die Methoden framesSelected List lt InnerFrame gt selectedFrames und framesDeselected List lt InnerFrame gt selectedFrames 188 KAPITEL 3 GRUPPENERGEBNISSE So kann jedes Plugin gezielt berpr fen ob es f r einen markierten oder demar kierten Automaten zust ndig ist und dieses h ndeln wie z B Hinzuf gen oder Entfernen von Men eintr g
145. den uns im Zustand 2 don t care Es sei der Bitvektor 1 0 0 1 eine Eingabe f r den Automaten Jede Stelle im Eingabevektor korrespondiert mit einer Variablen So geh rt die Stelle 0 im Eingabevektor zur Variablen 0 die Stelle 1 zur Va riablen 1 u s w Da wir uns im Zustand 2 befinden folgen wir dem Pfeil ausgehenden Kante der uns zur ersten Variablen f hrt Die erste Variable ist die Variable mit Index 0 Wir schauen uns die Eingabe f r diese Variable an Sie befindet sich an Stelle 0 im Eingabevektor Falls die Eingabe 1 ist folgen wir dem durchgezogenen Pfeil bei einer 0 dem gestrichelten Ist die Eingabe 1 so folgen dem Pfeil zur Variablen 1 An Stelle 1 befindet sich im Eingabevektor eine 0 Wir folgen deshalb dem gestrichelten Pfeil zur Variablen 2 Auch hier steht an 2 Stelle 2 Eingabevektor eine 0 und f hrt uns zum Blatt 4 Dies bedeutet dass wir f r den gegebenen Eingabevektor einen Zustandswechsel vom Zustand 2 zum Zustand 4 machen m ssen Neben der M glichkeit DFAs zu konstruieren ist es in MONA auch m glich Baumau tomaten zu erstellen In MONA werden diese GTAs Guided Tree Automata genannt Als Eingabelogik f r solche GTAs wird eine Verallgemeinerung der WS1S verwendet die WS2S Weak monadic Second order theory of 2 Succesors Die 1 in WS1S deutet an dass Elemente mit nur einem Nachfolger behandelt werden in MONA werden diese Elemente als String interpretiert WS2S hingegen behandelt Elemente mit zwei
146. dentifikation siehe Abschnitt 3 2 1 4 er indu ziert au erdem eine totale Ordnung auf den Zust nden 4 string ist eine textuelle Beschreibung 5 label ist ein beliebiges mit einem Zustand assoziiertes Objekt 6 accepting und oder initial oder keines von beiden Der Index wird intern neu gesetzt wenn sich die states Liste ndert das owner Attribut kann nur einmal intern beim Hinzuf gen eines Zustands zu einem Automaten gesetzt wer den Dabei ist die Existenz eines Startzustandes f r einen Automaten eine Minimalanfor derung Die anderen Attribute sind auch nachtr glich durch einen Benutzer ver nderbar Bei der Ver nderung des key Attributs muss nat rlich die Eindeutigkeit erhalten bleiben Es existieren vier verschiedene Konstruktoren die einen neuen Zustand erzeugen 1 State Object label String string boolean accepting boolean initial Der neue Zustand erh lt genau die bergebenen Eigenschaften SIn der Klasse OBDD die ebenfalls von Automaton erbt wird allerdings erwartet dass die beteiligten Zust nde dem OBDD bereits bekannt sind 3 2 AUTOMATEN 107 2 State State state Dieser Konstruktor kopiert den bergebenen Zustand und erstellt einen Klon von ihm alle Eigenschaften bis auf das owner Attribut sind identisch 3 State String string Hier wird ein Zustand einfach durch eine textuelle Be schreibung erzeugt label wird auf null und accepting und initial werden auf false gesetzt 4 State
147. der Presburger Logik mit Hilfe endlicher deterministischer Automaten und sp ter Model Checking mit Automaten zu verwirklichen weshalb die Kenntnis der entsprechenden Vortr ge f r das Verst ndnis und die Implementierung von Nutzen waren Die Vortr ge Endliche Baumautomaten Alternierende Automaten und B chiautomaten liefern gewisserma en das theoretische Fundament f r die oben genannten Vortr ge zu Analyse verfahren Insbesondere der Vortrag ber B chiautomaten sei dem Leser ans Herz gelegt da dieses Automatenkonzept dann auch in der Automatenbibliothek verwirklicht worden ist Die Vortr ge ber alternierende Automaten und endliche Baumautomaten geben An reize f r m gliche Fortsetzungen des Projekts Der Vortrag zur Erreichbarkeitsanalyse f llt etwas aus dem Rahmen er fand im Verlauf des Projekts auch keine weitere Ver wendung Die Vortr ge Mona Mosel ABC and Friends und Das Eclipse Project sollten eine bersicht ber bestehende Werkzeuge und deren m gliche Verwendbarkeit geben Es wurde keines dieser Tools verwendet Der Vortrag berblick ber Automaten 7 8 KAPITEL 2 SEMINARPHASE Bibliotheken ist interessant um einen Einblick in bestehende Automatenbibliotheken zu erhalten Insbesondere der Automatenbibliothek dk brics ist Aufmerksamkeit zu schen ken da die Konzeptualisierung unserer Bibliothek darauf zur ck geht und gewisserma en eine Verallgemeinerung d
148. der jeweils andere Prozess seinen kritischen Bereich verlassen hat bzw auf einen Neueintritt wartet 3 1 5 1 5 Modellbildung Die Modellbildung gliedert sich in in drei Klassen die je weils eine dedizierte Funktion bernehmen und jeweils die ihr direkt untergeordnete Klasse steuern siehe 3 5 e Sandbox Erzeugung der initialen Umgebung der Programmgraphen und Verwalter ber Einsprungspunkte in die Programmgraphen Steuerung aller Kontexte e Context Bildung der Kripkestruktur parallel zu allen anderen Kontexten Verwal tung der Prozesse e Prozess f hrt Programm aus 3 1 5 1 5 1 Sandbox Die Sandbox stellt den Rahmen der Modellbildung dar Sie ist haupts chlich f r die Erzeugung der Programmgraphen und f r die Steuerung der einzel 2Wurzelknoten 98 KAPITEL 3 GRUPPENERGEBNISSE Decl a 0 1 b 0 1 turn 0 1 mutex 0 2 endDecl Proc pO while 1 lt 2 a 1 turn 0 wait until b 0 turn 1 mutex mutex 1 mutex mutex 1 a 0 J endProc Proc pl while 1 lt 2 b 1 turn 1 wait until a 0 turn 0 mutex mutex 1 mutex mutex 1 b 0 Fi endProc Init atomic a 0 b 0 turn 0 mutex 0 spawn pO spawn pl J Y endInit Abbildung 3 4 Aufbau eines einfachen While Programms 3 1 TRANSFORMATION 99 Abbildung 3 5 Schalenmodell nen Kontexte zust ndig 1 Erzeuge f r
149. des Addons verwendet werden k nnen Wichtig f r das dynamische Einlesen sind im Moment die Schl ssel name und class Der Schl ssel name wird beim Laden des Addons in der Konsole angezeigt und informiert somit einen Benutzer beim Start welche Addons seinem Workspace hinzugef gt worden sind Die Variable class wird zum dynamischen Klassen laden der Addoninitialklasse ben tigt Diese Klasse ist von der oben beschrie benen Klasse AddonWorkspacePreprocess abgeleitet Datei addon xml lt xml version 1 0 encoding UTF 8 gt lt DOCTYPE properties SYSTEM http java sun com dtd properties dtd gt lt properties gt lt comment gt Presburger Plugin lt comment gt lt entry key name gt Pluginname lt entry gt lt entry key version gt version 0 1 lt entry gt lt entry key class gt aaa workspace addons plugin nameplugin initclass lt entry gt lt properties gt y addons y driver y newdriver E addon xml E NewDriver E drivermanger plugin newplugin addon xml NewPlugin E pluginmanger E Addonmanager E Addon WorkspacePreprocess m off a Abbildung 3 31 Die Addonverzeichnisstruktur Wie werden Plugins dynamisch geladen Eine g ltige Pluginstruktur sieht folgen derma en aus Der Workspace besitzt ein Unterverzeichnis Addons In diesem be 176 KAPITEL 3 GRUPPENERGEBNISSE finden sich die Verzeichnisse Plugin und Driver Ein neues Addon wird in einem neuen Unterverz
150. die f r die Eingabe einer Sprache n tig sind Im Konstruktor des TextEntryPanels kann ei ne java util LinkedList mit java lang Character Objekten bergeben wer den Diese werden dann als Sonderzeichen zur Verf gung gestellt Wird der leere Konstruktor oder eine leere Liste bergeben so wird diese nicht angezeigt Un ter der Sonderzeichenleiste befindet sich ein javaz swing JTextArea in der die gew nschte Transformationsformel eingegeben werden kann Das letzte Element des Dialogs bildet ein javaz swing JButton mit dem eine Transformation gest artet wird Da diese Aktion flexibel gehalten werden muss erm glicht die Methode setOkButtonAction Action action die Transformationsaktion zu ver ndern So kann dieser Dialog f r mehrere Transformationsverfahren genutzt werden PropertyManager Oft hat ein User den Wunsch seine graphische Arbeitsumgebung individuell auf sich pers nlich zugeschnitten einzurichten Dieser Wunsch kann durch den Workspace erf llt werden Der Workspace ist mit der Klasse PropertyManager ausgestattet die es erlaubt Einstellungen und Zust nde des Workspaces zu spei chern und beim erneuten Aufruf des Workspaces wieder einzulesen Diese Be nutzerinformationen werden im Hauptverzeichnis des Workspaces in der Datei properties cfg gespeichert Datei Properties cfg Triple A properties file Sat Jan 28 15 18 04 CET 2006 locale en 3 4 DER WORKSPACE STAND FEBRUAR 2006 171 PropertyManager Attribu
151. drei Teile e Deklaration Hier werden die verf gbaren Variablen deklariert und deren Wertebe reiche angegeben Es sei darauf hingewiesen dass ein berschreiten bzw Unter schreiten von min oder max zum Abbruch der Modellkonstruktion f hrt Decl varName min max endDecl e Methoden Prozessteil Hier werden Methoden bzw Prozesse als While Programmfragment beschrieben Jede Methode ist gleichzeitig auch ein Prozess und umgekehrt Es h ngt nur davon ab wie sie aufgerufen werden ob sie als Methode oder Prozess ausgef hrt werden Proc procName endProc e Initialisierung Dieses Programmfragment wird vom initialen Prozess ausgef hrt Init Y endInit Der Gesamtaufbau der Syntax kann in 3 19 in Erfahrung gebracht werden Die Syntax der einzelnen Kommandos folgt in 3 1 5 1 4 1 96 KAPITEL 3 GRUPPENERGEBNISSE 3 1 5 1 4 1 While Kommando Syntax Semantik Die Syntax der einzelnen Kom mandos ist jeweils als PEG siehe angegeben Assignments VAR ARITH Weist VAR den Wert zu dem ARITH auswertet zu wobei ARTIH ein beliebiger arith metischer Ausdruck sein kann If af BOOL 2 m MBODY1 ny else ae MBODY2 he ye Falls BOOL zu wahr ausgewertet wird wird als n chstes MBODY1 ausgef hrt Wer tet BOOL zu falsch aus wird falls der else Teil vorhanden ist MBODY2 ausgefiihrt andernfalls kommt die n chste Anweisung zur Ausf hrung while while
152. e P in deren zugeh rigem Bitvektor mindestens ein Bit gesetzt ist ein neues OBDD O erzeugt das eine Kopie von Oz ist Dabei wird P 1 Senke von OP Alle anderen Pseudo Senken werden zur 0 Senke von OP verschmolzen Sei O die Menge der OBDDs die zu den 1 Senken in P korrespondieren und sei Oo die Menge der brigen OBDDs Die von OP dargestellte Menge enth lt genau die Symbole die in allen von den O OBDDs dargestellen Mengen enthalten sind und in keiner der Mengen die von den Oo OBDDs dargestellt werden Es kann also eine Transition des Potenzmengenautomaten konstruiert werden die die Menge der Zust nde erreicht die Ziele der Transitionen sind die mit den OBDDs in Oy markiert sind 3 2 AUTOMATEN 131 3 2 4 OBDDs In Abschnitt 3 2 3 1 auf Seite 128 wurde beschrieben warum OBDDs zur Darstellung von Symbolmengen implementiert wurden OBDDs sind eine in der Schaltkreisverifikation h ufig gebrauchte Datenstruktur Sie waren in den letzten 20 Jahren und sind es noch heute Gegenstand der theoretischen Forschung die eine Vielzahl von Ergebnissen zutage gef rdert hat Insbesondere sind effiziente Algo rithmen f r die blichen Mengenoperationen auf OBDDs bekannt Zun chst soll eine formale Definition von OBDDs vorgenommen werden Definition 1 Ein r OBDD zu einer Variablenordnung T 11 Tn ist ein azykli scher gerichteter Graph G V E mit einer Quelle e Der Graph enth lt nur innere Konten mit
153. e ber die Anzeige hinausge henden Editier Funktionen im zweiten Semester zu erstellen Zahlreiche Detailver nderungen mussten zun chst vorgenommen werden darunter z B das Erkennen von Tastaturereignissen und eine komfortable M glichkeit neue Transi tionen aus Zust nden herauszuziehen Auf die Implementation dieser Details soll hier nicht weiter eingangen werden f r eine Beschreibung der Anwendung sei hiermit auf das Benutzerhandbuch des Workspace verwiesen Das im ersten Semester programmierte Listener System welches beliebige interessier te Objekte ber Ver nderungen des angezeigten Automaten durch den Benutzer signa lisierte wurde ausgebaut Die im Abschnitt 3 6 3 1 beschriebenen Klassen und Me thoden wurden dazu gr ndlich getestet und in Details optimiert Damit war nun ei ne Grundlage geschaffen um Ver nderungen in der Darstellung in Echtzeit an das 3 6 EDITOR 207 darunterliegende Automatenmodell weiterzureichen Diese Aufgabe bernimmt die Klas se AutomatonToPaintableConverter welche nun das Interface PaintableAutomaton StructuralChangeListener implementiert und damit nun nicht mehr nur Automaton Objekte in eine PaintableAutomaton Darstellung konvertieren sondern auch in Gegen richtung arbeiten kann interface PaintableAutomatonStructuralChangeListener void changePerformed StructuralChangeEvent AutomatonToPaintableConverter PaintableAutomaton Automaton
154. e Algorithmus 1 vgl S 14 KAPITEL 2 SEMINARPHASE 1291 procedure emptiness for all qu Q do dfs1 go terminate false end procedure procedure dfs1 q local q hash q for all successors q of q do if q not the hash table then dfs1 q if accept q then dfs2 q end procedure procedure dfs2 q local q flag q for all successor q of q do if q on dfs1 stack then terminate True else if q not flaggt then dfs2 q end if end procedure Algorithmus 1 Leerheitstest fiir BAs 2 1 1 3 4 Komplement von b chierkennbaren Sprachen Ein Vorgehen wie bei einem endlichen Automaten f r endliche W rter ist hier nicht m glich Grob gesagt kann man dort einfach die Akzeptanz Eigenschaft jedes einzelnen Zustands negieren und erh lt auf diese Weise einen Automaten der L akzeptiert Man kann zwar einen BA konstruieren der das Komplement der Sprache erkennt hat allerdings das Risiko eines exponentiellen Blowups Die Konstruktion oder der Beweis der Eigenschaft ist f r diesen Text zu um fangreich Es funktioniert zum Beispiel mit der Konstruktion von Safra vgl S 125 2 1 1 3 5 Verallgemeinerte B chiautomaten Verallgemeinerte oder generalisier te B chiautomaten k nnen mehrere Klassen an akzeptierenden Zust nden haben P CFf ir0 lt i lt n Dieser Automat akzeptiert erst wenn mindestens ein akzeptierender Zustand je Klasse unendlich oft durchlaufen wurde Das bed
155. e Automaten Mit diesem k nnen endli che Automaten mit einem Character Alphabet gezeichnet werden Des weiteren erm glicht es alle g ngigen Automatenoperationen Zur Basis der Analysetools geh ren zwei Funk tionen die einen Lauf im Automaten erm glichen sowie eine Funktion die akzeptierte W rter f r jeden akzeptierenden Endzustand anzeigt 3 7 9 1 1 Starten des Plugins ber den Men eintrag File New Finite automaton via visual editing CharacterSymbol Alphabet kann eine neue Automatenanalyse gestartet werden Man erh lt ein neues Automatenfenster in dem ein neuer endlicher Automat gezeichnet werden kann 3 7 9 1 2 Operationen auf Automaten Das Plugin erlaubt die g ngigen Automa tenoperationen auf endlichen Automaten Hierbei unterscheidet man Operationen auf genau einem oder auf mehreren Automaten Auf die einzelnen Operationen wollen wir hier im Einzelnen nicht eingehen 3 7 9 1 3 Analysen Console I Find Find members member Abbildung 3 58 Auffinden einer akzeptierenden Belegung Findmembers Diese Funktion startet man indem man einen Automaten markiert und diese Funktion im Analysemenii aufruft Das Ergebnis ist eine Liste mit je einem ak zeptierten Wort pro akzeptierendem Endzustand Klickt man einen dieser Eintr ge an so wird dieser farblich hervorgehoben sofern der Automat nicht verborgen ist Run Bei dieser Funktion kann ein Lauf im Automaten simuliert werden Auc
156. e Automaton Finite Automaton Presburger Plugin 9 Presburger Plugin x 12 3 x 12 3 9 Regular Expression Plugin 9 Regular Expression Plugin aaabb aaabb Kripke from While Plugin 4 Kripke from While Plugin Kripke Model 1 Abbildung 3 51 Auswahl von Automaten im Navigator Umbennen von Automaten im Navigator Der Navigator erf llt mehrere Funktionen Klickt man in ihm einen Eintrag an so wird das zugeh rige Automatenfenster auf der Arbeitsfl che in den Vordergrund geholt Klickt man zweimal auf diesen Eintrag so wird das Fenster zus tzlich noch maximiert oder wieder reduziert Eintr ge k nnen umbenannt werden indem man einen Eintrag anklickt und die Maus auf dem Eintrag bel sst bis der Eintrag bearbeitbar ist zu sehen in Abbildung 3 51 auf der rechten Seite Dann kann man an dieser Stelle einen neuen Namen eingeben dieser muss mit Enter best tigt werden ansonsten wird der alte Eintrag wiederhergestellt Um die 3 7 HANDBUCH 221 Eintr ge eindeutig zu halten wird der Eintrag um eine Zahl erg nzt sofern ein Eintrag mit dem selben Namen bereits existiert Die linke Seite der oben erw hnten Abbildung zeigt das Markieren von Eintr gen im Navigator Hierbei werden die g ngigen Methoden UMSCHALT Mausklick und STRG Mausklick unterst tzt Die Nummern vor der Auswahl geben die Reihenfolge der aus gew hlten Automatenanalysen an Automatenoperationen sind abh ngig von der Auswahl in der Automatenliste 3 7
157. e SIBs zu berpr fen e Implementierung Zum Beispiel in Java oder C geschriebener Code der benutzt wird wenn der SIB Graph zu einem Programm kompiliert wird 2 5 1 2 2 ABC Komponenten SIB Graphen werden jeweils innerhalb einer Umge bung service definition environment entwickelt Die Umgebung stellt in Klassen einge teilte SIBs zur Verf gung Der local checker erm glicht eine einfache lokale Fehlererkennung indem f r einzelne SIBs berpr ft wird ob sie bestimmten Anforderungen gen gen Beispielsweise kann gepr ft werden ob alle Parameter gesetzt sind oder ob die Kanten richtig benannt sind Au erdem k nnen SIBs mit einem speziellen vom local checker pr fbaren local check code annotiert werden Der tracer dient der Fehlererkennung durch Testen Er erm glicht eine Ausf hrung des SIB Graphen wobei der prototypische red line code ausgef hrt wird 66 KAPITEL 2 SEMINARPHASE Der model checker dient der globalen Fehlererkennung F r jede Umgebung gibt es eine constraints Datenbank die Mengen temporallogischer Formeln erh lt die siehe 2 5 1 1 3 spezifizieren wie ein SIB Graph f r die Umgebung auszusehen hat Ob die constraints ver letzt sind kann per Mausklick berpr ft werden Im Fehlerfall kann eine Fehlersicht auf den Teilgraphen angezeigt werden in dem die Ursache f r die Verletzung des constraints liegt 2 5 1 3 Java ABC 2 5 1 3 1 Java als Programmier und Spezifikationssprache Fin neuer
158. e angenommen werden und welche nicht Auch so etwas soll ja gerade durch das Model Checking erkundbar sein Wenn eine LTL Formel aber beispielsweise die Proposition x 3 enth lt x den Wertebereich 0 22 hat aber nie den Wert 3 annimmt so bricht die Transformation der Formel mit einer Exception ab weil ihr B chiautomat das Alphabet des Kripkemodells identisch mit dem Alphabet des f r das Kripkemodell berechneten B chiautomaten verwendet Die Transitionen lassen sich nicht mit Mengen beschriften die x 3 oder x 3 enthalten Dieses Problem l st WhileLTLPreprocessor Er bekommt das AssignmentAlphabet des Kripkemodells oder B chiautomaten und ein Environment f r das Programm im Konstruktor bergeben Das Environment enth lt alle Variablen deren Wertebereiche und deren aktuellen Wert Die aktuellen Werte sind nur w hrend der Transformation des Whileprogramms in ein Kripkemodell von Interesse und haben hier keine Bedeu tung bergibt der KripkeLTLModelChecker eine Formel an die preprocess Methode des WhileLTLPreprocessors so werden alle in der Formel enthaltenen atomaren Pro positionen auf ihre Sinnhaftigkeit berpr ft Eine atomare Proposition ist genau dann sinnvoll wenn sie das Format var value hat wobei var ein dem Environment bekannter Variablenname ist und value entweder die dezimale Repr sentation einer Zahl aus dem Wertebereich von var ist oder mit einem der Werte underflow overflow oder uninit identisch ist Enth lt die
159. e zu gro sind um sie als Graph zu berschauen Das Panel benutzt zur Anzeige der Eigenschaften die eigens daf r ge schriebene Methode public Map lt String Object gt getProperties aus der Klasse aaa automaton Automaton 3 6 3 5 Klasse AdvancedAutomatonPanel Die Klasse AdvancedAutomatonPanel bettet die Editierfl che in eine scrollbare Fl che ein so dass auch gro e Automaten ausschnittsweise angezeigt werden k nnen ber ei 206 KAPITEL 3 GRUPPENERGEBNISSE Abbildung 3 41 Das AdvancedAutomatonPanel im Einsatz ne Toolbar erh lt der Anwender weitere Funktionen zum Beispiel die M glichkeit die Darstellung zu skalieren Weitere Informationen befinden sich im Handbuch unter 3 7 8 Eine der wichtigsten Funktionen des AdvancedAutomatonPanel ist die Steuerung der Automaten Layouter welche im Abschnitt 3 6 6 noch genauer erl utert werden Das Panel stellt eine Auswahl von Layoutern zur Verf gung und steuert den Layout Vorgang Das Panel erbt von javax swing JPanel und ist somit problemlos in Swing Applikationen oder Applets einzubinden 3 6 3 6 Erstellen und Bearbeiten von Automaten War es im ersten Semester bereits m glich das Layout von dargestellten Automaten zu manipulieren so waren weitergehende Modifikationen wie das Entfernen Anlegen und Bearbeiten von neuen Zust nden und Transitionen nur bruchst ckhaft und provisorisch m glich Dies entsprach dem damaligen Planungsstand di
160. ed flag entweder eine e Transitionen ein oder substituiert diese direkt 3 2 1 3 Alphabete und Symbole Die Realisierung von Alphabeten soll zum einen m glichst flexibel sein das hei t offen bez glich der Gestalt der Objekte aus denen Alphabete bestehen Zum anderen ist jedoch darauf zu achten dass intern eine effiziente Verarbeitbarkeit gew hrleistet ist auch soll nicht mehr Speicherplatz als notwendig benutzt werden Folgender Kompromiss wird beiden Anforderungen gerecht Alphabete k nnen aus Instan zen beliebiger Klassen bestehen die das Interface Symbol implementieren Dieses Interface fordert die Realisierung einer bijektiven Abbildung von Symbol Instanzen auf Zahlen vom Typ BigInteger So kann intern wo die Semantik eines Symbols nicht interessiert einfach mit diesen Zahlen gerechnet werden die man durch Aufruf der getValue Methode einer Symbol Instanz erh lt Nach au en hin ist ein Objekt sichtbar das die Semantik des entsprechenden Symbols wiedergibt Es ist nicht notwendig alle Objekte aus denen ein Alphabet potentiell besteht irgendwo zu speichern In aller Regel wird man zur Repr sentation nach au en nur Objekte f r einzelne Zeichen ben tigen und diese k nnen bei Bedarf schnell konstruiert werden Dies geschieht f r einen gegebenen BigInteger Wert durch Aufruf der Methode Alphabet getSymbol BigInteger Die geforderte Korrespondenz von Symbol Instanzen und BigInteger Zahlen stellt keine Einsc
161. eden erfahrenen Java Entwickler leicht nutzbar ber das Graphics Framework von java awt lassen sich alle erdenklichen Formen leicht zeichnen und zahlreiche weitere graphische Operationen z B das Einbinden von Grafik Dateien durchf hren 3 6 2 1 2 public Rectangle getBounds Diese Methode liefert ein Rechteck Objekt zur ck welches das zu zeichnende Objekt vollst ndig umschlie t Die Methode wird vom Paintable Framework zur Performance Optimierung genutzt Ei nerseits kann der neu zu zeichnende Bereich bei Ver nderungen eingegrenzt werden und damit auch welche weiteren Objekte neu gezeichnet werden m ssen weil sie jetzt zum Beispiel nicht mehr durch ein weiteres verdeckt werden andererseits dient das zur ckgelieferte Rechteck auch dem schnelleren Auffinden von mit der Maus zu mani pulierenden Objekten Da die Methode der Performance Steigerung dient braucht sie kein exakt passendes Rechteck zur ckzuliefern sollte dessen Berechnung komplexer sein Das Rechteck kann also durchaus gr er sein als die Komponente darf aber niemals kleiner sein als diese 3 6 2 1 3 public boolean contains Point point Die Methode contains liefert per Wahrheitswert die Information ob ein bergebener Punkt innerhalb des gezeichneten Objektes liegt oder nicht Diese Information dient dem Editor zur Auffindung desjenigen Objektes welches gerade mit der Maus bearbeitet wird Eine solche Maus Interaktion wird dann mit einer der Methoden public void
162. egularExpressionPlugin nutzen als Basis endliche Automaten Die Implementation der Automatenoperationen unterscheiden sich in beiden nicht und anstatt diese doppelt zu implementieren schaffen wir eine Ober klasse FiniteAutomatonPlugin von denen die anderen Plugins f r endliche Automaten erben Welche Vorteile hat das Ganze e Durch das FiniteAutomatonPlugin bekommt man ein Plugin mit dem man einen Automaten frei zeichnen kann ohne eine Transformation zu verwenden Hier stehen alle Operationen des Automatentyps zur Verf gung e Wenn man Automaten als Ergebnis einer Automatentransformation erhalten hat so besitzen diese immer eine Transformationseingabe Ruft man auf diesen Automaten z B renderComplementary auf so wird der aktuelle Automat ver ndert und passt nicht mehr zur urspr nglichen Eingabe Aus diesem Grund erm glicht dieses Konzept das Degradieren von Plugins So wird aus dem Analyseplugin ein einfaches Automatenplugin mit dem problemlos weitergearbeitet werden kann e Durch eine Vererbungsstruktur der Automaten spart man sich eine Menge Arbeit da man das Einbinden der Operationen Automatenanalysen oder die Basisfunktio nen des Laden und Speicherns nur einmal implementieren muss Dabei k nnen diese jederzeit erweitert werden was das gesamte System flexibler als das alte Driverplu ginkonzept macht Wir sehen nun am Beispiel von endlichen Automaten wie ein komplexeres Plugin imple mentiert werden kann
163. eichnis unter Driver oder Plugin abgelegt ein neuer Driver un ter Driver und ein neues Plugin unter Plugin In diesem Verzeichnis werden min destens zwei Dateien ben tigt Zum einen eine Initialklasse die von der Klasse AddonWorkspacePreprocess abgeleitet ist und eine addon xml die angibt wo die se Datei liegt Die Addonmanager durchsuchen nun alle direkten Unterverzeichnisse nach einer addon xml Datei und laden per dynamischem Klassenladen die darin enthaltene Initialklasse Integration von Addons im Workspace Zum gegenw rtigen Zeitpunkt haben wir viel ber das Integrieren von Addons gesprochen Die gro e Frage ist nun welche Funktionen der Workspace unterst tzen muss damit in ihm einfach Addons inte griert werden k nnen Aktionen Im Workspace gibt es eine M glichkeit Tranformationsverfahren neu zu starten und auf Ergebnisautomaten Operationen durchf hren zu k nnen Diese Aktionen k nnen ber die Klasse WorkspaceMenu in das Men eingef gt werden Die Funktion wurde bereits oben erkl rt Automatenfenster Der WorkspaceFrame liefert Methoden um ein leeres Auto matenfenster anzulegen Ein Plugin f llt dieses im ersten Schritt mit einem Pa nel um darin eine zu transformierende Aufgabenstellung einzugeben und eine Aktion die die Transformation startet Wichtig beim Erzeugen eines neuen Au tomatenfensters ist die Einordnung des neuen Fensters in die Automatenliste Hierzu ermittelt das Plugin den Typ des Ergebn
164. eine Baumstruktur des Dokuments abbildet Als Wurzel wird ein Element project eingef gt Alle weiteren Automaten werden unter dieser Wurzel in das org w3c dom Document eingeh ngt Im Anschluss geht er die Liste aller markierten InnerFrames durch ermittelt ihr zugeh riges Plugin und fordert diese auf den Inner Frame ins XML Format zu transformieren Das Ergebnis wird dann vom Plugin dem bergebenen org w3c dom Document angeh ngt Beim Laden einer XML Datei berpr ft der Pluginmanager zuerst die G ltigkeit der XML Datei Handelt es sich um eine g ltige XML Datei so zerlegt der Pluginmanager diese indem er sich alle Kinddokumente unter der Wurzel anschaut Dort findet er die In formationen mit welchem Plugin dieser Teilbaum gespeichert worden ist Mit Hilfe dieser Information und des Teilbaums schaut der Pluginmanager nach ob er dieses Plugin in stalliert hat Ist dieses Plugin nicht installiert so erh lt der Anwender eine Fehlermeldung und der Pluginmanager f hrt mit dem n chsten Element fort Ist das ben tigte Plugin 3 5 DER WORKSPACE STAND JULI 2006 189 vorhanden so bergibt er diesen Teilbaum direkt an das zust ndige Plugin Dieses Plugin l dt dann den Teilbaum in den Workspace ein 3 5 5 6 Implementierung von Plugins am Beispiel endlicher Automaten Automatenmodell endliche Automaten Automatenplugin finiteautomatonplugin Analyseplugin presburgerplugin Analyseplugin regularexpressionpl
165. eitet wurde die Umgebung sich aber nicht ge ndert hat 102 KAPITEL 3 GRUPPENERGEBNISSE Beispiel Sei das Programmfragment aus Abbildung 3 7 gegeben Es wird an dieser Stelle verein facht angenommen dass S nichtblockende Anweisungen sind b zu wahr auswertet und erst bei einer Umgebungs nderung geblockt wird Der Prozess wird zuerst Si am aktuel len Programmgraphknoten bearbeiten und dann den darauf folgenden Knoten auswerten Dieser ist mit einer If Anweisung markiert Der Prozess wird nun bei dem verwaltenden Kontext anfragen zu welchem Wert b auswertet Wie angenommen wird der Prozess darauf die Anwort wahr erhalten Da If Unterprogrammfragmente einbettet speichert der Prozess den Nachfolgeknoten Se also den Knoten welcher der If Anweisung folgt separat um nach Abarbeitung des Unterprogrammfragments dort die Ausf hrung fort zusetzen Nach der Speicherung verzweigt der Prozess in den Programmgraphenteil der ausgef hrt werden soll wenn If zu wahr auswertet Nach Abarbeitung von S und Ss wird die Programmausf hrung beim vorher gesicherten Knoten Sg fortgesetzt 3 1 5 1 6 Anwendung Im Allgemeinen bietet dieses Package kein von einer exter nen Anwendung verwertbares Interface Der Vollst ndigkeit halber seien hier jedoch die Schritte genannt um eine Kripkestruktur zu erzeugen SandBox s new SandBox WhileParser p new WhileParser PNode pt p parse WHILEPROG s exec pt KripkeModel k
166. ellen Entwicklung einer Parserfactory nichts im Wege steht 3 3 4 1 2 Erzeugen eines Syntaxbaums als Beispiel Der Programmcode ist in Abbildung 3 3 4 1 2 zu sehen Zun chst wird eine Instanz eines RegularExpressionParser erzeugt Dann wird die Methode parse dieser Instanz aufgerufen Als Parameter wird 3 3 PARSER 161 ein String mit dem regul ren Ausdruck bergeben Als R ckgabe erh lt man die Wurzel des resultierenden Syntaxbaums Der Aufruf muss in einen try catch Block eingebettet werden da im Fehlerfall eine ParseException geworfen wird 3 3 4 2 Die Thompson Konstruktion Die Thompson Konstruktion ist eine einfache Umsetzung des Ausdrucksbaums in einen Automaten Man kann ihn top down rekursiv durchlaufen und bergibt in jedem Reku sionsschritt einen Anfangs und Endpunkt Zwischen den beiden Knoten wird dann eine Operation eingebaut die der im Knoten entspricht Die Operationen sind 3 3 4 2 1 Konkatenation Die Operation ist sicherlich die h ufigste Sie h ngt nur zwei Operationen die beiden Kinder im Ausdrucksbaumbaum hintereinander Sie wird umgesetzt indem man einen neuen Zustand erzeugt die Konstruktion rekursiv f r die beiden Kinder aufruft und als Startknoten bzw Endknoten den eigenen Startknoten bzw den neuen Knoten bergibt Die zweite Operation bekommt dann den neuen Punkt und den eigenen Endpunkt 3 3 4 2 2 Disjunktion Die Disjunktion geht in folgende Konstruktion ber O O Abbildung
167. em Java Standard Swing ist Die Dokumentation ist gut und umfangreich f r Anf nger aber sicherlich zun chst schwer verdaulich Tutorials und Literatur zum Thema verfolgen meistens die Strategie Lernen durch Beispiele das Zitat Always start by copying the structure of a similar plug in aus sei hier beispielhaft genannt Schlussendlich bleibt also festzuhalten dass Eclipse ein m chtiges Werkzeug ist und f r fast jede Anwendung in der beliebige Daten manipuliert visualisiert und in sonstiger Weise verarbeitet werden geeignet ist Die Erstellung dieser Anwendungen bedarf eines 74 KAPITEL 2 SEMINARPHASE gewissen Einsatzes von Kenntnissen und damit einer hohen Einarbeitungszeit was aber am Ende mit einer erweiterbaren auf verbreiteten Standards basierenden Applikation belohnt wird an der sofern man sich selbst an Dokumentations und Implementations standards h lt auch andere weiterentwickeln k nnen Kapitel 3 Gruppenergebnisse Die Erarbeitung des theoretischen Hintergrunds war der erste Schritt bei der Durchf hrung des Projektes Danach mussten vor dem Hintergrund des neu erworbe nen Wissens klare Ziele formuliert werden Die Verwirklichung dieser Ziele bedeutet die Aufteilung der Problemfelder um ein klar voneinander getrenntes und strukturiertes Ar beiten zu erm glichen In seiner gr bsten Form gibt es drei ganz klar definierte Teile die Analyseverfahren die daf r ben tigte Automatenbibli
168. en e Um Automaten optimal Speichern und Laden zu k nnen gibt es die Methoden savePlugin InnerFrame frame Document document und loadPlugin Document document Document automatonDocument Auch hier ist der Grundgedanke dass ein Plugin am besten selber wei wie alle ben tigten Informationen optimal gespeichert und wieder geladen werden 3 5 5 5 Die Klasse PluginManager Die abstrakte Klasse Addonmanager wird im zweiten Semester nicht mehr gebraucht da wir nur noch Plugins und keine Driverplugins mehr verwenden So brauchen wir auch keinen Drivermanager mehr Der Pluginmanager hat seine alte Funktionalit t beibehalten nur erbt dieser nicht mehr von der Klasse Addonmanager Der Pluginmanager durchsucht weiterhin alle Unterverzeichnisse nach installierten Plugins und l dt diese dynamisch ein Neu ist dass er eine Liste aller geladenen Plugins verwaltet Er bernimmt au erdem Aufgaben beim Speichern und Laden von Automaten Diese werden vom Pluginmanager mit Hilfe des Java Document Object Model im XML Format gespeichert Das Document Object Model DOM ist eine vom World Wide Web Consorti um definierte Programmierschnittstelle f r XML Dokumente Der Pluginmanager erzeugt zuerst ein org w3c dom Document Dazu wird ein DocumentBuilder unter Zuhilfenahme der DocumentBuilderFactory instanziiert Der DocumentBuilder erzeugt ber die Me thode newDocument ein neues org w3c dom Document Das Document Object Model ist ein Objektmodell das
169. en an welcher Stelle sich ein syntaktischer Fehler im Eingabestrom befindet Das resultiert aus der Tatsache dass die Technik verlangt unter Umst nden an einer Stelle viele m gliche Ableitungsalternativen auszuprobieren die jeweils korrekte Teilresultate liefern k nnen ohne dass auch nur eine zum Erfolg f hrt Als weiterer kleinerer Nachteil der aus der Top Down Analyse herr hrt ist dass alle Grammatiken von Linksrekursion befreit sein m ssen als auch dass Operatorpr zedenzen nur ber eine nderung der Grammatik zu verwirklichen sind Wird dies nicht getan liegt es am Auswerter eine solche durch nderung der Auswertungsreihenfolge und richtung zu verwirklichen Gerade Letzteres f hrte dazu dass davon abgesehen wurde diese Art des Parsers weiter zu verwenden 3 3 3 Second Generation LTL CTL While Die Parser der zweiten Generation sind allesamt vorausschauende Parser mit Shunting Yard siehe 3 3 3 1 zur Umsetzung von Operatorenpr zedenzen Die Technik die ein vorausschauender Parser verwendet ist hnlich dem des rekursiv absteigenden Parsers mit Backtracking siehe 3 3 2 mit dem Unterschied dass keine R ckspr nge erfolgen Der Parser erkennt die richtige Ableitung anhand des n chsten Tokens im Eingabestrom 154 KAPITEL 3 GRUPPENERGEBNISSE CTL gt P BINOPP P gt OPD CTL UNOP P BINOP gt ARAS ER lt gt gt OPD true
170. en die ber eine Kante mit sich selbst verbunden sind lassen den Layout Algorithmus in eine Endlosschleife laufen Dies l sst sich beheben indem man diese Kan ten einfach vor dem Layouting entfernt und sp ter wieder hinzuf gt Eine Einschr nkung stellt dies nicht dar reflexive Kanten ben tigen schlie lich kein automatisiertes Layout Leider stellte die Anordnung der Knoten einen gro en Nachteil der Bibliothek dar Der Layouter platziert die Knoten eher hierarchisch von oben nach unten Da Automaten aber mit ihren nicht ungew hnlichen Zyklen eher keine hierachischen Graphen darstellen war dieser Layoutalgorithmus f r unsere Zwecke leider ungeeignet Das Java Universal Network Graph Framework bietet einen Rahmen f r die Modellierung Analyse und die Visualisierung von Graphen aller Art Es beinhaltet Plugin Schnittstellen z B f r Algorithmen oder Layouts sowie Schnittstellen zu anderen Bibliotheken Sie ist im Rahmen der BSD Lizenz frei verf gbar Bei ersten Tests gelang es recht schnell und einfach Graphen layouten zu lassen Um die Tauglichkeit mit Automaten zu analysieren haben wir die Automatenbibliothek dk brics mit JUNG verkn pft und waren mit den graphischen Ergebnissen zun chst zufrieden Grappa ist eine auf Java basierende Graphenbibliothek die von AT amp T entwickelt wur de Hiermit lassen sich Graphen konstruieren und manipulieren Diese Bibliothek stellte sich generell leider als Entt uschung heraus da diese
171. en Aktionen Add und De lete selected kann die Liste der Propositionen bearbeitet werden Nach Abschluss dieser Eingabe ffnet sich ein Editor Fenster zum Erstellen der Kripkemodells Die Bedienung erfolgt wie im Abschnitt 3 7 8 beschrieben Nachdem man einen Zustand erzeugt hat kann man im Propertypanel des Workspace dessen Propositionen bearbeiten ber das Kontextmen der rechten Maustaste kann man einen Zustand des Kripkemodells zum Startzustand machen F r Transitionen gibt es wie bei Kripkemodellen blich keine wei teren Editierm glichkeiten au er dem Erstellen und dem Entfernen 3 7 11 2 Analysen 3 7 11 2 1 convert to Biichi automaton Diese Aktion erzeugt ein neues Automaten Fenster welches das in einen B chiautomaten konvertierte Kripkemodell enth lt Mit dem B chiautomaten k nnen anschlie end weitere Operationen wie im ent sprechenden Abschnitt dargestellt durchgef hrt werden 3 7 11 2 2 add LTL formula tab Dieser Befehle f gt dem Kripke Fenster ein neues Tab hinzu ber das eine LTL Formel eingegeben und anschlie end ein Model Checking des Kripkemodells anhand dieser Formel durchgef hrt werden kann Nach Bet tigen der entsprechenden Aktion Run model check wird ber eine Dialog Box angezeigt ob das Kripkemodell der durch die LTL Formel dargestellten Spezifikation entspricht oder nicht 234 KAPITEL 3 GRUPPENERGEBNISSE 3 7 12 While Plugin Das While Plugin ist eine Erweiterung des Krip
172. en C C P x T von Konfigurationen von P werden folgende Vorg nger funktionen definiert e prep C ce PxT Ac EC cist direkter Nachfolger von c e prep reflexiver und transitiver Abschluss von prep e prep prep o pre prep C ist die Menge aller Konfigurationen von P von denen aus in genau einem Schritt eine Konfiguration c C erreichbar ist Im Unterschied dazu enth lt pre C genau diejenigen Konfigurationen von P von denen aus in einer beliebigen Zahl auch 0 von Schritten eine Konfiguration c C erreichbar ist F r pres C gilt hnliches jedoch muss mindestens ein Schritt gemacht werden Das Problem der Vorg nger Berechnung besteht nun darin fiir ein gegebenes Pushdown System P und eine beliebige Menge C von Konfigurationen von P die Menge pre C zu berechnen Ein naiver Ansatz besteht darin X C zu setzen und solange die Anweisung X X Uprep X auszuf hren bis X station r wird Dies setzt einen Algorithmus f r prep voraus Nach Terminierung des Algorithmus gilt offensichtlich X prez C Das Problem ist jedoch dass der Algorithmus divergieren kann Dazu betrachte man das PDS P P T A mit P p und T y sowie A p y p e Wir wenden den naiven Algorithmus auf C p an Wegen prep C p y wird in der ersten Ite ration X p p y gesetzt Da prep p amp P 7 t UD 7 P v7 ist wird in der zweiten Iteration X p e p y p yy be
173. en selbstverst ndlich durch einfaches Anklicken einer Transition abrufen wobei dann im PropertyPanel des Workspaces ein Informations Panel eingeblendet wird Zustandsbeschriftungen ein ausblenden Aktiviert oder deaktiviert analog zur vor herigen Aktion Labels an den Zust nden Layouting durchf hren Startet den unmittelbar rechts von dieser Schaltfl che aus gew hlten Layouter Layouter ausw hlen In dieser Liste kann ein Layouter ausgew hlt werden und dann anschlie end mit der links daneben befindlichen Schaltfl che gestartet werden Der Fruchterman Reingold Layouter ist standardm ig vorselektiert 224 KAPITEL 3 GRUPPENERGEBNISSE 3 7 8 2 Das Bearbeiten von Automaten 3 7 8 2 1 Erzeugen neuer Zust nde Neue Zust nde k nnen ber das Kontext men welches bei einem Rechtsklick auf der Editierfl che angezeigt wird erzeugt werden Es ist der Men eintrag New state zu w hlen Abbildung 3 54 Optionen f r Zust nde 3 7 8 2 2 L schen von Zust nden und Zustandsoptionen Durch Rechtsklick auf einen Zustand l sst sich ein Zustand ber den Eintrag Delete entfernen Alternativ kann ein Zustand durch Dr cken der Taste ENTF gel scht werden Zus tzlich werden abh ngig vom aktuellen Automaten und Zustandstyp weitere Optionen angezeigt Abbildung 3 54 zeigt zum Beispiel das Men bei einem Zustand eines endlichen Automaten Hier l sst sich ein Zustand auch zu einem Start oder akzeptierende
174. en werden bei einer Auswahl eines oder mehrerer Automaten gefiltert Dadurch stehen jeweils nur erlaubte Operationen zur Verf gung Als Beispiel bei endlichen Automaten darf z B eine Komplementbildung nur bei Auswahl eines Automaten angewendet werden Werden mehrere Automaten ausgew hlt so steht diese Operation nicht mehr zur Verf gung daf r aber Vereinigung Schnitt etc Eine weitere wichtige Aufgabe der Automatenliste besteht in der bersichtlichen Auswahl von Automaten Klickt ein User einen Automaten an so r ckt dieser in den Vordergrund ber einen Doppelklick in der Automatenliste kann das entsprechende Automatenfenster maximiert oder auf seine letzte Gr e minimiert werden Die eigentlichen Informationstr ger des Workspaces bilden die Automatenfenster Sie erm glichen es in einer geordneten Tabstruktur zu transformierende Aufgabenstellun gen komfortabel einzugeben Automaten zu betrachten Automaten zu bearbeiten sowie Analyseergebnisse einzusehen Zum damaligen Zeitpunkt kann man in einem Source Tab eine Formel der Presburger Arithmetik oder einen regul ren Ausdruck eingeben Diese Formel wird durch die Aktion Create Automaton transformiert und der Ergebnisautomat in einem Automaten Tab angezeigt Das letzte Element des Workspace bildet die Konsole In ihr werden alle Aktionen In formationen und Fehler dokumentiert und angezeigt so dass ein User diese zu jeder Zeit noch einmal nachlesen kann Die Konsole ist zus t
175. en zusammen so wird ein Ergebnis gekapselt in einem OperationResult Objekt zur ckgeliefert Dieser Ergebnis Wrapper wird im folgenden Abschnitt kurz erl utert 3 5 5 2 3 class OperationResult Die Klasse kapselt das Ergebnis eines Methoden aufrufes ber die operate Methode Per einfachen getter Methoden k nnen dabei folgende Ergebnisse ausgelesen werden boolean hasFailed Liefert ber einen Booleschen Wert zur ck ob ein Operations Aufruf einen Fehler durch Werfen einer Exception verursachte oder erfolgreich durchlief Throwable getThrowable Liefert f r den Fall dass ein Operations Aufruf einen Feh ler verursachte boolean isFailed liefert also true zur ck das entsprechende Throwable Objekt also die Exception welche von der Automaten Klasse geworfen wurde Method getMethod Liefert die aufgerufende Methode der Automaten Klasse zur ck Object getResult Liefert im Erfolgsfall also wenn boolean isFailed den Wert false hat das Ergebnis des Methoden Aufrufes zur ck 3 5 5 3 Details Die private Methode boolean canOperateOn Method List lt extends Object gt ist an mehreren Stellen f r die Kompatibilit ts berpr fung der bergebenen Methode also einer Operation und einer Liste von Objekten als Parametern dieser Operation verant wortlich Die Methode funktioniert folgenderma en 1 Ist die bergebene Liste leer Wenn ja dann R ckgabe false 2 Ist das erste Objekt in der Liste ein Exempla
176. enauer gesagt deren Sprachen sind abgeschlossen gegen ber Komple ment Schnitt und Vereinigung 2 1 1 3 1 Schnitt von b chierkennbaren Sprachen Es soll der Schnitt der er kannten Sprachen der Automaten B und B berechnet werden Die Grundidee ist dass wir einen Z hler verwenden der am Anfang auf 0 steht Wir warten bis der Automat B in einem akzeptierenden Zustand ist dann setzen wir den Z hler auf 1 und warten bis B akzeptiert Wenn das geschehen ist setzen wir den Z hler auf 0 zur ck Wenn das unendliche Wort wirklich aus dem Schnitt der Sprachen stammt dann muss unendlich oft B und By akzeptiert werden Der neue Schnittautomat akzeptiert nur wenn er von der 1 wieder in die 0 wechselt Formal sieht das folgenderma en aus vgl Seien B 2 Q1 A1 Q Fi und By Qo A2 Q9 Fa gegeben Der Automat den 1 2 wir konstruieren sieht wie folgt aus B N B 2 Q x Q2 X 0 1 4 OF x Q x 10 Q x Fo x 1 12 KAPITEL 2 SEMINARPHASE Die Transitionen werden wie folgt gebildet ri qj 2 a Tm Ins y A amp die folgenden beiden Bedingungen sind erf llt 1 ri a rm Ar A qj a qn Aa Transitionen der Automaten bernehmen 2 Es gilt ex 0Arm Fi gt y 1 B hat akzeptiert ex 1Aq F gt y 0 Ba hat akzeptiert und Z hler wieder auf 0 gt Schnittautomat akzeptiert e sonst y T Abbildung 2 1 geschnitten mit Abbildung 2 2 liefern als Ergebnis
177. enn der laufende Prozess es anfordert 1 1 Konnte der Prozess keinen Fortschritt machen ein Knoten wurde zweimal besucht forciere einen Block 2 Entferne den Prozess falls er terminiert hat 3 Erzeuge einen tempor ren Kripke Knoten k anhand der aktuellen Umgebung 4 Existiert ein zu k quivalenter Knoten in der Kripkestruktur bereits terminiere 5 F ge k der Kripke Struktur hinzu Erzeuge eine Transition im Kripke Modell von kay zu k 6 kan K 7 Signalisiere Termination alle Prozesse haben terminiert oder einen Block Algorithmus 5 Kontext 3 1 5 1 5 3 Prozess Ein Prozess f hrt eine Anweisung an einem Programmgraphkno ten gem 3 1 5 1 4 1 aus Nach Abarbeitung der Anweisung signalisiert der Prozess dem verwaltenden Kontext ob er anhalten blocken oder weiterlaufen m chte Wenn ein Prozess keine g ltige Anweisung mehr ausf hren kann signalisiert er seine Termination Falls die Variablenumgebung ge ndert werden muss wird direkt auf die Variablenum gebung des verwaltenden Kontextes zur ckgegriffen Bedingte Anweisungen z B if werden ber Auswertungsmethoden des Kontexts ausgewertet 3Dies geschieht immer dann wenn die Umgebung des Kontexts sich ver ndert hat Also wenn ein neuer Prozess erzeugt werden soll der Wert einer Variablen sich ge ndert hat oder mit wait block dies explizit angefordert wird Diese Situation tritt immer dann ein wenn eine Anweisung bearb
178. eptiert L A N L B Im Gegensatz zur Klasse FiniteAutomaton werden die Automaten nicht determinisiert aber degeneralisiert Die Operation hat keinen Einfluss darauf ob der Automat deter ministisch ist oder nicht Sie ver ndert beide Automaten nicht sondern erzeugt einen neuen Die Alphabete der Automaten m ssen gleich sein andernfalls wird eine Exception geworfen Die Details der Konstruktion kann man in Abschnitt 2 1 auf Seite 12 nachlesen Bei dieser expliziten Konstruktion ist verh ltnism ig viel Speicher und Rechenzeit erforderlich es kommt zu einem quadratischen blow up Wenn man sich nur daf r interessiert ob der die Sprache L A N L B erkennende Automat leer ist sollte man sich der in Abschnitt 3 2 5 5 beschriebenen Methoden bedienen 3 2 AUTOMATEN 139 3 2 5 4 Leerheitstest isEmpty Ein B chiautomat akzeptiert irgend ein unendliches Wort genau dann wenn es einen zu dem Wort korrespondierenden Run gibt bei dem ein akzeptierender Zustand unendlich oft besucht wird Ein hinreichendes und notwendiges Kriterium daf r ist die Existenz eines vom Startzustand erreichbaren Kreises der einen akzeptierenden Zustand enth lt Solch ein Kreis kann wie folgt mit einer doppelten Tiefensuche gefunden werden siehe auch Abschnitt 2 1 1 3 3 auf Seite 13 Die erste Tiefensuche beginnt am Startzustand des Automaten Jedesmal wenn ein akzeptierender Zustand a abgearbeitet wurde wird von a aus eine zweite Tiefensuche ge
179. er mehr Produktionen in Frage kommen In folgender Grammatik kommt so ein Fall vor S iEtS iEiSeS a E gt b Hier ist es nicht m glich beim Einlesen des Zeichens zu entscheiden welche Produk tion entweder iEtS oder iEtSeS zur Ableitung zu nehmen ist Gel st wird ein solches Problem indem man die Entscheidung welche Produktion zur Ableitung zu nehmen ist auf einen sp teren Zeitpunkt verschiebt Dazu f hrt man ein neues Nichtterminalzeichen ein welches man hinter den gleich lautenden Teil der betreffenden Produktionen setzt Im Beispiel sieht dies wie folgt aus S 1EtSS a SS eS le E b Somit wird zun chst EtS eingelesen und erst nach der Ableitung zu S wird entschieden ob weiter nach eS abgeleitet wird oder nicht Mit dieser Technik die man Linksfaktori sierung nennt kann man meistens dieses Problem beheben Mit diesen beiden Techniken kann man eine Grammatik erhalten die vom gew nschten Parsertyp verarbeitet werden kann Die nun von uns tats chlich verwendete Grammatik f r regul re Ausdr cke ist in Abbildung 3 3 4 1 1 dargestellt Regul re Ausdr cke bestehen aus drei verschiedenen Operationen 1 Konkatenation Dies ist die Aneinanderreihung von regul ren Ausdr cken Diese Operation wird in der Ableitung A TC durchgef hrt 2 Disjunktion r1 r2 Diese Operation beschreibt dass ein regul rer Ausdruck r1 oder r2 erlaubt sein soll Die Ableitung B R e behandelt dies
180. er Arbeit bedeuten 3 6 2 5 1 public void paintCentered Graphics2D g Point center double angle Eine Implementation dieser Methode muss das Label Objekt zentriert zum Punkt center im angegebenen Winkel angle in das bergebene Graphics2D Objekt g zeichnen Die Klasse TextLabel dient dem Darstellen von textuellen Labels Diese k nnen attribu tiert also mit unterschiedlichen Schriftarten und gr en sowie mit Effekten wie Unter streichung Kursivdarstellung Fettdruck usw versehen werden 3 6 EDITOR 201 3 6 2 5 2 public void setText AttributedString text dient in der Klasse TextLabel dem Festlegen des darzustellenden Textes Der Objekttyp AttributedString stammt aus dem Package java text und ist somit ein Java Standard Element Sollte keine Attributierung gew nscht sein kann der Text auch ber die Methode public void setText String text als einfacher String gesetzt werden 3 6 3 Das PaintableAutomaton Addon PaintableAutomaton List lt PaintableState gt states List PaintableTransition gt transitions List PaintableAutomatonStructuralChangeListener gt structuralListener List PaintableAutomatonLayoutChangeListener layoutListener void addState PaintableState state void removeState PaintableState state void addTransition PaintableTransition transition void removeTransition PaintableTransition transition List lt PaintableState gt getStates List PaintableState gt getinitialStatesO
181. er Fixpunktberechnungen aufgel st und das System wird induktiv angewendet 3 2 6 3 Beispiel Folgendes kleine Beispiel konstruiert ein Kripkemodell das eine Kette bildet in dem am Anfang alle Propositionen gelten und dann jeweils immer eine Proposition weniger gilt Strine i propositions ac AssignmentAlphabet alphabet new AssignmentAlphabet propositions KripkeModel model new KripkeModel alphabet model addState 0 true alphabet createFromNameArray a b c model addState l false alphabet createFromNameArray a b 146 KAPITEL 3 GRUPPENERGEBNISSE model addState 2 false alphabet createFromNameArray a model addTransition 0 1 model addTransition 1 2 model addTransition 2 2 Und so k nnte man Model Checking betreiben CTLModelChecker mc new CTLModelChecker model Sb hing ls Ha A D Ole String f2s EG a try i System out println mc check f1s System out println mc check f2s catch ParseException e e printStackTrace Bei beiden Beispielen ist es ratsam wenn sich der Leser als kleine Denk bung klar macht was der Code bezweckt 3 3 PARSER 147 3 3 Parser Ein Parser berf hrt bzw zerlegt eine Eingabe anhand der vorgegebenen Grammatik in eine Baumstruktur Der Parser behandelt den kontextunabh ngigen Teil einer Sprache Das dabei verwendete bliche automatentheoretische Modell ist ein einfacher
182. eraturverzeichnis 1 2 w 10 11 12 Mona Manual http www brics dk mona manual html A V Aho R Sethi and J D Ullman Compilers principles techniques and tools Addison Wesley Publishing Company 1986 J rgen Bill Ausarbeitung zum Vortrag ber Model Checking 2005 Beate Bollig http 1s2 www cs uni dortmund de bollig tdl dortmund html Ahmed Bouajjani Javier Esparza and Oded Maler Reachability analysis of push down automata Application to model checking In Antoni W Mazurkiewicz and J zef Winkowski editors CONCUR volume 1243 of Lecture Notes in Computer Science pages 135 150 Springer 1997 BSD http www opensource org licenses bsd license php Edmund M Clarke Orna Grumberg and Doron A Peled Model Checking The MIT Press Cambridge Massachusetts 1999 Hubert Comon Max Dauchet R mi Gilleron Florent Jacquemard Denis Lugiez Sophie Tison and Marc Tommasi Tree Automata Techniques and Applications 2005 http www grappa univ 1lille3 fr tata Jim des Rivieres Eclipse project briefing materials IBM Corporation and others Mar 2003 http www eclipse org eclipse presentation eclipse slides ppt dk brics http www brics dk automaton Eclipse Foundation Graphical Editing Framework http www eclipse org gef Wikipedia Parsen einer Grammatik http en wikipedia org wiki Parsing_ expression _grammar 241 242 13 15 16 17 1
183. erface PresburgerToDFATranslatorListener implementieren Der Translator in 3 1 TRANSFORMATION 81 Presburger Formel FiniteAutomaton 1 Korrektheitspr fung 6 Automaten Konstruktion 2 Normalisierung 5 Ann ssiger a Aom Extraktion 4 a relevantan Abbildung 3 1 Transformation einer Presburger Formel in einen Automaten formiert alle registrierten Listener nach der erfolgreichen Korrektheitspr fung einer Eingabe nach dem erfolgreichen Durchf hren weiterer Vorarbeiten Schritte zwei bis vier im Prozess Diagramm und jeweils zu Beginn und nach Beendigung der Berechnung von Zwischenergebnissen W hrend der Berechnung kann also stets verfolgt werden an welcher Stelle sich die Bottom Up Konstruktion gerade befindet Auf Statusmeldungen w hrend der Konstruktion von Automaten f r Atome wurde verzichtet 3 1 2 2 Transformationsprozess Der Prozess der Transformation eines Presburger Ausdrucksbaums in einen endlichen de terministischen Automaten ist in die sechs in Abbildung 3 1 dargestellten Aktivit ten einteilbar 3 1 2 2 1 Korrektheitspr fung PresburgerToDFATranslator setzt voraus dass die Eingabe eine bez glich der im Abschnitt Erf llbarkeitspr fung von Formeln der Presburger Arithmetik angegebenen Grammatik syntaktisch korrekte Formel re pr sentiert Wurde der Syntaxbaum vom Parser erstellt so ist die Voraussetzung erf llt Hier werden aber noch zwei weitere vom Parser nicht ber cksichtigte Korrektheitsas
184. erlos sein Jedoch O false ist in jedem Fall unerf llbar Au erdem darf q a nicht undefi niert sein d h muss im Zustand q beim Lesen von a auf einen Folgezustand abbilden Ein Lauf r ist akzeptierend wenn alle unendlichen Zweige in r unendlich viele Beschrif tungen aus F enthalten D h ein Zweig trifft auf O true oder unendlich oft auf einen akzeptierenden Zustand Lemma 2 Ein ABA der Gr e n kann in einen NBA der Gr e 20 umgewandelt werden Es folgt dass der Leerheitstest f r einen ABA in exponentieller Zeit bzw mit quadrati schem Platzbedarf entschieden werden kann 2 1 3 1 4 Nichtdeterministische Automaten auf unendlichen B umen Ein nichtdeterministischer Automat auf unendlichen B umen NTA A ist identisch zu ei nem NBA mit dem Unterschied dass er um eine endliche Menge D C N von Stelligkeiten erg nzt wird und die Ubergangsfunktion 6 Qx x D gt 2 ist Im Zustand q beim Lesen eines k stelligen Knotens v wird aus einer Menge von k Tupeln eines aus der bergangsfunktion der Form q qx nichtdeterministisch gew hlt der Automat kopiert sich selbst k mal und setzt seine L ufe in den Kindern von v in den jeweiligen Folgezust nden fort Ein Lauf r von A auf einem unendlichen gt beschrifteten D Baum r T ist ein Q beschrifteter D Baum 7 r mit r p gt Q so dass r e qo gilt und f r jeden Knoten v mit arity v k ist r w 1 r v 2 r v k d r v T v k
185. es endlichen regul ren Operators x ist Deshalb nennt man die Automaten auch w Automaten bzw die Sprachen die sie erkennen w Sprachen vgl 2 1 1 2 1 B chiautomaten B chiautomaten BA geh ren zu den einfachsten Ver tretern der w Automaten Obwohl sie genauso aussehen wie endliche Automaten ber endlichen W rtern sind F nicht mehr Zust nde deren einmaliges Erreichen schon zur Akzeptanz f hrt sondern Zust nde die unendlich oft durchlaufen werden m ssen damit das Wort akzeptiert werden kann Sie werden benannt nach Julius Richard B chi 1924 1984 vgl 2 1 1 2 2 Akzeptanzpr fung bei B chiautomaten Aber wie akzeptiert ein BA ein unendliches Wort wenn er nicht anhalten kann Man kann das Problem mit Hilfe des Durchlaufs in den Griff bekommen Definition inf p inf p ist die Menge aller Zust nde die unendlich oft im Durchlauf p vorkommen Ein Durchlauf von A ber v gilt als akzeptierend genau dann wenn gilt inf ONF 0 Das bedeutet dass A v genau dann akzeptiert wenn ein akzeptierender Zustand also ein Zustand aus der Menge F unendlich oft auf dem Pfad vorkommt Nat rlich bleibt das Problem dass man weder einen unendlichen Pfad auf unendliches Vorkommen von Elementen aus F testen kann noch ihn zum Testen unendlich lange rechen lassen kann Es handelt sich dabei eher um eine Art Grenzwertbetrachtung Eine Sprache die durch einen BA erkannt werden kann wird B chi erkennbar b c
186. esem Automatentyp kom patibel sind 5 Er verwaltet alle Analyse Funktionen und stellt zum Beispiel f r endli che Automaten einen Akzeptanz Test von W rtern zur Verf gung sowie f r endliche Automaten und B chiautomaten einen Test auf Leerheit der erkannten Sprache e Nun braucht der Workspace noch eine Art Addon die sich um die Einbin dung der Transformationverfahren k mmert Diese Aufgabe wird durch Plug ins erf llt Die Aufgaben eines Plugins sind 1 Das Plugin kennt alle ben tigten Elemente wie die Transformationsfunk tionen und Parser 2 Es k nnen Transformationsverfahren im Workspace zur Verf gung ge stellt werden die ber einen File New Men eintrag ausgew hlt werden k nnen 3 Es wird ein Editor zur Eingabe eines Ausdrucks oder einer Formel zur Verf gung gestellt 4 Das Plugin kann aus einer eingegebenen Formel eine vollst ndige Trans formation durchf hren deren Ergebnis ein Automat ist Dieser Automat wird dann an den Driver weitergeleitet 3 4 DER WORKSPACE STAND FEBRUAR 2006 175 e Es gibt einen Driver und einen Pluginmanager der die Schnittstel le zwischen Addons und Workspace bildet Im ersten Schritt laden sie alle verf gbaren Addons Der Drivermanager enth lt zus tzlich Funktionen mit denen der Name eines Automatentyps bei bergabe eines Automaten ermit telt werden kann e In der Datei addon xml k nnen einige Informationen abgelegt werden die sp ter beim Einladen
187. eutet er akzeptiert genau dann wenn gilt 2 1 AUTOMATENMODELLE 15 VP CF inf p NP 40 Das hei t aber auch dass der Automat akzeptiert wenn gilt F In diesem Fall w rde jedes Wort ber X akzeptiert Trotzdem ist der verallgemeinerte Biichiautomat nicht ausdrucksst rker was sich auch in der Transformierbarkeit zu einem B chiautomaten zeigt Nehmen wir an dass git F H P P Dann konstruiert man den Biichiautomaten B Q x 1 n A Q x 1 Pa x n Dabei wird A definiert als q x a q y A wenn q a q A und x und y folgende Bedingungen erf llen Abbildung 2 4 Ursprungsautomat fiir Degeneralisierung i 1 fallsiAn IS falls n e Sonst Y Die Konstruktion bedeutet als Graph betrachtet dass man den Automaten so oft kopiert wie es Akzeptanzmengen gibt Allerdings wird jede Transition in einem akzeptierenden Zustand derjenigen Akzeptanzklasse f r die die Kopie steht so umgebogen dass sie in den gleichen Zustand der n chsten Kopie geht Die letzte Kopie verweist aber wieder zur ck auf die erste Kopie Nur die akzeptierenden Zust nde der ersten Kopie sind auch im neuen Automaten akzeptierend So kann das Wort nur erkannt werden wenn der Automat alle Zust nde erreicht hat und durch alle Kopien gelaufen ist Wie man leicht vermuten kann entstehen nicht gerade bersichtliche und redundanzfreie Automaten 16 KAPITEL 2 SEMINARPHASE Abbildung 2
188. eziell auf die Anforderungen der Transformation zugeschnitten Jeder Zustand verwaltet jeweils eine HashSet lt IAutomatonState gt der Zust nde von denen Transitionen eingehen eine LinkedList lt LTLBPNode gt von neuen Formeln und je eine HashSet lt LTLBPNode gt zur Verwaltung der alten Formeln und der Formeln die im n chsten Zustand gelten m ssen Es wurden noch zwei zus tzliche Instanzen von HashSet lt LTLBPNode gt eingef hrt Die eine enth lt genau die atomaren Propositionen un ter den alten Formeln die andere verwaltet genau diejenigen atomaren Propositionen deren Negation zu den alten Formeln geh rt Bei der Berechnung der Trigger sind die relevanten Elemente dann unmittelbar verf gbar Automaton verwaltet die Menge aller 92 KAPITEL 3 GRUPPENERGEBNISSE Zust nde als HashMap lt IAutomatonState IAutomatonState gt wobei jeder Zustand auf sich selbst abgebildet wird Die contains Methode von HashSet lt IAutomatonState gt liefert das enthaltene dem Argument gleichende Element nicht zur ck Das enthaltene Element ist aber von Interesse wenn nach einem vorhandenen Zustand gesucht wird der jeweils dieselbe Menge alter Formeln und n chster Formeln aufweist wie ein neuer noch nicht eingef gter Zustand Die equals und die hashCode Methoden von IAutomatonState sind passenderweise so berschrieben dass der Hashcode nur von den alten und n chsten Formeln abh ngt und zwei Zust nde
189. f hrt dazu dass der Ausnahmezustand und die zu ihm f hrenden Transitionen explizit erzeugt und zu der Menge der Zust nde bzw Transitionen hinzugef gt werden 3 2 1 7 8 Minimierung Oft werden bei Operationen oder bei anderen automatischen Konstruktionen z B bei Analyseverfahren Automaten berechnet die nicht minimal sind Das hei t dass sie eine gr ere Anzahl von Zust nden besitzen als der eindeuti ge minimale DFA f r die Sprache die sie erkennen Um solche Automaten so weit wie m glich zu verkleinern steht die Minimierungsopera tion zur Verf gung die von den Methoden renderMinimized renderBrzozowski Minimized renderHuffmanMinimized und renderHopcroftMinimized imple mentiert wird Es stehen drei Minimierungsverfahren zur Verf gung e Huffman Minimierung Hierbei handelt es sich um das wohl bekannteste Mi nimierungsverfahren das startend bei der Partition die f r jeden Zustand eine Menge enth lt diese schrittweise vergr bert so dass am Ende alle bez glich ih res Akzeptanzverhaltens quivalenten Zust nde in einer Menge sind Aus diesen Mengen werden die Zust nde des resultierenden minimalen Automaten konstruiert Schl ssel und Beschreibung eines Zustands des minimalen Automaten bestehen aus den Indizes der Zust nde in der entsprechenden Menge Die Huffman Minimierung funktioniert nur auf deterministischen Automaten so dass f r NFAs ein preprocessing notwendig ist bei dem determinis
190. f llen Falls x existenzquantifiziert werden soll werden die OBDDs mit OR syntheti siert Die Bibliothek stellt hierzu die Methoden OBDD allQuantify int variable und OBDD existsQuantify int variable zur Verf gung Die Rechenzeit der Operation Ersetzung durch Konstanten ist O G Dementsprechend ben tigt die Quantifizier Operation auf Grund der Laufzeit der Synthese O G Rechenschritte 3 2 4 6 Aufbau aus Formeln Die Automatenbibliothek bietet die M glichkeit OBDDs aus einer Pr fixformel zu kon struieren Die Formel muss der folgenden Grammatik gen gen BOOLEXP atom amp BOOLEXP BOOLEXP BOOLEXP BOOLEXP BOOLEXP Das Zeichen entspricht hier dem true und das Zeichen dem fal se Die Formel muss mit dem aaa automaton util obdd formula TinyParser in einen BooleanExpression Baum transformiert werden Anschlie end bergibt man den Baum einem aaa automaton util obdd formula 0BDDBuilder Objekt das mit dem Methodenaufruf OBDDBuilder createFromFormula BooleanExpression root AssignmentAlphabet alphabet das zu der Formel entsprechende OBDD konstruiert Das bergebene Alphabet muss die in der Formel enthaltenen Atome kennen Beispiel AssignmentAlphabet psa new AssienmentAlphabet x1 x2 x3 Stram oca CAIRE 136 KAPITEL 3 GRUPPENERGEBNISSE TinyParser tp new TinyParser BooleanExpression boolexp tp parse formula OBDD obd
191. false PROP UNOPE el Ar e Ar ea roma ses PROP atomare Propositionen alle Kombinationen aus Zahlen kleinen Buchstaben und nicht reservierten Zeichen Abbildung 3 15 Infix CTL PEG CTL BINOPPP UNOP P OPD BINOP N RER ee SINUS UY LE 5 a OPD gt true false PROP UNOP EN SE ENDE AF ENES EXS EF NE PROP atomare Propositionen alle Kombinationen aus Zahlen kleinen Buchstaben und nicht reservierten Zeichen Abbildung 3 16 Prefix CTL PEG Eine eingehende Analyse der Laufzeit fand f r diesen Parsertyp nicht statt da sie auf Grund der Einfachheit dieses Typus und der erwarteten Formell ngen als nicht erforderlich erachtet wurde Ein weiterer Grund ist dass die erwartete Laufzeit der Analysen die auf einem der Parser der zweiten Generation zugreifen um ein Vielfaches ber der Laufzeit eines Zerlegungsvorganges des Parsers liegen F r die folgenden Sprachen stehen Parser zur Verf gung Infix Prefix CTL Abbildungen 3 15 3 16 Infix Prefix LTL Abbildungen 3 3 3 3 18 und While Abbildung 3 19 Es muss beachtet werden dass die hier abgebildeten Grammatiken jeweils als siehe PEG angegeben sind Die Anwendung eines der Parser ist analog zu dem Parser der ersten Generation siehe 3 3 2 4 Zur Auswertung des Zerlegunsvorganges siehe 3 3 1 1 und 3 3 1 1 8 3 3 3 1 Shunting Yard Shunting Yard ist eine Technik zur Implementatio
192. fgef hrt Die Beweise finden sich in der angegebe nen Literaturquelle wo au erdem weitere Entscheidungsprobleme wie Uniform Member ship nicht leerer Schnitt Leerheit des Komplements Singleton Set Property und grun diertes Schnittproblem besprochen werden 2 1 2 1 5 1 Leerheit Ein Baumautomat ist leer wenn die Sprache die er erkennt leer ist Dies kann in linearer Zeit entschieden werden 2 1 2 1 5 2 Endlichkeit Ein Baumautomat ist genau dann endlich wenn die Spra che die er erkennt endlich ist Dies ist in polynomieller Zeit entscheidbar 2 1 2 1 5 3 quivalenz Zwei Baumautomaten sind genau dann quivalent wenn sie dieselbe Sprache erkennen Dieses Problem ist bei zwei deterministischen Baumautomaten A und As f r einen Algorithmus in O A x Aa entscheidbar f r nichtdeterminis tische brauchen wir einen exponentiellen Algorithmus 22 KAPITEL 2 SEMINARPHASE 2 1 2 2 Top Down Baumautomaten Top Down Automaten starten an der Wurzel und bewegen sich nach unten wobei sie auf ihrem Weg induktiv jeden Zustand mit einem Subterm verbinden wodurch ein Term ge bildet wird Damit ist die Baumsprache L A die von einem Top Down Baumautomaten A erkannt wird die Menge aller Grundterme t f r die ein Startzustand q in existiert so dass q t pa gilt Definition Ein nichtdeterministischer endlicher Top Down Baumautomat ber F ist ein Tupel A Q F Qf A mit Q einer Menge von Zust nden Zust nde sind einste
193. finiert ein Wort T 8 T vo T v1 durch Anwendung von T 24 KAPITEL 2 SEMINARPHASE 2 1 3 1 2 Nichtdeterministische Automaten auf unendlichen W rtern Ein nichtdeterministischer B chiautomat NBA A auf unendlichen W rtern ist ein Tu pel g0 6 F mit einer endlichen Zustandsmenge Q einem Startzustand go ei ner endlichen Menge akzeptierender Zust nde F und einer Zustands bergangsfunktion Q x E 2 Nichtdeterminismus da auf eine m gliche Zustands bergangsmenge abbildet Ein Lauf r von A auf einem unendlichen Wort w ag a1 ber X ist eine Folge qo qk mit k gt 0 so dass Vi gt 0 q 41 9 q ai gilt Dann bezeichne lim r die Menge aller Zust nde die in r unendlich oft auftreten Da Q endlich ist ist lim r folglich nicht leer Ein Lauf r ist akzeptierend wenn lim r N F 4 Ein unendliches Wort w wird von A akzeptiert wenn es einen akzeptierenden Lauf r von A auf w gibt Die Menge der unendlichen vom Automaten A akzeptierten W rter wird mit L A bezeichnet Lemma 1 NBAs sind gegen ber Schnittbildung abgeschlossen diese ist in linearer Zeit durchf hrbar Ob ein NBA A der Gr e n eine nichtleere Sprache akzeptiert ist in linearer Zeit mit Platzbedarf O log n entscheidbar Dieses Problem ist wichtig um zu entscheiden ob ein Automat berhaupt interessant ist Sonst gibt es einen quivalenten Automaten der kein Wort akzeptiert 2 1 3 1 3 Alternierende Automa
194. formiert und es werden einige Analysen an dem MONA Programm durchgef hrt MONA gibt als Analyseergebnis eine erf llende Bele gung der Variablen des MONA Programms und als Gegenbeispiel eine nicht erf llende Belegung k rzester L nge aus MONA ist in der Lage den DFA als Zustands bergangstabelle auf der Kommandozeile auszugeben Es ist aber auch m glich MONA anzuweisen den Automaten als dot Datei auszugeben Diese dot Datei kann dann beispielsweise mit dem Programm graphviz angezeigt werden Intern werden die DFAs mit einer Datenstruktur verwaltet die multi terminal shared BDD hei t Dabei handelt es sich um einen azyklischen Graphen wie er in Abbildung 2 8 zu sehen ist In dieser Abbildung sehen wir ein Array mit zwei Zeilen und elf Spalten Die Eintr ge in der unteren Zeile entsprechen den Startzust nden des DFAs die obere Zeile gibt die Art des Zustands an Der Wert 1 steht hier f r akzeptierend 1 f r nicht 56 KAPITEL 2 SEMINARPHASE akzeptierend und 0 fiir don t care Die Variablen des MONA Programms wurden durch gehend indiziert so dass jeder Variablen eine Zahl zugeordnet ist Die Variablen werden in dem Bild als innere Konten rund dargestellt Die Blatter des Graphen enthalten die Endzust nde eckig nach einem Zustands bergang Eingaben f r den Automaten werden als Bitvektor dargestellt Beispielhaft wird nun ein Zustands bergang vollzogen Ausgehend von Abbildung 2 8 nehmen wir an wir befin
195. ft werden ob die Transition berhaupt von einem Zeichen ausgel st werden kann e Transition setTrigger Trigger setzt das trigger Attribut neu Der Automat der die Transition enth lt wird intern dar ber benachrichtigt so dass Ma nahmen eingeleitet werden k nnen um die oben beschriebenen Bedingungen zu erhalten Dies ist z B n tig um einer Transition neue akzeptierende Symbole hinzuzuf gen Da Trigger Objekte unver nderlich sind muss der Transition ein neues Objekt assoziiert werden Dies geschieht durch den Aufruf trans setTrigger trans get Trigger join newTrigger Die join Methode von trigger gibt ein neues Trigger Objekt welches die Symbole beider Trigger akzeptiert zur ck e getFrom und getTo liefert der Start bzw Zielzustand der Transition e toString liefert eine Stringdarstellung der Transition bestehend aus der toString Methode der Start und Zielzust nde und der spezifischen toString Methode des Trigger Objekts 110 KAPITEL 3 GRUPPENERGEBNISSE e isEmptyO gibt Auskunft dar ber ob der Transition ein Trigger Objekt assoziiert ist 3 2 1 2 1 Behandlung von e Transitionen Eine e Transition vom Zustand a zum Zustand b erm glicht einen Zustands bergang von a nach b ohne dass der Automat ein Eingabezeichen liest e Transitionen sind allerdings nicht in jedem Modell sinnvoll das durch eine von Automaton erbende Klasse dargestellt wird Z B sind in einem Kripke modell alle Transitionen gew
196. g Material um sich auch weiterhin damit zu besch ftigen Zun chst stellt man fest dass von den theoretischen Automatenmodellen lediglich zwei konkrete umgesetzt wurden Es gibt aber noch mindestens folgende Automatenmodelle die bereits aus der Planungsphase des Projektes bekannt waren e Pushdown Automaten Bottom up Baumautomaten Top down Baumautomaten Alternierende B chi Automaten e Alternierende B chi Baumautomaten Die Umsetzung dieser Automatenmodelle w rde gleichzeitig neue Analyseverfahren zug nglich machen die auf diesen Modellen beruhen Als Beispiel sei das CTL Model Checking genannt was eine nat rliche Erweiterung zu dem LTL Model Checking ist Gleichwohl sei festgestellt dass der Workspace zur Visualisierung und Umgang mit Au tomaten und Analysen ebenfalls modular aufgebaut ist um das modulare Konzept der Automatenbibliothek und deren Analysemethoden angemessen begleiten zu k nnen Auf Grundlage dieser Elemente ist es vorstellbar dass sich die hier beispielhaft genannten Modelle und evtl auch noch nicht beachtete Modelle auf nat rliche Weise umsetzen lassen Auch abseits des Themas Automaten sind im Bereich der Visualisierung noch Erweiterungen denkbar So w re es m glich einen weiteren Layouter wie zum Beispiel den sehr ausgekl gelten Layouter des bekannten Graphviz Paketes zu programmieren 4 4 SCHLUSSWORT 239 4 4 Schlusswort Sind alle Ziele erreicht worden Ja wird man sa
197. gen wenn man die M chtigkeit dieser Ausarbeitung betrachtet und die Ergebnisse des ersten und zweitens Semesters gelesen hat Doch neben diesen Zielen hat die Lehrveranstaltung Projektgruppe auch weitere Auf den Webseiten des Projektgruppenbeauftragten heisst es Die Teilnehmer sollen Er fahrungen in Teamarbeit und Aufgabenorganisation im Team erwerben Sie sollen Ziele selbst definieren und ihre Durchsetzung selbst ndig verfolgen lernen Dies taten die Teilnehmer dann auch Die Anfangsphase der Projektgruppe war gepr gt von der Suche nach einem sinnvollen Einsatz der in der Seminarphase erlangten Kennt nisse Es folgte eine Aufteilung in Gruppen welche rasch ihre Arbeit aufnahmen und schon fr h Ergebnisse pr sentieren konnten All dies geschah in st ndiger Kommunika tion miteinander sei es in den w chentlichen PG Sitzungen gruppeninternen Sitzungen aber auch ber fast 500 Forums Eintr gen und ber 1000 Wiki Seiten Editierungen eine nun bew hrte Kombination welche zuk nftigen Projektgruppen nur empfohlen werden kann Auch andere Erfahrungen wurden gemacht Dazu geh rte die Feststellung dass wann im mer eine Gruppe solcher Gr e zusammenkommt Inhomogentit ten zwischen den Kennt nissen und F higkeiten W nschen und Vorstellungen eines jeden Einzelnen auftreten Aber auch solche Momente wurden ausdiskutiert gel st und trugen somit auch zum Er fahrungsgewinn der Teilnehmer bei 240 KAPITEL 4 EPILOG Lit
198. gen k nnen Produktautomaten konstruiert werden die die beiden zugrunde liegenden Automaten simulieren Verwendet der den linken Operanden darstellende Automat Bitvektoren der L nge n und der den rechten Operanden darstellende Automat Bitvektoren der L nge m so arbeitet der Produktautomat mit Bitvektoren der L nge 2 3 ANALYSE MIT AUTOMATEN ol n m Bei Oder Verkn pfungen akzeptiert der Produktautomat wenn mindestens einer der simulierten Automaten akzeptiert bei Und Verkn pfungen wenn beide akzeptieren Es ist zu beachten dass die Bitvektoren Teile f r die beiden simulierten Automaten nicht immer unabh ngig voneinander gew hlt werden k nnen Geh ren zwei Bitpositionen zu ein und derselben Variablen so d rfen sie nicht verschieden belegt werden Verbotene Bitvektoren sollten sofort in den endg ltig ablehnenden Zustand f hren dann bleibt die L sungsmenge korrekt F r 3 Quantoren wird auf dem den Operator darstellenden Automaten eine Projektion durchgef hrt Die Projektion entfernt aus allen Kantenlabels das Bit das zu der durch den Quantor gebundenen Variablen geh rt Der Automat kann dadurch nichtdeterministisch werden und muss mit einem allgemeinen Determinisierungs verfahren in eine deterministischen Automaten berf hrt werden V Quantoren werden behandelt indem der Automat komplementiert projiziert und nochmals komplementiert wird In unserem Projekt haben wir allerdings einen anderen Weg gew hlt Wir berec
199. gt q 1 gt q not qo gt q not q1 qo and go do gt qo and qo 91 Go U and q qo qo and q q1 gt q1 0r q0 qo qo or qo q1 gt q1 U for q1 40 q1 or q1 91 gt a Gegeben sei der Grundterm t and not or 0 1 or 1 not 0 mit dem dazugeh rigen 2 1 AUTOMATENMODELLE 19 Lauf gegeben als ein Baum not or gt Mai der Lauf r a Die Baumsprache die A erkennt ist die Menge aller Booleschen Ausdr cke ber F die true sind Der Baumautomat ist ein vollst ndiger und minimaler DFTA 2 1 2 1 2 DFTA Deterministic Finite Tree Automata Deterministische Bau mautomaten sind ein Spezialfall von NFTAs Jede Sprache die von einem NFTA erkannt wird kann auch von einem DFTA erkannt werden Ein Baumautomat A Q F Q y A ist deterministisch wenn es keine zwei Regeln gibt die die gleiche linke Seite haben und keine e Regeln In einem DFTA gibt es h chstens einen Lauf fiir jeden Grundterm Definitionen Ein NFTA ist vollst ndig wenn es mindestens eine Regel f q1 qn gt q A Vn gt 0 f Fn Gdn Q In einem vollst ndigen DFTA gibt es genau einen Lauf f r jeden Grundterm Ein Zustand q ist erreichbar wenn ein Grundterm t existiert so dass t q Ein NFTA A hei t reduziert wenn alle Zust nde erreichbar sind 2 1 2 1 3 Baumhomomorphismen Baumhomomorphismen sind Transformationen die die Baumstruktur erhalten Sie sind eine Verallgemeineru
200. h hierzu muss ein Automat markiert werden und im Analysementi die Aktion run gestartet werden Im Analysepanel erscheint das entsprechende Tab siehe Abbildung 3 59 In 228 KAPITEL 3 GRUPPENERGEBNISSE Bah Step Step All Reset V show complete path Abbildung 3 59 Automatenlauf diesem Run Tab gibt man eine zu testende Eingabe in das Eingabefeld ein Mit der Schaltfl che Step kann man die Eingabe Schritt f r Schritt durchtesten Die Schalt fl che StepAll versucht das ganze Wort auf einmal zu durchlaufen Im Eingabefeld wird das bereits gelesene Wort farblich markiert Ist eine Eingabe akzeptierend so wird der zuletzt markierte Zustand im Automaten und das Eingabefeld gr n an sonsten rot gef rbt dargestellt Wird ein Zeichen gelesen das im Automaten nicht vorhanden ist so stoppt der Automat an dieser Stelle Das Wort ist dann nicht akzeptierend Es gibt noch zwei weitere Funktionen ber die Schaltfl che Reset wird die Analyse zur ckgesetzt ber die Option show complete path kann man be stimmen ob der ganze Weg des Laufes oder nur der aktuell erreichte Zustand im Automaten angezeigt werden soll 3 7 9 2 Presburger Plugin Das Presburger Plugin ist eine Erweiterung des Finite Automaton Plugins Aus diesem Grund besitzt es dieselben Funktionen wie dieses Der einzige Unterschied besteht dar in dass ein Automat auf Basis einer Transformation entsteht und deshalb nicht mehr bearbeitet werde
201. hat u A zur Konsequenz gr ere Systeme und mehr Szenarien in der selben Zeit untersuchen zu k nnen als mit halb automatischen oder manuellen Verfahren m glich w re Dabei wird das Programm oder auch ein Protokoll oder abstrahiert und diese Abstraktion hinsichtlich der gew nschten Eigenschaften untersucht Unter der Voraussetzung die Ab straktionstiefe korrekt gew hlt zu haben lassen sich dann gew nschte Eigenschaften des Programms als gegeben oder verletzt herausstellen Im Falle des Model Checkings mit Hilfe von Automaten und linearer Temporallogik siehe unten wird das Programm in einen Zustandsgraphen eine Kripke Struktur berf hrt Der automatentheoretische Hintergrund vor allem in Hinsicht auf B chiautomaten kann im Abschnitt 2 1 1 2 in Erfahrung gebracht werden soll aber kurz umrissen werden e sei K Kripke Struktur sei o Logik Formel e wandle K in B chiautomat Ax mit Sprache L Ax um e konstruiere B chiautomat A mit Sprache L A e konstruiere B chiautomat An Ax N Ass e ist L An D dann erf llt K alle Anforderungen die mit amp einhergehen Ansonsten enth lt L A mindestens ein Gegenbeispiel Die Konstruktion des B chiautomaten aus einer Kripke Struktur ist in beschrieben 2 3 2 2 LTL Bei LTL handelt es sich um eine Logik zur Beschreibung von Ereignissen entlang eines Berechnungspfades ohne Verzweigungen Genauer gesagt und auf den Kontext des Model Checkings bezogen sol
202. hat Y die folgenden Eigenschaften e P1 Ji gt 0 Y Y e P2 vi gt 0 X CY e P3 Vi gt 0 Y Ujso Xs P1 sichert die Terminierung des Algorithmus F r alle i h ngt Y nur von Y ab Falls Yi41 Y ist muss also f r alle j gt 7 sogar die Gleichung Y Y gelten Dies bedeutet dass die Folge nach einer endlichen Zahl von Schritten station r wird Wegen P2 werden keine Elemente vergessen die der naive Algorithmus ber cksichtigen w rde Oder anders ausgedr ckt enthalten sowohl X als auch Y alle Vorg nger der Menge C die gemessen am k rzesten Weg nicht mehr als i Schritte von der Menge C entfernt sind Allerdings kann Y noch weitere Elemente enthalten n mlich vorweggenommene Elemente die in der X Folge erst sp ter vorkommen W hrend X nur endlich viele Elemente mehr als X enthalten k nnte k nnte Y durch Hinzuf gung unendlich vieler Elemente zu Y entstehen wodurch die unendliche Menge prep C erreichbar wird Oder beispielsweise sind alle auftretenden Mengen endlich aber Y erfordert deutlich weniger Iterationen als X Dass Y wirklich h chstens Elemente vorwegnimmt statt Nicht Elemente von pre C einzuf hren folgt aus Eigenschaft P3 Man beachte dass prep C U gt o X gilt Wenn der Algorithmus nach k 1 Iterationen terminiert dann wissen wir dass die Folge ab dem Glied Y station r wird F r alle j lt k ist wegen P2 X Y C Yp F r alle j gt kist X C Y Yp Also e
203. hirecognizable genannt vel S 120f 2 1 1 2 3 Nichtdeterministische B chiautomaten Bei B chiautomaten ist so wie bei endlichen Automaten f r endliche W rter die A Relation nicht zwingend als 2 1 AUTOMATENMODELLE 11 deterministisch angenommen NFA Das bedeutet dass gelten kann q a 1 q a l A mit A Es existieren also von einem Zustand zwei Uberg nge mit dem selben gelesenen Zeichen zu verschiedenen Zust nden Deterministische B chiautomaten bekommen im Allgemeinen das K rzel DBA nichtdeterministische das K rzel NBA 2 1 1 2 4 Transformation eines NBAs zu einem DBA NFAs kann man in DFAs umwandeln mit Hilfe der Potenzmengenkonstruktion auch wenn sie e Transitionen bein halten Das funktioniert indem jeder Zustand des deterministischen Automaten f r die Zustandmenge steht in der sich der nichtdeterministische befinden kann Etwas Derartiges ist f r B chiautomaten nicht m glich da Nichtdeterminismus hier zus tzliche Ausdruckskraft bedeutet Z B die Sprache v v D b ber dem Alphabet a b wird von einem nichtdeterministischen B chiautomaten erkannt Es existiert aber kein DBA daf r Folglich ist die Menge der Sprachen die DBAs erkennen k nnen in der der NBAs ent halten aber nicht andersherum Folglich sind sie auch nicht gleich und es existiert keine allgemeine Transformation NBA DBA vel S 127 2 1 1 3 Operationen auf Biichiautomaten B chiautomaten g
204. hnen ebenfalls die oben angegebene Normalform und gehen im Syntaxbaum nach dem Bottom Up Ansatz vor Die Atom Automaten arbeiten jedoch alle auf dem gleichen Alphabet Die Bitvektoren dieses Alphabets sehen f r jede in der Formel auftretende relevante Varia ble eine Bitposition vor die Zuordnung ist f r alle Atom Automaten identisch Dadurch k nnen die Und Operationen einfach durch den Schnitt der beiden Operanden Automaten und die Oder Operationen durch die Vereinigung der Automaten berechnet werden Der Negation einer Gleichung entspricht die Komplementierung des zugeh rigen Automaten Die Quantoren werden genauso behandelt wie im ersten Verfahren F r Details wird auf die Dokumentation der Implementierung verwiesen 2 3 2 Model Checking mit Automaten In der Programmentwicklung steht man unweigerlich vor dem Problem solange es sich nicht um ein triviales Programm handelt sicherstellen zu m ssen wenn nicht muss dann ist es doch zumindest w nschenswert dass ein Programm bestimmte Eigenschaften erf llt oder nicht erf llt L sungsans tze reichen von einfachen Programmtestdurchl ufen bis hin zu Theorembeweisern Ein L sungsansatz unter diesen stellt das automatentheo retische Model Checking dar 52 KAPITEL 2 SEMINARPHASE 2 3 2 1 Kripkestrukturen Model Checking geh rt zu den automatischen Verifikationsmethoden Der Vorteil vollau tomatisch minus der immer notwendigen Vorarbeit Systeme verifizieren zu k nnen
205. hr nkung dar da Alphabete aufz hlbare und ausgesprochen strukturierte Mengen 112 KAPITEL 3 GRUPPENERGEBNISSE sind In der Regel l sst sich die geforderte Abbildungsvorschrift direkt aus der Definition eines Alphabets ableiten Folgende Implementierungen von Alphabeten stehen bislang zur Verf gung e Binary Alphabet besteht nur aus 0 und 1 e CharacterAlphabet bietet Unicode Zeichen an der zu einem Zeichen geh rige BigInteger Wert entspricht dem char Wert e BitvectorAlphabet bietet alle Bitvektoren zu einer festen aber beliebig grofen Bitl nge an e AssignmentAlphabet Unterklasse von BitvectorAlphabet die Bits werden hier als Variablen interpretiert die mit Strings benannt sind Ein Symbol dieses Alphabets repr sentiert eine Variablenbelegung Symbole eines Alphabets k nnen zu Mengen zusammengefasst werden Das geschieht bei spielsweise mit Objekten vom Typ SymbolRangeList die eine Anzahl von SymbolRange Objekten enthalten die Intervalle repr sentieren Eine einzelne SymbolRange ist charakte risiert durch ein Start und ein Endsymbol und sie repr sentiert die Menge aller Symbole die zwischen diesen beiden Grenzen liegen In der zweiten Projektphase wurde auch ei ne M glichkeit geschaffen Symbolmengen in einer nicht intervallorientierten Weise zu repr sentieren Vgl dazu Abschnitt 3 2 3 2 auf Seite 129 3 2 1 4 Schl ssel In der AAA Automatenbibliothek besitzen Zust nde State ein Schl ssel Attribut
206. hriebenen Parser nimmt auch dieser eine sogenannte top down Analyse bei der grammatikalischen Zergliederung der Eingabe vor Top down bedeutet dass ausgehend vom Start Symbol der gegebenen Grammatik der zur Eingabe geh rende Syntaxbaum expandiert wird Realisiert wurde dies wie folgt F r jede Ableitung der Grammatik wurde eine Methode geschrieben In diesen Methoden wird nun entschieden abh ngig vom n chsten Zeichen in der Eingabe welche Methode als Produktion aufgerufen wird Der Syntaxbaum entsteht also durch einen rekursiven Aufruf dieser Methoden Hier zeigt es sich warum die zugrundeliegende Grammatik nur eine Produktion pro eingelesenem Zeichen zulassen darf W rde sie mehrere Produktio nen zulassen m ssten diese Produktionen der Reihe nach durchprobiert werden und bei einem Fehlschlagen der Ableitung der Eingabe Strom zur ckgesetzt werden sowie an die Stelle im Syntaxbaum zur ckgesprungen werden wo die Entscheidung f r eine falsche Ableitung getroffen wurde Wie bereits erw hnt ist die Grammatik f r die regul ren Ausdr cke so entworfen worden dass dieser Fall nicht eintreten kann Bei der Implemen tierung des Parsers wurde auf die bereits vorhandene Infrastruktur der in diesem Projekt zuvor implementierten Parser zur ckgegriffen So fanden der Eingabe Puffer und die Da tenstrukturen f r den Syntaxbaum parsetree auch hier Verwendung So wurde auch das allgemeine Parser Interface dem Parser hinzugef gt sodass einer eventu
207. ia lisierte Implementierung eines Converter zur Verf gung stehen Solch eine Implementie rung muss e zum Speichern des Objekts als XML Baum die einfachen Attribute unter dem rich tigen Namen per setAttribute setzen und die komplexeren member des Objekts unter einem eindeutigen Namen per addObject bzw addCollection ablegen e zum Wiederherstellen des Objekts die Attribute wieder lesen per getAttribute und die komplexeren member per fetch bject bzw fetchCollection einlesen und sie dem wiederherzustellenden Objekt vorzugsweise per Konstruktoraufruf zu 3 2 AUTOMATEN 121 bergeben F r alle Automatentypen stehen Converter Implementierungen zur Verf gung F r die Transformation eines Automaten nach XML und umgekehrt gibt es in der Klasse AutomatonSerializer die Methoden createDocumentFrom Automaton Automaton createAutomatonFromDocument Automaton write Document Document String Writer readDocument Reader saveAutomaton Auto maton String loadAutomaton String Fiir eine Spezifikation dieser Methoden kann die API Dokumentation herangezogen werden Document Objekte die aus Automaten erzeugt wurden k nnen von Instanzen der Klas se XSLTransformer weiterverarbeitet werden Eine Instanz korrespondiert jeweils zu ei nem xsl Stylesheet das Transformationsanweisungen enth lt welche festlegen wie Knoten oder Teilb ume eines Document Baums in einer resultierenden Textdatei oder einem XML Dokument darzustellen
208. ich bleiben Eigene Module jedoch brauchen nicht 2 5 WERKZEUGE 69 ver ffentlicht zu werden 2 5 2 2 Das Plug in Konzept Die einfache Erweiterbarkeit des auf Java basierenden Projekts wird durch ein umfang reiches Plug in Konzept erreicht Eclipse besteht aus einem nur relativ kleinen Kern der jedoch Erweiterungspunkte sogenannte extension points zur Verf gung stellt in denen sich Erweiterungen auch extensions genannt einklinken k nnen Plug ins sind Sammlun gen von solchen Erweiterungen stellen aber ihrerseits auch wieder Erweiterungspunkte zur Verf gung so dass ein Geflecht von sich gegenseitig nutzenden Plug ins zum Eclipse Projekt beitr gt Der Kern von Eclipse selbst besteht aus e der Plattform Laufzeitumgebung e dem Workspace einer Art Hauptverzeichnis f r von Eclipse verwaltete Projekte e der Workbench einer Umgebung mit Editoren Ansichten Aktionen etc Alle weiteren Funktionalit ten und bereits auch viele Bestandteile der oben ge nannten Hauptkomponenten sind als Plug in realisiert Dazu geh rt auch die Java Entwicklungsumgebung JDT welche zusammen mit der Plug in Entwicklungsumgebung PDE zusammen mit Eclipse ausgeliefert wird und eine vollst ndige Umgebung zur Ent wicklung und Erweiterung von Eclipse selbst zur Verf gung stellt 2 5 2 2 1 Funktionsweise von Plug ins Plug ins bestehen aus einem deklarativen und einem implementierenden Teil Der deklarative Teil besteht haupts chlich aus einer
209. ichtbar werden k nnen Die SIB Klassen werden nicht unmittelbar beim Programmstart geladen sondern erst beim ffnen eines ABC Projektes und zwar mittels eines speziellen ClassLoader der auf dem jetzigen Implementierungsstand noch Unterverzeichnisse des Projektverzeichnisses 2 5 WERKZEUGE 67 nach SIBs durchsucht Sp ter sollen SIB Klassen aber auch ber das Netzwerk aus einem zentralen Repository mit Versionskontrolle und Zugriffsrechten bezogen werden k nnen 2 5 1 3 2 jABC Komponenten Die Modellierungsumgebung und Integrationsplatt form besteht im Wesentlichen aus den folgenden Bestandteilen e Baumansicht der Projekte und der innerhalb des aktuellen Projekts verf gbaren SIBs e Zeichenfl che auf der SIBs zu Graphen kombiniert werden k nnen Dabei wird auf die Graphbibliothek jgraph http www jgraph org aufgesetzt Graphen werden im GXL Format abgespeichert einem XML Dialekt in dem die visuelle Struktur des Graphen repr sentiert wird und der es erlaubt Knoten mit beliebig vielen Zusatz informationen Labels zu versehen Wird solch eine GXL Datei geladen und enth lt sie einen Eintrag f r ein SIB des sen Klasse nicht verf gbar ist so wird der SIB durch einen Platzhalter dargestellt Proxy SIB Es ist so weiterhin m glich SIB Attribute zu ndern und auch zu speichern Das Einstellen der SIB Parameter erfolgt mit dem SIB Inspektor Plugins k nnen zus tzliche Inspektoren hinzuf gen mit denen
210. ickt die geleistete Arbeit betrachtet und nach dem Reflektieren begutachtet Sicher ist es nicht m glich alle W nsche und Vorstellungen jedes Teilnehmers in der knapp bemessenen Zeit von nur zwei Semestern umzusetzen Auch und gerade bei dem Thema der automatischen Analyse mit Automaten konnten nicht alle Prinzipien in dem Umfang gel st werden wie es mit den in der Seminarphase ausgearbeiteten Themen geschehen ist 235 236 KAPITEL 4 EPILOG 4 1 Ergebnisse des ersten Semesters Am Anfang der Projektgruppe war noch nicht klar in welche Richtung die Umsetzung des abstrakten Themas der automatischen Analyse mit Automaten gehen w rde Als Minimalziel war lediglich festgelegt dass exemplarisch die Analyse der Presburger Arith metik auf Grundlage von endlichen Automaten in irgendeiner Form gel st werden sollte Das erste Semester sollte der Orientierung dienen Es wurde das Ger st einer eigenen Au tomatenbibliothek begonnen das im Hinblick auf weiterf hrende Ziele mehr bieten sollte als nur endliche Automaten denn f r diese Automatenklasse existierten bereits L sungen Die Projektstruktur nahm eine Vierteilung an Die Automatenbibliothek als Kern die sich darauf st tzenden Analyse einen daf r ben tigten Parser und eine graphische Oberfl che f r die Ein und Ausgabe Die Analyse der Presburger Arithmetik wurde auf der Grundlage der Interface Spezifikation der Automatenbibliothek und des Parsers begonnen und durch R c
211. icn ti 1V x 0 berechnet Dabei ist Gi 1 falls Lij Tij und Ci j 0 falls Lij mti j Anwendungen der Presburger Arithmetik bestehen beispielsweise im L sen von Syste men linearer diophantischer Gleichungen und in der Integer Programmierung Lineare diophantische Gleichungen sind genau solche Gleichungen die auch in der Presburger Arithmetik formuliert werden k nnen Die beiden erw hnten Probleme lassen sich auf das L sen von Formeln der Presburger Arithmetik reduzieren also auf das Auffinden einer erf llenden Belegung falls vorhanden der in der Formel auftretenden freien Variablen Gl cklicherweise eignet sich das hier vorgestellte Verfahren auch zur L sung dieses Pro blems denn der f r die Presburger Formel konstruierte Ergebnisautomat akzeptiert genau die erf llenden Belegungen der freien Variablen repr sentiert also die L sungsmenge der Formel Als eine weitere Anwendung der Presburger Arithmetik ist die Systemverifikation zu nennen Beispielsweise k nnten Formeln der Presburger Arithmetik als Zusicherungen in einem Quelltext verwendet werden Die Automatenkonstruktion bietet sich besonders dort an weil sich Zusicherungen von einem Schritt zum n chsten oft nur minimal ndern F r die n chste Zusicherung muss das Verfahren dann nicht von vorne gestartet werden sondern es k nnen einige Zwischenergebnisse wiederverwendet werden 46 KAPITEL 2 SEMINARPHASE 2 3 1 2 Repr sentation von Variablenbelegungen
212. iente und benutzerfreundliche Weise 3 1 TRANSFORMATION 87 erm glichen Der von uns verfolgte automatenbasierte L sungsansatz sieht vor dass so wohl f r das Kripkemodell als auch f r die Formel jeweils ein B chiautomat berech net wird Als Alphabete verwenden diese Automaten Potenzmengen von Mengen atoma rer Propositionen W rter sind hier also keine Pfade in Kripkemodellen sondern Folgen von Zustandslabels die auf den Pfaden der Reihe nach auftreten Ein in einem Krip kemodell existierender Pfad q1 q2 die q sind Zust nde entspricht also in einem B chiautomaten dem Wort L q L q2 Label L q ist Menge der in q g ltigen ato maren Propositionen Der f r das Kripkemodell konstruierte B chiautomat repr sentiert auf diese Weise die Menge der im Kripkemodell m glichen Pfade Die Graphstruktur des B chiautomaten und des Modells unterscheiden sich nicht Einfach ausgedr ckt ergibt sich der B chiautomat aus dem Kripkemodell indem f r jeden Zustand q das Label L q an jede ausgehende Kante von q kopiert wird und dann aus q gel scht wird Desweiteren werden alle Zust nde akzeptierend Offensichtlich enth lt der Ergebnisautomat exakt dieselben Informationen wie das Kripkemodell F r Details sei auf Abschnitt 3 2 6 verwiesen Die Konstruktion eines B chiautomaten f r eine LTL Formel gestaltet sich algorithmisch und komplexit tstheoretisch schwieriger Die Zahl der Zust nde des B chiautomaten ist im worst case
213. ieren Ein Gleichheitstest redu ziert sich nun auf einen sehr effizienten Referenzenvergleich den die equals Methode von LTLBPNode durchf hrt 3 1 5 Transformation von Whileprogrammen in Kripkemodelle 3 1 5 1 Motivation Das While Transformationsprojekt verwirklicht den Schritt neben kleinen h ndisch er stellten Kripke Strukturen auch gr ere und problemspezifische Strukturen automatisch erzeugen zu k nnen 3 1 TRANSFORMATION 93 Si if b S2 S3 else S4 S5 if S 4 7 T 08 y Programmgraphknoten O S4 D S5 Transition Abbildung 3 2 If zu Programmgraph Als Ausgangspunkt dient dazu die While Sprache eine Untersprache von Java siehe 3 1 5 1 1 Anforderungen Aufgrund des zeitlich eng abgesteckten Rahmens der zur Umsetzung zur Verf gung stand war die Mindestanforderung an das Projekt die While Sprache so zu verarbeiten dass ein verwertbares Modell erzeugt wird Es wurden ebenfalls Versuche unternommen die While Sprache hinsichtlich der Modell bildung zu erweitern Der Autor m chte jedoch dass diese Realisierung als ein Prototyp oder Experiment ver standen wird das gute verwertbare Ans tze besitzt und u U verstecktes Potential jedoch die Sprache an sich Schw chen hinsichtlich der Modellierung aufweist Siehe dazu 3 1 5 1 8 3 1 5 1 2 Programmgraphen Programmgraphen sind allgemeine Graphen die den Fluss eines Programms modellieren Programmgr
214. iert wird Laufzeit und Speicherplatzbedarf der Huffman Minimierung liegen bez glich der Zustands anzahl des DFA in 0 n e Brzozowski Minimierung Dieses Verfahren berechnet einen minimalen Automa ten indem der urspr ngliche Automat zweimal hintereinander umgekehrt und deter minisiert wird F r NFAs ist es nicht notwendig sie vorher zu determinisieren dies 3 2 AUTOMATEN 119 geschieht implizit w hrend der Minimierung Daher empfiehlt sich die Brzozowski Minimierung vor allem f r diesen Automatentyp Das Verfahren ist bez glich Rechenzeit und Speicherplatzbedarf heuristisch Beide sind im worst case im Verh ltnis zur DFA Zustandsanzahl exponentiell da determi nisiert wird in vielen F llen beobachtet man jedoch erstaunlich gute Rechenzeiten e Hopcroft Minimierung Bei diesem Verfahren wird ebenfalls eine Partition der Zust nde berechnet allerdings startet man dabei mit der Partition die nur aus zwei Mengen besteht n mlich der Menge akzeptierender und der Menge nicht akzeptie render Zust nde Diese Partition wird schrittweise verfeinert so dass am Ende die gleiche Partition entsteht wie bei der oben erw hnten Huffman Minimierung Es wird aber bei n Zust nden nur Rechenzeit O n logn ben tigt Die Alphabetgr e bzw die Anzahl verschiedener Symbolmengen in der Eingabe geht als Konstante in die Laufzeit ein 3 2 1 8 Weitere Funktionalit t Eine wichtige Anforderung f r Bibliotheken ist dass sie fle
215. ieser Bibliothek darstellt Erf llbarkeitspr fung von Formeln der Presburger Logik mit Hilfe endlicher deterministischer Automaten wurde in der ers ten Phase der Projektgruppe als Analysemethode implementiert 2 1 AUTOMATENMODELLE 9 2 1 Automatenmodelle 2 1 1 Biichiautomaten 2 1 1 1 Endliche Automaten auf endlichen W rtern Hier soll ein Automatentyp vergestellt werden der W rter von unendlicher L nge erken nen kann Zuerst wird aber auf endliche Automaten auf endlichen W rtern eingegangen Definition endlicher Automat Ein endlicher Automat A ist ein Tupel Q A Q F Dabei ist das endliche Eingabealphabet und Q die endliche Menge an Zust nden Q C Q ist die Menge an Anfangszust nden meistens einelementig Bei F handelt es sich um die akzeptierende Zust nde Die A Relation stellt die m glichen Transitionen Zustands berg nge des Automaten dar Es gilt AC Q x 2 x Q Alter Zustand Eingabe Neuer Zustand Definition Durchlauf Sei das Wort v 2 mit L nge v gegeben Dabei versteht man unter dem Durchlauf oder Lauf eine Folge von Zust nden p Q der L nge v 1 0 e EQ d h dass das erste Element der Folge aus einem Startzustand besteht der Durchlauf f ngt in einem Startzustand an e 0 lt 1 lt v ps v i pint A F r alle Elemente des Durchlaufs gilt dass die berg nge vom aktuellen Zustand pi zum n chsten Zustand p 1 erlaubte Transitionen sind D
216. im PropertyPanel des Workspaces unten links 226 Auffinden einer akzeptierenden Belegung 227 Abomatenlauf suma ol me ea a Wale tds ke ss 228 Auffinden einer aktzepierenden Belegung bei Bitvektoren 230 Automatenlauf bei Bitvektoren aves ce A Een 230 ABBILDUNGSVERZEICHNIS Kapitel 1 Allgemeines 1 1 Motivation Das Ziel der Projektgruppe 479 AAA Triple A Automatische Analyse mit Automa ten bestand darin einen Softwarebaukasten zu entwickeln der verschiedene Automaten typen und darauf basierende Analyseverfahren bereith lt Der Automatenteil sollte als eine auf den allgemeinen flexiblen und komfortablen Einsatz in beliebigen Softwarepro dukten zugeschnittene Bibliothek konzipiert werden die zudem leicht zu erweitern ist Bei den Analyseverfahren kann es sich zum Beispiel um Erf llbarkeitstests f r Formeln be stimmter Logiken oder um Model Checking handeln wobei Automaten als Datenstruktur zur Repr sentation bestimmter Sachverhalte wie etwa L sungsmengen dienen Automa ten k nnen auch selbst der Gegenstand der Analyse sein ein Beispiel hierf r ist das Model Checking von Kripkemodellen Es war nicht vorab spezifiziert welche Automaten typen oder Analyseverfahren implementiert werden sollten Ein weiteres Ziel der PG war die Entwicklung einer grafischen Benutzeroberfl che die alle Elemente des Baukastens zug nglich macht und ebenfalls erweiterbar ist Insbesondere sollten die Analyseproze
217. im Verlauf der PG realisierten automatenbasier ten Analysen von Formeln und Programmen beschrieben Die Implementationen sind im Package aaa translation zu finden Begonnen wird mit einer Erl uterung des die Arbeit der Analysen unterst tzenden Hilfs Package aaa translation util Hier geht es insbe sondere um die Klasse BPNode Im Anschluss daran folgt eine Beschreibung der Transfor mation von Presburger Formeln in endliche Automaten welche die L sungsmengen der Formeln repr sentieren Danach wird erkl rt wie die Klasse KripkeLTLModelChecker das Model Checking von Kripkemodellen mit LTL Formeln basierend auf B chiautomaten realisiert Dann wird die bersetzung von LTL Formeln in B chiautomaten welche die Menge der die Formeln erf llenden Pfade darstellen thematisiert Das Kapitel schlie t mit einem Abschnitt ber die berf hrung von While Programmen in Kripkemodelle die die m glichen Kontrollfliisse der Programme modellieren 3 1 1 aaa translation util Das Package aaa translation util h lt Hilfsklassen bereit die die Arbeit der Analysen unterst tzen 3 1 1 1 BPNode 3 1 1 1 1 Zweck von BPNode Aus Instanzen der Klasse BPNode k nnen bin re Aus drucksb ume f r Formeln aufgebaut werden Sowohl die Presburger Transformation als auch die LTL Transformation bersetzen den vom Parser gelieferten aus PNode Instanzen bestehenden Ausdrucksbaum in einen quivalenten Baum aus Instanzen einer Unterklasse von BPNode Die Klasse P
218. inaus gesetzt werden wird eine StringIndex0utO0fBoundsException geworfen Die Zeigerposition sollte dann als undefiniert gelten 3 3 1 1 5 boolean match String s throws ParseException Setzt den internen Zeiger so weit nach vorne bis das n chste Zeichen im Eingabestring kein Leerzeichen ist und vergleicht die n chsten Zeichen in der Eingabe mit s Im Fehlerfall wird eine ParseException geworfen und der interne Zeiger zeigt auf das Zeichen das den Vergleich fehlschlagen l sst Bei der Verwendung ist zu beachten dass diese Methode im Fehlerfall immer eine Excep tion wirft und niemals den boolean Wert false zur ckgibt 3 3 1 1 6 boolean lookahead String s throws ParseException Identisch zu match String s mit dem Unterschied dass der interne Zeiger nicht modifiziert wird 3 3 1 1 7 void consume Token t throws ParseException Setzt den internen Zei ger so weit nach vorne dass das Token t bersprungen wird 3 3 1 1 8 PNode aaa parser PNode ist eine Containerklasse die einen Aus drucksbaum repr sentiert Anwendungen sollten Ausdrucksb ume ber die folgenden Methoden auswerten 3 3 1 1 9 int numNodes Gibt die Anzahl der Kinder des Knotens zur ck 3 3 1 1 10 PNode getNode int num Gibt das num te Kind des Knotens zur ck 12Ein Baum dessen innere Knoten jeweils einen Operator und dessen Bl tter Operanden eines Aus drucks repr sentieren 150 KAPITEL 3 GRUPPENERGEBNISSE cAd gt abla S A
219. inem Automaten mit einem anderen Automaten als Parameter aufgerufen wird auch mehr als zwei Au tomaten konkatenieren indem das Ergebnis einer ersten Konkatenation mit dem zweiten Parameter Automaten konkateniert wird und so weiter bis alle Automaten verarbeitet sind 3 5 DER WORKSPACE STAND JULI 2006 185 identity Mit diesem Booleschen Parameter wird eine identit tserhaltende Methode bei spielsweise eine Minimierungs Operation gekennzeichnet Der Workspace kann an hand dieses Parameters entscheiden ob z B ein aus einer Formel generierter Au tomat nach Anwendung der Operation immer noch die Formel widerspiegelt was zum Beispiel nach einer Minimierung ja der Fall ist oder ob Automat und Formel nicht mehr bereinstimmen weil z B das Komplement gebildet wurde 3 5 5 2 Verwendung Nachdem in einer Automaten Klasse alle dazu geeigneten Methoden mit den oben ge nannten Annotations markiert wurden kann ein Driver Objekt erzeugt werden indem der Konstruktor public GenericOperationDriver Class mit der Automaten Klasse auf gerufen wird Es stehen dann Methoden zur Verf gung von denen die meisten eine Liste von Objekten als Parameter bernehmen Diese Liste enth lt alle Automaten Objekte auf denen eine Operation ausgef hrt werden soll bzw f r die im Vorfeld eine Liste von verf gbaren Operationen zur ckgeliefert werden soll Die beiden wichtigsten Methoden der Driver Klasse werden nun kurz erl utert 3 5 5 2 1 publi
220. isautomaten und erfragt beim Drivermanager den Namen des Automatentyps Unter diesem zur ckgelieferten Namen ordnet das Plugin das neue Automatenfenster in die Automatenliste ein F r die Eingaben in Plugins steht die Klasse TextEntryPanel mit allen ihren bereits beschriebenen Funktionen zur Verf gung Sollten diese nicht aus reichen so kann in einem Plugin ein neues Eingabepanel programmiert werden Dieses kann wie das TextEntryPanel einem InnerFrame als Tab hinzugef gt werden Durch Starten einer Transformationsaktion wird die Eingabe umge wandelt und an den Driver bergeben Anzeige von Automaten F r die Anzeige eines Ergebnisautomaten ist der Dri ver zust ndig ber den Drivermanager wird der Automatentyp ermittelt und mit Hilfe des zugegeh rigen Automatendrivers in einem neu angelegten Tab an gezeigt Der Driver wei also wie er den Automaten an den Editor bergeben muss so dass dieser korrekt dargestellt und layoutet wird 3 4 DER WORKSPACE STAND FEBRUAR 2006 177 Operationen Werden ein oder mehrere Automaten in der Automatenleiste mar kiert so m ssen die auf diesen Automaten g ltigen Operationen ermittelt wer den Auch darum k mmert sich der Driver Er baut dynamisch die passenden Aktionsmen s auf Wird eine Automatenoperation angewendet so f hrt der Driver diese durch Speichern Laden Wie ein Automat gespeichert oder geladen wird ist ebenfalls Aufgabe des Drivers 178 KAPITEL 3 GRUPPENERGEBNISSE
221. isserma en e Transitionen also leere Transitionen Auch f r OBDDs machen e Transitionen keinen Sinn e Transitionen sind aus diesem Grund nur eine andere semantische Sicht auf leere Transitionen Sie werden quivalent behandelt In FiniteAutomaton und B chiautomaten erlauben e Transitionen es gewisse Automa tenoperationen wie z B Vereinigung Konkatenation und Kleeneschen Abschluss auf eine sehr intuitive Weise zu realisieren Aus diesem Grund werden e Transitionen in einem FiniteAutomaton und B chiautomaten standardm ig nicht aufgel st Der Benutzer soll die Struktur seiner Automaten auch noch nach einer Automatenoperation einfach und intuitiv nachvollziehen k nnen Wenn der Benutzer also beispielsweise eine e Transition mittels fAutom addEpsilon Transition start to einf gt dann wird diese e Transition auch tats chlich im Auto maten erzeugt 3 2 1 2 2 Die emptyTransitionsAllowed flag Das Berechnen eines Automaten oh ne e Transitionen der zu einem gegebenen Automaten mit e Transitionen quivalent ist ist relativ rechenintensiv Effizienter ist es die bei den oben genannten Operationen verwendeten e Transitionen sofort beim Einf gen e Transitionen lokal durch gew hnliche Transitionen zu ersetzen da nicht alle Transitionen des Automaten sondern nur die jenigen betrachtet werden die zu dem Zielzustand der Transition inzident sind Dies wird in der AAA Bibliothek durch das emptyTransitionsAllowed flag der Automa
222. ist eine Hilfsklasse f r die Analy severfahren wie das Testen einer Eingabe auf endlichen Automaten oder das Auf finden eines akzeptierten Wortes Die Klasse besitzt Methoden um einen Fronten dautomaten einzuf rben und somit bestimmte Knoten oder Kanten farbig hervor zuheben Die Klasse FiniteAutomatonFindMemberPanel Diese Klasse implementiert ein Find Member Panel das f r jeden akzeptierenden Zustand ein akzeptiertes Wort anzeigt Dazu wird im Analysebereich ein neues Tab erzeugt und das Ergbnis in einer JTable angezeigt Dazu wird zuerst ermittelt welches Basisalphabet der gegebene Automat besitzt Je nach Alphabet wird zur Darstellung der Tabelle ein unterschiedliches TableModel verwendet Im Augenblick sind TableModels f r CharacterAlphabet und das 194 KAPITEL 3 GRUPPENERGEBNISSE AssignmentAlphabet implementiert Danach wird f r jeden akzeptierenden Zu stand ein akzeptiertes Wort ber die Automatenmethode findMembers ermit telt die eine List lt List lt Symbol gt gt als Ergebnis liefert Dieses Ergebnis wird dem TableModel bergeben und in der Tabelle angezeigt Als kleines optisches Feature kann ein Anwender die Eintr ge in der Tabelle ausw hlen Diese akzeptierenden Pfa de werden dann im PaintableAutomaton mittels desFiniteAutomatonColorizer farbig hervorgehoben Die Klassen FiniteAutomatonBitVectorRun amp FiniteAutomatonCharacterRun Diese beiden Klassen erm glichen es Eingaben im Automaten testen
223. ite Tiefensuche gescheitert und q ist ber r von q aus erreichbar Dann m sste aber die erste Tiefensu che q abgearbeitet haben bevor q abgearbeitet wurde Das ist ein Widerspruch zu der Annahme dass die zweite Tiefensuche zuerst bei q begann Also wird ein Kreis in jedem Fall gefunden Das Verfahren macht nur linear viele Schritte und die Laufzeit ist um einen logarithmi schen Faktor gr er als linear wenn Hash Tabellen verwendet werden f r das Speichern bereits besuchter Zust nde sowie als Indikator daf r welche Zust nde auf dem Stack liegen 140 KAPITEL 3 GRUPPENERGEBNISSE 3 2 5 5 Impliziter Leerheitstest des Automaten f r L A A L B findCommonRun findCommonWord Oft interessiert man sich nur daf r ob die von zwei gegebenen B chiautomaten A B erkannten Sprachen einen leeren Schnitt haben Dies kann auch entschieden werden ohne dass der Automat der diesen Schnitt erkennt explizit konstruiert wird Daf r stehen die Methoden findCommonRun und findCommonWord zur Verf gung die auf dem Automaten A aufgerufen werden und die den Automaten B als Parameter haben Um die in Abschnitt 3 2 5 4 beschriebene doppelte Tiefensuche durchzuf hren werden lediglich die Adjazenzlisten des gerade besuchten Zustands und der Zust nde auf dem Stack ben tigt Ist ein Zustand dieses Automaten implizit gegeben das ist ein Tripel aus zwei Zust nden der Originalautomaten A B und einem Index so k nnen wie in A
224. itere Informationen zu diesem umfangreichen komplexen aber leistungsstarken Framework gibt es unter der Eclipse GEF Projektseite im IBM Red book Eclipse Development using the Graphical Editing Framework and the Eclipse Mo deling Framework und in Form von zahlreichen weiteren Artikeln und Tutorials im Web 2 5 2 5 Rich Client Platform und Branding Die meisten Benutzer kennen Eclipse nur als Java Entwicklungsumgebung F r viele An wendungen sind aber zum Beispiel die standardm ig integrierten Funktionen des Java Editors berfl ssig und st rend Daher ist es m glich Plug ins in eine reduzierte Eclipse Umgebung zu packen die nur die notwendigsten Kern Komponenten enth lt Dadurch kann man eine vollkommen selbstst ndige und individuelle Anwendung mit eigenem Ti tel Splash Screen etc erstellen 2 5 2 6 Fazit Die Eclipse Plattform stellt eine umfangreiche Umgebung f r Anwendungen zur Verf gung welche vorrangig auf die Bearbeitung von textuell erfassbaren Modellen und deren Anzeige in verschiedensten Ansichten ausgelegt ist Durch Plug ins kann man eigene Erweiterungen unter Zuhilfenahme von bereits existierenden Editoren und Ansichten entwickeln Gute Java Kenntnisse sind f r die Entwicklung von Eclipse Voraussetzung Objekt orientierte Prinzipien und bekannte Design Patterns spielen eine wichtige Rolle Zu ber cksichtigen ist dass Eclipse auf der SWT Grafik Bibliothek aufbaut und nicht kom patibel mit d
225. itionen schalten Das Problem kann durch schrittweises Identifizieren von jeweils einem Symbolintervall und einer zugeh rigen Transitionsmenge 7 mit den folgenden Eigenschaften gel st werden a Alle in 7 enthaltenen Transitionen werden von allen Zeichen in geschaltet b Alle von S ausgehenden Transitionen die nicht in 7 enthalten sind werden von keinem Zeichen in geschaltet c J ist maximal das hei t w rde man J um ein benachbartes Zeichen a 2 erweitern w re eine der ersten beiden Eigenschaften nicht mehr gegeben In dem vorliegenden Beispiel w ren J 1 1 7 q2 q3 und I 2 2 T qo gt 91 0 43 q2 Qu geeignete Paare von Symbolintervall und Transitionsmenge Hat man solch ein Intervall und eine Menge 7 gefunden kann eine Transition kon struiert werden die von geschaltet wird und die die Menge von Zust nden erreicht die von Transitionen in 7 erreicht werden Die beiden erstgenannten Figenschaften sichern dass genau die richtigen in S startenden Transitionen ber cksichtigt werden Die dritte Eigenschaft sichert dass nicht mehr Transitionen als n tig konstruiert werden Folgender Algorithmus berechnet Paare 1 7 in der gew nschten Weise 1 Initialisiere f r jede betrachtete Transition einen Zeiger der anfangs auf das erste Zeichen des ersten Symbolintervalls der Transition zeigt Position z gibt die ak tuelle Position Transition z die zugeh rige Transition und In
226. k nnen Baumautomaten benutzen um eine Menge von Termen aus Ep4 zu erkennen Dieses ist m glich weil Epa T F ist f r das F mit Fo 0 X Y und Fo F r ein t Epa ist die Baumsprache t regul r und ein Automat f r t braucht nur t Zust nde Die Menge der terminierenden Prozess term e wird mit L bezeichnet LP ist eine regul re Baumsprache Ein Automat f r LP braucht nur einen Zustand haben Wir wollen uns jetzt mit der Regularit t von erreichbaren Mengen besch ftigen F r ein Element t aus Ep4 bezeichnet Pre t Post t die Menge von Vorg ngern die Menge 2 2 ALLGEMEINE ANALYSE 43 von Nachfolgern von t Dabei sind Pre t Pre t und Pre t Post t Post t und Post t regul re Baumsprachen Ein Baumautomat braucht f r die regul re Baum sprache Pre t nur O A t Zust nde F r uns ist noch wichtiger dass auch Pre L f r eine regul re Sprache L regul r ist Falls L eine regul re Teilmenge von Epa ist dann ist auch Pre L regul r Man kann aus einem Automaten Ay welcher L erkennt einen Automaten f r Apre konstruieren A prer ist eine Kombination aus drei Bestandteilen Der erste ist ein vollst ndiger Automat Ag der terminierende Prozesse erkennt Der zweite Bestandteil ist ein Automat Ay der die Sprache L akzeptiert Die letzte Komponente benutzt einen Wahrheitswert um darzustel len dass Schritte ausgef hrt worden sind Dabei ben tigt der Automat f r Apre
227. ke Plugins und wird zur Erstellung von Kripkemodellen aus Programmen der While Sprache verwendet Damit ist es m glich ein Model Checking von in While geschriebenen Algorithmen durchzuf hren und diese somit auf Korrektheit zu untersuchen 3 7 12 1 Eingabe Die Eingabe erfolgt in Form eines While Programmes in das Source Tab des neu ge ffneten Fensters Eine genau Erl uterung der Eingabe befindet sich in 3 1 5 1 4 unter While Se mantik 3 7 12 2 Analysen Die angebotenen Optionen im Analysis Men das Konvertieren in einen B chiautomaten und das Hinzuf gen einer LTL Formel sind die gleichen wie im vorhergehenden Abschnitt zum Kripke Plugin erl utert 3 7 12 3 Omega Regul res Plugin Diese Plugin transformiert eine als w regul rer Ausdruck dargestellte Sprache auch als w regul re Sprache bezeichnet in einen B chiautomaten 3 7 12 3 1 Eingabe Als Eingabe wird ein Sw regul rer Ausdruck erwartet Es werden alle Operationen von regul ren Ausdr cken siehe 3 7 9 3 1 unterst tzt Hinzu kommt folgende Operation e Sw Abschluss von S Sw unendlich viele Konkatenationen von S Beispiel abb a b w 3 7 12 3 2 Transformation Eine Tranformation wird gestartet indem man auf die Schaltfl che Create Automaton dr ckt Bei erfolgreicher Transformation erscheint ein neues Tab im Fenster mit der berschrift Automaton Kapitel 4 Epilog Am Ende der Projektarbeit kommt der Zeitpunkt an dem man zur ckbl
228. ksprache ggf angepasst Als Ergebnis sollte sich herausstellen dass dieses Element nach Abschluss der anderen beiden reibungslos funktionierte F r den Parser war urspr nglich vorgesehen dass zun chst ein einfacher statischer Parser im sp teren Projektverlauf durch einen tabellengesteuerten ersetzt werden sollte Damit sollten alle m glichen Analysevorhaben unterst tzt werden wobei zu diesem Zeitpunkt noch nicht klar war welche dies sein werden Dieses Projekt wurde gegen Ende des ersten Semesters eingestellt da es zu aufw ndig geworden w re und eine derart flexible L sung auch nicht mehr ben tigt wurde so dass der Nutzen die Kosten nicht mehr rechtfertigte Die entstandene Automatenbibliothek war eine sehr schnelle Implementation deren Er weiterbarkeit aber noch auf die Probe gestellt werden sollte da bisher nur ein Automa tenmodell n mlich die endlichen Automaten ben tigt und implementiert wurde Als Ergebnis f r den geplanten Workspace kam ein sehr ansehliches Produkt zu Tage Ins besondere der automatische Layouter der einen sehr komfortablen Editor begleitete war ein besonderes Ergebnis dieser Projektgruppe Der Workspace war bereits sehr modular gestaltet bot allerdings ebenfalls nur das eine bisher umgesetzte Analyseverfahren Einige kleinere grundlegende Operationen standen noch aus wurden aber gleich zu Beginn des zweiten Semesters umgesetzt 4 2 ERGEBNISSE DES ZWEITEN SEMESTERS 237 4 2 Ergebnis
229. ktormenge den Nullvektor so wird der Startzustand akzeptierend da das leere Wort als Nullvektor interpretiert wird Vor Ausf hrung dieses Algorithmus werden aus dem Automaten alle e Transitionen entfernt Problematisch bei Quantoren ist die Determinisierung des projizierten Automaten die mit einem allgemeinen Verfahren durchgef hrt wird und daher einen exponentiellen Blow Up zur Folge haben kann 3 1 2 3 Verbesserungsm glichkeiten 3 1 2 3 1 Quantoren Reihenfolge in der Pr nex Normalform Beim Nach Oben Ziehen von Quantoren w hrend der Normalisierung kann die Reihenfolge der Quan toren beliebig ver ndert werden weil die Operationen kommutativ sind Es wird vermutet dass vor allem Quantorenwechsel einen Blow Up verursachen daher sollte die Zahl der Quantorenwechsel minimiert werden Um flexibel experimentieren zu k nnen sollte die Anordnungsstrategie f r den Aufrufer w hlbar gemacht werden 3 1 2 3 2 Auswahl anderer Normalformen Auch v llig andere Normalformen sind denkbar Man k nnte zum Beispiel alle Quantoren nach innen delegieren Dann ben tigt man f r die Behandlung von A und V allerdings entweder die schon erw hnte kompakte Produkt Automaten Konstruktion oder die Alphabetsangleichung Eine Alphabetsanglei chung f llt deutlich leichter wenn die Transitionen mit OBDDs beschriftet werden Die OBDDs k nnten im einfachsten Fall die Bitvektoren des Alphabets seriell einlesen was die Automatenbibliothek bereits erlaubt
230. l 3 2 4 4 auf Seite 134 realisiert bei SymbolRanges erreicht man dies durch entsprechende Intervalloperationen Beide Darstellungen k nnen beliebige Teilmengen von Alphabeten repr sentieren Denn jedes Element eines Alphabets also jedes Symbol korrespondiert zu einem BigInteger Wert der als Bitvektor interpretiert werden kann Man kann Mengen solcher Zahlen zu Intervallen SymbolRanges zusammenfassen Ebenso kann man eine charakteristische Funktion finden deren erf llende Belegungen genau zu den in einer Menge enthaltenen Bitvektoren korrespondieren und diese Funktion kann als OBDD dargestellt werden OBDDs sind eher geeignet wenn solche Mengen gro sind und sie eine einfache charak teristische Funktion haben SymbolRanges eignen sich wenn die Mengen typischerweise nur aus einem oder wenigen Zeichen bestehen Dann gen gen wenige Intervalle w hrend ein OBDD in diesem Fall f r fast jedes vorkommende Bit einen Knoten ben tigt Es gibt Symbolmengen die sich mit einem OBDD konstanter Gr e darstellen lassen die 3 2 AUTOMATEN 128 aber in exponentiell viele bzgl der Variablenanzahl Intervalle zerfallen Man denke an die Menge die einen Bitvektor genau dann enth lt wenn sein am wenigsten signifikantes Bit gesetzt ist Umgekehrt gibt es aber keine Menge die sich mit Hilfe von Intervallen wesentlich effizienter darstellen l sst als mit einem OBDD Denn die charakteristische Funktion einer durch Intervalle beschriebe
231. l PropertyPanelUser kann der aktuelle User des Panels es abgeben ohne dass es von einem anderen Panel erfragt wurde 3 5 4 Plugins Durch die Entwicklung der Klasse GenericOperationDriver ist eine Trennung von Add ons in Plugins und Driver berfl ssig geworden Aus diesem Grund besch ftigen wir uns im Weiteren nur noch mit Plugins da ihre Funktionalit t und ihr Aufbau im zweiten Semester erhalten geblieben sind Die Funktionen eines ehemaligen Driverplugins werden ber den GenericOperationDriver und ein automatenspezifisches Plugin ersetzt Die Basiskomponenten des berarbeiteten Pluginkonzepts bilden die Klassen GenericOperationDriver Plugin und der PluginManager GenericOperationDriver WorkspaceFrame workspaceFrame PluginManager manager void init abstract void addAutomatonToFrame InnerFrame innerFrame Automaton automaton boolean editable void framesSelected List lt InnerFrame selectedFrames void framesDeselected List lt InnerFrame gt deselectedFrames abstract void savePluginiInnerFrame frame Document document abstract void loadPlugin Document document Document automatonDocument PluginManager Map lt Class Plugin plugins static final String FILEPATH addon xml WorkspaceFrame workspaceFrame List lt InnerFrame gt selectedFrames DocumentBuilder documentBuilder DocumentBuilderFactory factory void loadAvailableAddonsO void framesSelected List lt InnerFrame gt selectedFra
232. l W wo R V mit einer Zustandsmenge W z B Speicherabbild einer Erreichbarkeitsrelation R C W daher Nichtdeterminis mus und einer Abbildung V W 2 die den Zust nden Wahrheitswerte zuweist Der Einfachheit halber wird R als total angenommen aRb oder bRa gilt immer Ein Programm P hei t Finite State FS Programm wenn W endlich ist F r ein endliches W hei t P ein endliches Zustandsprogramm Ein Pfad u wo w in P ist eine Folge so dass Vi gt 0 w Rw gilt Die Folge V wo V w ist eine Berechnung von P Eine Formel y gilt in P wenn y in allen Berechnungen von P gilt y ist g ltig gdw p in allen Programmen P gilt D h ist g ltig wenn vy in allen Berechnungen gilt Also k nnen Berechnungen als unendliche W rter ber dem Alphabet 2 gesehen werden 28 KAPITEL 2 SEMINARPHASE Satz 1 Zu einer gegeben LTL Formel y l sst sich ein ABA A konstruieren mit X 2Pro Q O lp so dass L A genau die Menge der Berechnungen ist in denen p gilt Beweis Es sei Q die Menge aller Teilformeln von y und deren Negationen go p und F sei die Menge aller Formeln in Q der Form pUq F r die bergangsfunktion 6 gilt 1 p a true gdw p a d h p a false f r p Z a 2 OA a l a A p a 3 0 50 a 6 a gemeint die duale Formel 4 6 Xd a od 5 6 dUw a 5 a a V d a A HUY Korollar 1 Zu einer gegebenen LTL Formel y l
233. l re Ausdr cke 3 3 4 1 Motivation Dieser Abschnitt befasst sich mit der Umwandlung von regul ren Ausdr cken in Auto maten wie sie in AAA verwirklicht wurde Die Vorgehensweise f r regul re Ausdr cke ist entnommen Sie wurde sp ter auf w regul re Ausdr cke erweitert Am Anfang ver wendeten wir die BRICS Automatenbibliothek um dies zu bewerkstelligen Da wir unsere eigene Automatenbibliothek im Verlauf des zweiten Semesters um B chiautomaten er weiterten war es nun auch w nschenswert aus w regul ren Ausdr cken B chiautomaten erzeugen zu k nnen Dies zu leisten ist aber die BRICS Automatenbibliothek nicht in der Lage So wurde es erforderlich eine eigene Umwandlung von regul ren Ausdr cken zu Automaten zu implementieren Desweiteren sprach die Unabh ngigkeit von dk brics f r eine Eigenimplementierung Der nun folgende Text befasst sich mit den f r diese Aufgabe notwendigen Komponenten Der erste Schritt ist die Festlegung einer Grammatik f r regul re Ausdr cke und die Er weiterung auf w regul re Ausdr cke Danach werden die Anforderungen an die Grammatik erkl rt werden Dann wird der Parser n her erl utert und ein Beispiel dazu gegeben 3 3 4 1 1 Grammatik Nun wird die Entwicklung der Grammatik skizziert Ziel ist es eine Grammatik anzugeben die es erlaubt von einem einfachen Parsertyp der von Hand implementiert werden kann analysiert zu werden Dies soll in linearer Laufzeit m glich sein Ein Parser
234. l Attribute vom Typ Comparable sein m ssen Wenn in einem Automaten also sowohl Zust nde mit Integer Schl sseln als auch mit String Schl sseln vorkommen dann w rde der Vergleich Integer Schl ssel lt String Schl ssel mit dem DefaultComparator immer den Wahrheitswert true haben Innerhalb 4 der Integer und String Zust nde bleibt die Ordnung der Zust nde allerdings arith metisch bzw lexikographisch Der Vorteil einer Ordnung ber der Zustandsmenge ist dass bei einer geschickten Wahl der Ordnung die Determinisierung in linearer Zeit durchgef hrt werden kann Dies ist z B bei der Konstruktion von Automaten aus Presburger Formeln der Fall 3 2 1 5 Beispielhafte Konstruktion eines FiniteAutomaton Nachdem alle wesentlichen Bausteine zum Erstellen eines endlichen Automaten vorgestellt wurden wird im Folgenden eine kleine Nutzung der Bibliothek demonstriert Wir wollen einen einfachen Automaten konstruieren Zun chst wird ein Alphabet ben tigt Ein recht g ngiges Alphabet ist ein einfaches Al phabet das aus normalen Buchstaben besteht Also wird ein solches referenziert via Alphabet myAlphabet CharacterAlphabet getInstance Dieses Alphabet ist unver nderlich Man beachte an dieser Stelle dass Alphabete sehr leicht austauschbar sind ohne dass weitere nderungen n tig sind Nun kann auch ein endlicher Automat erstellt werden Automaton myAutomaton new FiniteAuto
235. l ein Programm eine Eigenschaft ausgedr ckt in LTL erf llen so m ssen ALLE m glichen Programmabl ufe die LTL Formel wahr machen Kernst ck der LTL sind atomare Aussagen AP Die Syntax von LTL wird durch die folgenden zwei Regeln beschrieben e Sei AP die Menge der Propositionen 2 3 ANALYSE MIT AUTOMATEN 53 1 Vp AP p ist eine Formel 2 Vfi fo mit fi fo Formel dann sind sf fi A fa f V fo X f fiU fo ebenfalls Formeln true und false k nnen als T p V p und F AT ausgedr ckt werden Die Definition der Semantik kann in in Erfahrung gebracht werden 2 3 2 3 Konstruktion eines Biichi Automatens Dieser Algorithmus ist relativ einfach zu realisieren hat allerdings den Nachteil das seine Laufzeit suboptimal ist da eine u U exponentielle in der Menge der Teilformeln von Anzahl von Knoten erzeugt werden muss Der B chiautomat kann allerdings fast direkt angegeben werden Sei amp LTL Formel sei cl die Menge aller Teilformeln von sei AP die Menge der atomaren Aussagen Dann ist der generalisierte B chiautomat definiert ber Alphabet Y 24 Zust nde Q C 2 und q Q gdw 1 F qg 2 d1 A 2 E9 gt 0 1 Gg und bd Eq 3 1 V 02 E q gt 01 q oder G2 q Anfangszust nde I fal q q Q berg nge q a p A gdw 1 peq9 gt pE a 7p analog 2 X01 q gt 01 p 3 P41U Eq gt Q2 E q oder GL EA GUG2 Ep
236. l f r ein Atom ist 3x x1 7 x12 8x13 2 4 y 2 8 3 7 9 2 1 2 Boolesche Verkn pfungen Sind F und Fa Presburger Formeln so ist F eine Presburger Formel F A F2 und F V FR sind ebenfalls Presburger Formeln falls keine Variable in F quantifiziert und in F frei auftritt oder umgekehrt Die Klam mern d rfen nicht weggelassen werden aber es k nnen beliebig viele zus tzliche Klam merungen vorgenommen werden Auch hier sind Leerzeichen lediglich optional Bei der Negation ist zu beachten dass auch dann ein zus tzliches Klammerpaar hinzugef gt wer den muss wenn F bereits geklammert ist aber das u ere Klammerpaar von F nicht berfl ssig ist Alternativ zu A V und k nnen auch and or und not verwendet werden Ein Beispiel f r eine korrekte Formel ist a y lt 2Ax lt 5 3 7 9 2 1 3 Quantoren F r eine Presburger Formel F sind 3x F sowie Vx F ebenfalls Presburger Formeln wenn F nicht bereits einen die Variable x bindenden Quan tor enth lt Leerzeichen sind optional zus tzliche u ere Klammern m glich und wie bei gt kann sich die Notwendigkeit doppelter Klammerpaare ergeben x repr sentiert eine be liebige Variable die nicht unbedingt in F vorkommen muss Alternativ zu 3 und V k nnen auch ex und all benutzt werden 3 7 9 2 2 Transformation Eine Tranformation wird gestartet indem man auf die Schaltfl che Create Automaton dr ckt Bei erfolgreicher Transformation erscheint ein neue
237. leinsten bzgl der blichen Ordnungsrelation lt auf ganzen Zahlen Zustand q mit Y gt 2q a b die Transition q 6 q hinzuf gen falls es berhaupt Zust nde q gt 2q a b gibt Mit lt gt ist der so vervollst ndigte Automat ein geordneter Automat Intuitiv ist auch klar was dort passiert Von einem Zustand q aus der eine kleinere Zahl repr sentiert sollten alle Resteingaben akzeptiert werden die auch von einem Zustand q2 aus akzeptiert werden der eine gr ere Zahl repr sentiert denn wenn die Resteingabe von q aus in einen akzeptierenden Zustand r f hrt so ist r lt c Startet man von q aus mit der gleichen Resteingabe so kann der erreichte Zustand nicht gr er sein als r und ist damit ebenfalls akzeptierend Die geordnete Determinisierung macht nichts ande res als bei Mehrdeutigkeiten bzgl eines Zustands q und Zeichens b nur die existierende Transition q b q mit dem kleinsten Integer Wert q im Automaten zu belassen und alle anderen zu entfernen weil der Automat w hrend der Ausf hrung so stets die st rkste Information verwaltet Der Zustand init wird von lt nicht ber cksichtigt denn er besitzt keine eingehenden Transitionen und wird deshalb nie mit anderen Zust nden verglichen Algorithmus 3 konstruiert einen minimalen deterministischen endlichen Automaten f r 50 KAPITEL 2 SEMINARPHASE eine Ungleichung procedure automatonForInequation Zustandsmenge Q c init Transitions
238. leschen Formeln ber P x T bildet den Wertebereich von A Mit dieser Definition l sst sich noch nicht viel machen Daher wird eine alternative Modellierung von A entwickelt Die Formeln sind alle o B d A in disjunktiver Normalform Statt 36 KAPITEL 2 SEMINARPHASE wird p 7 pij wia 11 lt j Skip Neem 1 Ej lt kmj EA modelliert Dann ist A C P x T x 2P T und im Allgemeinen keine Funktion mehr F r die letzte Zeile schreibt man auch p y p1 1 5 1 lt j lt bus gt p y ER Pmj lees 1 lt j lt km Eine Regel p y X p1 w1 Pn Wn erm glicht den gleichzeitigen parallelen bergang des APDS von p yw in die Konfigurationen p1 w w Pn Wnw f r alle w I Der APDS w hlt in p yw nichtdeterministisch eine Regel mit linker Seite p y aus und f hrt dann die durch die rechte Seite spezifizierte parallele Verzweigung aus Sind alle rechten Seiten der Regeln einelementige Mengen so ist das APDS weitgehend ein PDS Ein Lauf von P f r eine initiale Konfiguration c ist ein Baum mit Konfigurationen als Knoten und c als Wurzel Die Vater Kind Beziehungen ergeben sich aus den jeweils angewendeten Regeln In der oben beschriebenen Situation hat p yw die Kinder p W1W Pn Wnw Wenn p yw noch Geschwister hat dann k nnen sich diese auch entsprechend verzweigen Jeder Knoten kann sich entsprechend der Regeln weiter verzweigen Die Erreichbarkeits
239. lle h heren Operationen in separaten Klassen verwirklicht die den Charakter von Plugins besitzen Ein weiterer Vorteil dieser Vorgehensweise ist dass verschiedene Operationen leicht ausgewechselt werden k nnen und dar ber hinaus leicht erweiterbar sind Alle Operationen befinden sich in dem Paket aaa automaton operation und Unterpake ten davon Aufrufe von Methoden zur Ausf hrung komplexer Operationen in der Klasse Automaton und in ihren Unterklassen werden dorthin delegiert 116 KAPITEL 3 GRUPPENERGEBNISSE Bei der Namensgebung der Automaten gibt es eine Konvention Eine Methode mit einem Pr fix render ver ndert den Automaten auf den die Methode selber aufgerufen wird Solche Methoden gibt es f r Operationen die durch lokale nderungen eines Automaten realisiert werden k nnen z B Komplement Umkehrung Totalisierung Die andere Vari ante ohne dieses Pr fix gibt einen neuen Automaten zur ck und bel sst den urspr nglichen Automaten unver ndert Diese Variante wird bei allen Operationen benutzt die es erfor dern einen neuen Automaten aufzubauen z B Determinisierung Schnitt Minimierung 3 2 1 7 1 Komplementbildung Die Bildung des Komplements eines Automa ten steht nur f r deterministische Automaten zur Verf gung Die Methode renderComplementary macht aus akzeptierenden Zust nde nicht akzeptierende und umgekehrt 3 2 1 7 2 Vereinigung Die Operation automaton union Automaton erlaubt es zwei Automaton O
240. llige Symbole J C Q einer Menge von Startzust nden und A einer Menge von Abbildungs regeln vom folgenden Typ a f z1 En gt f qi 21 5 qnl En wobei n gt 0 f Fa 591 An Q X In x Wenn n 0 ist d h wenn das Symbol ein Konstantensymbol a ist dann ist die Zustands bergangsfunktion bei einem Top Down NFTA von der Form q a a Die Ausdrucksst rke von Top Down und Bottom Up Baumautomaten ist gleich Determi nistische Top Down Baumautomaten sind allerdings nicht so m chtig wie nichtdeterminis tische d h es existiert eine erkennbare Baumsprache die von keinem Top Down DFTA akzeptiert wird und darum sind sie auch nicht so m chtig wie Bottom Up Baumauto maten Baumeigenschaften die von einem deterministischen Top Down Baumautomat beschrieben werden k nnen nur von Wegeigenschaften abh ngen Ein endlicher Top Down Baumautomat Q F Qj A ist deterministisch wenn es genau einen Startzustand gibt und keine zwei Regeln mit derselben linken Seite existieren 2 1 3 Alternierende Automaten Die Verifizierung von abstrakten Modellen ist auf die G ltigkeit von Formeln reduzierbar die gew nschte Eigenschaften beschreiben Insbesondere im Zusammenhang mit der Infor matik interessiert die Verifizierung einer Formel Dies trifft auf Datenbankanfrageauswer tungen FS Programmverifikation siehe sp tere Abschnitte oder Wissensrepr sentation ZU Obwohl die G ltigkeit und Verifizierung einer
241. ln durch Boolesche Operatoren miteinander zu verbinden So erh lt er detailliertere Informationen Hier kann die check KripkeModel LTLPreprocessor LTLBPNode Methode ohne Bedenken aufgerufen werden denn wenn sich die Referenz auf das Kripkemodell nicht von derjenigen aus dem letzten Auf ruf unterscheidet wird das Kripkemodell nicht erneut in einen B chiautomaten trans formiert Analog gilt f r identische Referenzen auf Ausdrucksb ume dass bei un ver nderter Pr prozessor Referenz die Transformation der Formel in einen Automaten nicht erneut angesto en wird Bei unterschiedlichen Pr prozessor Referenzen ist eine neue Transformation erforderlich wenn die aktuelle Referenz nicht null ist andernfalls kann auf die im Model Checker gespeicherte Originalformel zur ckgegriffen werden Mit KripkeLTLModelChecker kann man also auch verschiedene Modelle mit einer Formel ef fizient pr fen Dieses Verhalten des Model Checkers f hrt allerdings zu falschen Ergeb nissen wenn die referenzierten Objekte nachtr glich ver ndert werden In diesem Fall sollte vor jedem Checking der Zustand des Model Checkers durch einen clear Aufruf zur ckgesetzt werden 3 1 3 3 Pr prozessoren f r LTL Formeln Die Pr prozessoren wurden urspr nglich durch Eigenheiten des Model Checkings von Kripkemodellen motiviert die aus Whileprogrammen erzeugt wurden Es ist aber denkbar dass ein Preprocessing auch noch bei anderen Modellen erforderlich wird weshalb die
242. ls grundlegende Problemstellung noch das automatisierte Layouten der Automaten Graphen Zus tzlich zu diesen nur die Anzeige betreffenden Zielen sollte es auch noch erm glicht werden Automaten visuell zu editieren im brigen eine Anforderung die mitverantwort lich f r die Abkehr vom JUNG Framework war Abgesehen von den gerade genannten Prim rzielen war es auch ein Anliegen den zu erstellenden Editor flexibel bez glich der Erweiterung um neue Automaten Typen und Layout Algorithmen zu gestalten aber auch das Design m glichst eigenst ndig zu halten der Editor zumindest die reine Visualisierungskomponente sollte auch eigenst ndig ohne Workspace lauff hig sein Trotz dieser Eigenst ndigkeit wurde aber nat rlich Wert auf eine gute Integration des Editors in den parallel zu erstellenden Workspace gelegt W hrend im ersten Semester vor allem die Entwicklung des allgemeinen Frameworks zur Anzeige von Automaten im Vordergrund stand wurde das zweite Semester dem Ausbau der Editierm glichkeiten neuen Automaten Typen und der noch tiefer gehenden Integra tion in den Workspace gewidmet Zusammengefasst stellten sich also folgende Anforderungen e Visualisierung von verschiedenen Automaten Modellen e automatisiertes Layout von Automaten Graphen e Bearbeitung Erstellung von Automaten 3 6 EDITOR 197 e leichte Erweiterbarkeit auf neue Automaten bzw Graphen Typen e Implementation als eigenst ndiges Framework innerhalb des Ges
243. m Booleschen Wert value true entspricht 1 false entspricht 0 verbunden falls es von from noch keine ausgehende Kante mit value gibt Das Gegenst ck zu connect ist disconnect Die se Methode entfernt alle direkten Kanten zwischen einem from und einem to Zustand removeTransition in der Klasse OBDD benutzt genau diese Methode 3 2 AUTOMATEN 137 3 2 5 Biichiautomaten Das bisher betrachtete Modell endlicher Automaten ist in mancherlei Hinsicht sehr einge schr nkt Endliche Automaten sind nicht in der Lage W rter aus berm ig ausdrucks starken Sprachen zu erkennen Es lassen sich immer nur endliche W rter erkennen und es ist auch nicht m glich zu z hlen da der Zustandsraum dieser Automaten endlich ist Schon kontextfreie Sprachen k nnen nicht mehr erkannt werden Allerdings gibt es eine andere besondere Automatenklasse die strukturell den endlichen Automaten gleicht aber so interpretiert wird dass damit regul re Sprachen unendlicher W rter repr sentiert werden k nnen Das ist der gew hnliche B chiautomat Damit erschlie en sich eine gro e Reihe neuer Nutzungsm glichkeiten Im Gegensatz zu der Klasse der endlichen Automaten ist es nicht unbedingt w nschenswert L ufe auf unendlichen Eingaben zu simulieren da diese kein Ende h tten Jedoch ist die Analyse der grundlegenden Mengeneigenschaften der erkannten Sprache dieser Automatenklasse interessant Vereinigung Schnitt Komplement und Leerheitstest
244. m Syntaxbaum natiirlich selbst noch durch mehrknotige B ume repr sentiert sind Ersetzt man diese B ume jeweils durch einen Metaknoten dann ist die Menge der entstandenen Metaknoten 2 3 ANALYSE MIT AUTOMATEN 45 die Bl ttermenge des modifizierten Syntaxbaums Die Semantik der Presburger Arithmetik wird so definiert wie man es bei Betrachtung der Syntax auch erwartet Da eine Formalisierung an dieser Stelle keinen Mehrwert bringt soll darauf verzichtet werden Wir sind daran interessiert f r beliebige Formeln der Presburger Arithmetik zu ent scheiden ob sie erf llbar sind oder nicht Die Entscheidbarkeit dieses Problems wird durch das nachfolgend beschriebene Verfahren bewiesen Allerdings kann nicht erwartet werden dass es f r beliebige Eingaben effizient ist denn f r das Problem wurde ohne Zugrundelegung von Hypothesen eine doppelt exponentielle untere Schranke f r den Worst Case nachgewiesen Es ist also deutlich schwieriger als alle NP vollst ndigen Probleme berdies kann jedes Problem aus NP auf die Presburger Arithmetik re duziert werden Dies l sst sich beispielsweise durch eine einfache Reduktion des NP vollst ndigen Problems 3 SAT auf die Erf llbarkeitspr fung nachweisen F r eine 3 SAT Formel A lt m Li V Li2 V Lig mit Literalen Lij x und Variablen Gr ee En wird in polynomieller Zeit die erf llbarkeits quivalente Presburger Formel A r lt icm Ti1 G Via G2V Zig Ci 1 MA lt
245. m omega regular expression Finite automaton from Presburger expression Finite automaton from regular expression Kripke model from While ET Abbildung 3 50 Triple A Workspacemen ber den Men eintrag File New erreicht man alle installierten Automatenanalysen Die Eintr ge in diesem Men k nnen je nach installiertem Plugins abweichen Abbildung 3 50 zeigt alle Basisplugins Diese sind Finite automaton via visual editing ber diese Plugin l sst sich ein leerer Automat im Editor manuell zusammenbauen 220 KAPITEL 3 GRUPPENERGEBNISSE Kripke Model Manuell wird hier ein Kripkemodell im Editor erstellt Dieses kann dann zu einem B chiautomaten konvertiert werden Dieses Plugin ist f r Model Checking geeignet B chi Automaton from LTL Erstellt einen B chiautomaten auf Basis einer LTL Spezifikation B chi Automaton from omega regular expression Ein B chiautomat aus einem w regul ren Ausdruck kann hier erzeugt werden Finite Automaton from Presburger expression Erzeugt einen endlichen Automa ten zu einer Formel der Presburger Arithmetik Finite Automaton from regular expression Regul re Ausdr cke k nnen mit diesem Plugin in endliche Automaten transformiert werden Kripke Model from While Eine Eingabe aus einer einfachen While Sprache wird hier in ein Kripkemodell transformiert 3 7 3 Umgang mit dem Navigator 4 Automaton aa Automaton 9 Finite Automaton 7 Finite Automaton Finit
246. mat dann in einem akzeptierenden Zustand wenn das Wort zu der von ihm repr sentierten Sprache geh rt andernfalls in einem nicht akzeptierenden Zustand Instanzen der Klasse aaa automaton FiniteRun sind dazu da einem FiniteAutomaton ein Wort einzugeben und schrittweise zu beobachten wie sich der Automat beim Lesen dieses Wortes verh lt Der Konstruktor nimmt als Argumente einen Automaten und eine Eingabe entgegen Danach kann schrittweise der zu dem eingegebenen Wort korrespondierende Lauf mittels der Methode step durchgef hrt werden Da step true zur ckliefert solange noch Zeichen aus der Eingabe zu lesen sind kann man z B einfach mit einer while Schleife einen kompletten Lauf durchf hren Da ein Lauf auch auf nichtdeterministischen endlichen Automaten stattfinden kann d h auf solchen die nicht vorher deterministisch gemacht wurden gibt die Methode get CurrentStates alle m glichen Zust nde zur ck in denen der Automat sich nach dem Lesen eines Pr fix der Eingabe gerade befinden kann Ferner kann man einen Lauf mit reset zur cksetzen oder man kann pr fen ob der Lauf akzeptierend isAcceptingRun ist oder im aktuellen Schritt akzeptierend ist isCurrentlyAccepting 3 2 1 7 Operationen Erst Operationen bewirken dass man Automaten m chtig und sinnvoll nutzen kann Ihre Implementierung erfordert aber manchmal gr ere Mengen von Programmzeilen Um hier nicht die bersicht zu verlieren wurden a
247. maton myAlphabet Auch bei Aufruf des parameterlosen Konstruktors new FiniteAutomaton wird ein CharacterAlphabet gew hlt denn das ist das default Alphabet Ein anderes kann mit der statischen Methode Automaton setDefaultAlphabet Alphabet eingestellt werden Der Automat ist nun komplett leer er besitzt keinen einzigen Zustand und somit auch keinen Startzustand In dieser Situation soll nicht dauerhaft verweilt werden Ein neuer Startzustand wird also erstellt 114 KAPITEL 3 GRUPPENERGEBNISSE State initialstate new State initial initialState setlnitial true Dieser Startzustand geh rt noch zu keinem Automaten Mittels myAutomaton addState initialState wird dieser Zustand als neuer Startzustand explizit zum Automaten hinzugef gt Der bisher konstruierte Automat ist noch nicht sehr interessant und erf llt nur minimale Anforderungen Es gibt noch keinerlei Transitionen oder akzeptierende Zust nde Nun soll folgendes geschehen State finalstate new State final finalState setAccepting true Symbol someSymbol myAlphabet createSymbol a Transition someTransition new Transition initialState someSymbol finalState myAutomaton addTransition someTransition Ein neuer akzeptierender Zustand und ein Symbol fiir das Zeichen a werden erzeugt Dieses Zeichen l st die neu konstruierte Transition vom ersten Zustand zu dem neu er zeugten Zus
248. menge T 0 Queue queue c if 0 lt c then mache init akzeptierend while queue do q dequeue queue if q lt c then mache q akzeptierend for all b 0 1 do do q a b 2 if do Q then Q Q U qo und enqueue queue qo T T U 90 b q y if q gt a b then T T U init b g vervollst ndige den Automaten determinisiere den Automaten in linearer Zeit Q QU reject T T U q b reject If Q q b q T Algorithmus 3 Konstruktion eines Automaten f r eine Ungleichung 2 3 1 5 Konstruktion von Automaten f r beliebige Formeln Um einen Automaten f r eine beliebige Formel der Presburger Arithmetik konstruieren zu k nnen wird die Formel zun chst in Pr nex Normalform gebracht Diese hat die Form Q z Qoz2 QmEm lyi Yx wobei Q1 Qm Quantoren sind und 1 m die durch diese Quantoren gebundenden Variablen sind y Yg sind die freien Variablen der Formel ist eine Komposition aus Und Oder und Nicht Formeln und von Atomen als innersten Elementen Zus tzlich fordern wir dass sich Negationen in der Normalform nur noch auf Gleichungen beziehen d rfen Eine M glichkeit ist f r jedes Atom einen Automaten zu konstruieren wobei nur Varia blen mit Koeffizienten 4 0 ber cksichtigt werden und anschliessend bottom up entlang des Syntaxbaums Automaten f r komplexere Teilformeln zu berechnen F r Boolesche Verkn pfun
249. mes void framesDeselected List lt InnerFrame gt deselectedFrames Plugin getPlugin String classname void saveWorkspace String path void loadFromDisk String path Abbildung 3 32 Das Grundkonstrukt der Plugins und die wichtigsten Methoden 3 5 5 Die Klasse GenericOperationDriver Die im ersten Semester verwendete Ansteuerung der Automaton Klassen funktionierte ber das Implementieren einer eigenen Klasse pro Aktion und eine umst ndliche Filterung bez glich der Anwendbarkeit einer Operation auf einer im Workspace gegebenen Menge 184 KAPITEL 3 GRUPPENERGEBNISSE von ausgew hlten Automaten Dies wurde als unzureichend empfunden da umst ndlich neue Automaten Operationen jeweils als neue Aktions Klasse im Workspace program miert werden mussten umfangreicher Code mehrfach im Projekt vorkam und jede Aktion einzeln auf ihre Anwendbarkeit auf die aktuelle Automatenauswahl gepr ft wurde Daher wurde im zweiten Semester eine generische L sung entwickelt welche die zuvor genannten Probleme l st Die L sung bestand in der Anwendung der Java Reflection Technologie und den mit Java 5 erstmals eingef hrten Annotations Damit ist es m glich zur Laufzeit auf Methoden zuzugreifen deren Existenz oder genaue Auspr gung zur Zeit der Programmerstellung nicht bekannt war ber Annotations sollten fortan alle auf Automaten anwendbare Methoden in einer Automaten Klasse markiert und mit Meta Informationen versehen werden Der Driver soll d
250. mit Backtracking Anhand eines Beispiels soll das Konzept hier kurz erl utert werden Sei die Grammatik aus Abbildung 3 13 gegeben und das Eingabewort sei cad Der Parser wird nun auf folgende Art und Weise vorgehen das Wort zu zerlegen 1 Da S das Startsymbol ist wird S nach cAd abgeleitet 2 Der erste Buchstabe der Ableitung stimmt mit dem ersten Buchstaben aus dem Ein 3 3 PARSER 151 F 2 ATOM o ar or er a een a nal ATOM TRT it ela val e an R Se ee ke le Vv gt ALPHAALPHANUMSMALL L gt POSINTNULL NEGINT ALPAHAALPHANUMSMALL alle klein geschriebenen alphanumerischen Folgen die mit einem kleinen Buchstaben beginnen POSINTNULL positive Integer und die Null NEGINT negative Integer Verwendet das Kompatibilit tsinterface von Token und PNode Abbildung 3 14 Presburger BNF gabewort berein Der Parser wird nun das erste Nichtterminal A nach ab ableiten 3 Der expandierte Ausdrucksbaum enth lt nun an allen Bl ttern Terminale und re pr sentiert das Wort cabd welches nicht mit dem Eingabewort berein stimmt Der Par ser wird nun die andere Alternative ausprobieren cad was auch mit dem Eingabewort bereinstimmt Das Prinzip ist also das Folgende leite so lange ab bis ein Fehler gefunden wird und gehe dann zur ck und probiere eine Alternative bis keine Alternativen mehr vorhanden sind woraus ein Fehler folgt oder bis der Ausdrucksbaum das Eingabewort repr sentiert 3 3 2 1 G
251. modelle war es schliesslich m glich Verfahren f r das Model Checking von Kripkemodellen mit LTL und CTL Formeln zu implementie ren Es wurde sogar eine While Sprache entwickelt f r die sich Kripkemodelle generieren lassen so dass While Programme verifiziert und untersucht werden k nnen Der Automa tenbibliothek sind einige Typen von Alphabeten hinzugef gt worden und vor allem ist die Repr sentation von Transitionen verallgemeinert worden Einzelne Transitionen k nnen nun mit Mengen von Symbolintervallen oder aber mit OBDDs beschriftet werden Das flexible Driver Konzept der grafischen Oberfl che wurde leicht angepasst um neben der universellen Darstellung auch auf die speziellen Eigenheiten der neuen Automantentypen bzw des Kripkemodelles anwendbar zu sein Zun chst wird ein Abriss ber die in der Seminarphase behandelten Themen gegeben Im Anschluss werden dann die Ergebnisse der einzelnen Gruppen vorgestellt Die Gruppen ergebnisse werden nicht grunds tzlich getrennt nach erstem und zweiten Semester darge stellt dennoch wurde darauf geachtet dass der Verlauf der Entwicklung nachvollziehbar bleibt Die Projektgruppe hat sich im ersten Semester in die Teilgruppen Automaten Team 4 Mitglieder Workspace Team 4 Mitglieder Transformations Team 1 Mitglied und Parser Team 2 Mitglieder aufgeteilt Im zweiten Semester bestand das 1 2 BERSICHT 5 Workspace Team nur noch aus 2 Mitgliedern das nur n
252. mouse MouseEvent e an dasjenige Objekt welches ber contains den Wert true liefert weitergereicht Zur Optimierung wird die contains Methode nur bei denjenigen Objekten aufgerufen bei denen der Ort der Maus Interaktion in dem per getBounds zur ckgelieferten Rechteck liegt Die Berechnung dieses Rechtecks ist h ufig schneller m glich als die Positionsbe stimmung eines Punktes innerhalb einer komplexeren Form so dass diese Ma nahme der Geschwindigkeitsoptimierung dient die umso sinnvoller ist je mehr Objekte innerhalb des Editors dargestellt werden 3 6 EDITOR 199 3 6 2 1 4 public void mouse MouseEvent e Die Punkte im Methodennamen stehen hier stellvertretend f r eine Menge von Methoden welche bei Maus Interaktionen automatisch vom Editor aus aufgerufen werden Es gibt Methoden f r das Anklicken Betreten Verlassen Ziehen usw Das dabei bergebene MouseEvent Objekt stammt aus dem Package java awt event und ist somit f r Java Programmierer kein Unbekanntes 3 6 2 2 Klasse AbstractPaintable Diese Klasse enth lt einige der vom Paintable Interface verlangten Methoden mit einer Standard Implementation und dient nur dem Komfort des Programmierers der f r seine eigenen Komponenten dann nur noch von dieser Klasse ableiten muss 3 6 2 3 Klasse PaintableContainerPanel Die Klasse PaintableContainerPanel stellt die Schnittstelle zu Suns javax swing Package dar Es ist ein JPanel das die Zeichenfl che des Editors enth
253. mplementierung die nicht wirklich ob jektorientiert ist Die bergangsfunktion wird durch Angabe von Knotennummern realisiert Der Grund daf r liegt darin dass urspr nglich eine C Version implemen tiert wurde die dann auch nach Java konvertiert wurde Um diese Bibliothek unter Java 1 4 2 lauff hig zu machen mussten einige nderungen durchgef hrt werden Au erdem f llt negativ auf dass der Automat auf Basis eines regul ren Ausdrucks vom Automaten aus Zust nden und Zustands bergangsfunktion abweicht 2 4 2 5 JFlap JFlap ist von allen angegebenen Bibliotheken die funktional umfassenste Codesamm lung Mit JFlap lassen sich DFA NFA regul re Ausdr cke Grammatiken PDA und TM implementieren Sie wird aktuell von Susan H Rodger Associate Professor of the Practice Department of Computer Science Duke University Durham betreut Hierbei handelt es sich um eine laufende Entwicklung die 1990 begonnen wurde Funktionsumfang Auch hier beschr nken wir uns wieder auf Automaten und regul re Ausdr cke Zum einen kann man einen Automaten mittels Zust nden und Zu stands bergangsfunktion modellieren Leider ist es trotz intensiver Bem hungen nicht gelungen einen Automaten mittels eines gegebenen regul ren Ausdrucks zu konstruieren Automat Auf Automaten sind eine Vielzahl weiterer Operationen erlaubt Automa tenminimierung Komplement Produktsprache Quotientensprache Entfernen von berfl ssigen Zust nden Vereinig
254. n Endzustand erkl ren O Abbildung 3 55 Gr enver nderung an Zust nden 3 7 8 2 3 Position und Gr e von Zust nden Per Drag amp Drop k nnen Zust nde an beliebige Positionen verschoben werden F r Transitionen ist dies nicht m glich aber auch nicht notwendig da diese immer fest zwischen zwei Zust nden h ngen und sich bei deren Bewegungen mitbewegen Bei normalen Automaten ist die Gr e der dargestellten Zust nde fest und kann nicht ver ndert werden Je nach Plugin sind aber auch in der Gr e bearbeitbare Zust nde 3 7 HANDBUCH 225 m glich so etwa bei den Kripkemodellen In diesem Fall l sst sich die Gr e wie in g ngigen Anwendungen durch Anklicken eines Zustandes und anschlie endem Drag amp Drop auf einem der 8 dargestellten Punkte ver ndern Abbildung 3 55 zeigt einen solchen Vor gang Triple A Workspace File Action Analysis 4 ee Finite Automaton Finite Automaton rn Hg a a e A layout rand Frucht Reing Properties state Property Value index 2 string key 2 label ar Console Tag r Initialize Addon Regular Expression Plugin Initialize Addon While Plugin riple A Workspace started Have fun Abbildung 3 56 Eine neue Transition wird durch Dr cken der STRG Taste und das Ziehen der Maus zwischen zwei Zust nden erstellt 3 7 8 2 4 Erzeugen von neuen
255. n darf Eine Formel der Presburger Logik kann in einen endlichen Automaten transformiert wer den und die Erf llbarkeit dieser Formel kann mit der Analysefunktion findMembers ent schieden werden 3 7 9 2 1 Eingabe Als Eingabe wird eine Formel der Presburger Arithmetik erwartet 3 7 HANDBUCH 229 3 7 9 2 1 1 Atome Im einfachsten Fall ist die Formel ein Atom wobei ein Atom die Verkn pfung zweier Terme durch lt lt gt oder gt ist und ein Term entweder ein ein zelnes Glied oder die Verkn pfung mehrerer Glieder durch bin re oder Operatoren ist Ein Glied wiederum ist entweder die dezimale Repr sentation g einer ganzen Zahl eine einzelne Variable x oder aber das Produkt gx einer ganzen Dezimalzahl g und einer Variablen x Als Variablen sind alle Zeichenfolgen erlaubt die mit einem Kleinbuchstaben beginnen und nur aus Kleinbuchstaben oder Dezimalziffern bestehen Alle Zahlen m ssen im Intervall 2147483648 2147483647 liegen Innerhalb von Termen und Atomen d rfen sich Variablen beliebig oft wiederholen und sich auch gegenseitig aufheben Es ist nur darauf zu achten dass sich das Atom nicht zu true oder false reduzieren l sst An kei ner Stelle muss unbedingt ein Leerzeichen stehen aber es d rfen zwischen den Elementen beliebig viele Leerzeichen eingef gt werden Ein Atom darf in eine beliebige Anzahl von Klammerpaaren eingebettet werden Alle Variablen werden als ganzzahlig interpretiert Ein Beispie
256. n einer L sung akzeptiert werden Der Automat f r x 1 Ay 4 ak zeptiert alle W rter der Sprache 0 0 0 0 0 1 0 0 1 0 was auch korrekt ist Durch Wegprojizieren der Variablen y ergibt sich ein Automat f r Jy 2 1 A y 4 der allerdings nur 00 001 statt 00 1 akzeptiert Nach der Projektion ist lediglich sichergestellt dass Repr sentationen ab einer bestimmten L nge akzeptiert werden Die gew nschte Ei 3 1 TRANSFORMATION 85 genschaft wird wiederhergestellt indem eine Transition vom Startzustand zum Zustand q mit Beschriftung b eingef gt wird wenn q ber ein Wort in b erreichbar ist Algorith misch bildet der Startzustand Schicht 0 anschlie end werden der Reihe nach die Schichten 1 2 berechnet Schicht 2 i gt 0 enth lt genau die Zust nde die von Schicht i 1 aus in genau einem Schritt erreichbar sind und in keiner der Schichten j mit j lt i bereits ent halten waren F r jeden Zustand q der Schicht i wird die Menge der Vektoren b berechnet so dass q vom Startzustand aus durch Lesen des Wortes b erreichbar ist F r i 1 ist dies die Vektormenge der eingehenden Transition F r i gt 1 ist f r jeden Vorg nger q von q in Schicht i 1 die Vektormenge von q mit der Vektormenge der Transition von q nach q zu schneiden und anschlie end sind die so erhaltenen Schnitte zu vereinigen Der Algorithmus terminiert sobald eine Schicht leer ist Enth lt in einer Schicht ein Zustand in seiner Ve
257. n gibt es eine Menge M c q1 Cn Gn M erf llt k 0 C 1 k x Q so dass 1 lt i lt n 0 1 E Tr T v 1 v ci qi Lemma 4 Ein ATA der Gr e n kann in einen NTA der Gr e 20 umgewandelt werden Lemma 5 Somit ist der Leerheitstest f r einen ATA in exponentieller Zeit entscheidbar 2 1 3 1 6 Reduktion des Leerheitstests Der Leerheitstest f r NTAs ist reduzierbar auf denselben Test mit nur a als Beschriftung Ein NTA A wird in einen NTA A berf hrt man ersetzt a und 6 0 Hierbei ist 0 q a k Uses q b k A akzeptiert irgendeinen Baum 7 T gdw A einen a beschrifteten Baum 7 T akzeptiert D h A err t eine gt Beschriftung und verf hrt dann wie A Diese Reduktion ist nicht auf ATA anwendbar A akzeptiert r T A akzeptiert 7 T gilt nicht i A d h L A C L A Denn zwei verschiedene Kopien von A die auf demselben Teil von 7 T laufen m ssten immer die gleiche Beschriftung erraten Lemma 6 Der Leerheitstest f r einen ABA ber einem einelementigen Alphabet ist in quadratischer Zeit entscheidbar Dies ist quivalent zu dem Leerheitstest eines ATA auf uniformen bl tterlosen 1 B umen mit a als Alphabet 2 1 3 2 Temporallogik und alternierende Automaten Temporallogik ist ein Zweig der Modallogik Man unterscheidet zwei Typen von Tem porallogiken lineare und verzweigende In der linearen Temporallogik LTL hat
258. n ist so sind zwei Quantoren mit derselben Variable ineinander geschachtelt und der erste Fehlerfall liegt vor 3 1 2 2 2 Normalisierung In diesem Schritt wird die Formel in Pr nexnormalform berf hrt Diese hat den Vorteil dass f r die Booleschen Verkn pfungen auf sehr ein fache Weise Automaten berechnet werden k nnen Alle Atom Automaten arbeiten auf demselben Alphabet und im inneren Teil der Formel werden diese Atome lediglich durch A und V verkn pft was den Automaten Operationen N und U entspricht Jeder Quantor erfordert eine Projektion des Automaten wobei sich das Alphabet ver ndert Eine Boole sche Verkn pfung oberhalb eines Quantors k nnte im Allgemeinen nicht mehr durch eine Standard Automaten Operation behandelt werden weil die beiden Kind Automaten un terschiedliche Alphabete verwenden Ein Standard Produktautomat w re in diesem Fall aber naiv weil die Kinder gemeinsame Variablen enthalten k nnen die Automaten also nicht unabh ngig voneinander simuliert werden k nnen Gibt es gemeinsame Variablen so gibt es inkonsistente Bitvektoren die Variablen mehrfach belegen Das Lesen solcher Vektoren muss sofort in den endg ltig ablehnenden Zustand f hren Eine kompaktere Produkt Automaten Operation m sste eigens f r diese Anwendung unter gr erem Auf wand implementiert werden daher haben wir uns f r den hier dargestellten Weg entschie den Man k nnte auch die Alphabete und Automaten nach Bedarf angleichen so wie e
259. n und Transitio nen als Kanten die mit Triggern beschriftet sind Ein Trigger repr sentiert die Menge der Symbole die eine Transition ausl sen k nnen Das Trigger Konzept wurde in der zweiten Phase des Projekts stark verallgemeinert weshalb an dieser Stelle f r eine detail 106 KAPITEL 3 GRUPPENERGEBNISSE lierte Darstellung auf Abschnitt 3 2 3 1 verwiesen sei Die Automaten sind in der Regel unvollst ndig das hei t dass nicht f r jeden Zustand und f r jedes Symbol des Alphabets eine Transition existiert die diesen Zustand erreicht oder verl sst und die durch dieses Symbol geschaltet wird 3 2 1 1 Zust nde Automaten bestehen aus Zust nden die durch Instanzen der Klasse State repr sentiert werden Da dies alle Automaten betrifft ist die Verwaltung der Zust nde in der abstrakten Klasse aaa automaton Automaton implementiert Dies geschieht mit Hilfe der internen Liste states Zust nde werden entweder explizit durch Aufruf der Methode addState zu dieser Liste hinzugef gt oder implizit beim Hinzuf gen einer Transition die einen noch nicht im Automaten enthaltenen Zustand betrifft Dabei ist darauf zu achten dass ein Zustand nicht mehrfach hinzugef gt wird ansonsten f hrt dies zu einer Ausnahme Ein Zustand hat folgende Eigenschaften 1 owner referenziert den Automaten zu dem der Zustand geh rt 2 index ist die Nummer des Zustands in der states Liste seines Automaten 3 key dient zur eindeutigen internen I
260. n von Operatorpr zedenzen innerhalb eines Parsers Kern des Ganzen ist e ein Stack f r Operatoren MEine Mischung aus regul ren Ausdr cken und BNF 3 3 PARSER 155 LTL EN P ae BINOP P ae x P gt OPD LTL UNOP P BINOP EN ER ee 149 WES DN ee Ss a OPD gt true false PROP UNOP EN SR ER SEE Te PROP atomare Propositionen alle Kombinationen aus Zahlen kleinen Buchstaben und nicht reservierten Zeichen Abbildung 3 17 Infix LTL PEG LTL BINOP LTL LTL UNOP LTL OPD BINOP EN NES ee S A SURE We EAN PA OPD true false PROP UNOP peak 58 IE HS er PROP atomare Propositionen alle Kombinationen aus Zahlen kleinen Buchstaben und nicht reservierten Zeichen Abbildung 3 18 Prefix LTL PEG e ein Stack f r Operanden e eine Pr zedenzmethode die einem Operator eine Pr zendenz zuordnet e zwei Verwaltungsmethoden popOperator und pushOperator Die beiden letzteren Methoden implementieren folgendes Verhalten 3 3 3 1 1 pushOperator op Solange auf dem Operatorenstack ein Operator mit h herer Pr zedenz ist als op wird popOperator aufgerufen Danach wird der Operator op auf den Operatorenstack gelegt 3 3 3 1 2 popOperator Nimmt den obersten Operator vom Operatorenstack je nach Stelligkeit des Operators entsprechend viele Operanden vom Operandenstack und konstruiert daraus einen Kn
261. nauigkeit der erzeugten Kripke Struktur static StateMangle stateMangle StateMangle FULL Hat nur eine Auswirkung falls processMangle ProcessMangle FULL ist Entscheidet ob die Knotennummer des Programmgraphen im Knoten der Kripkestruktur notiert wird im Falle FULL wird dies getan Weitere Einstellungsm glichkeit NONE es werden keinerlei Informationen gespeichert Diese Einstellung kann die Genauigkeit der Kripke Struktur u U drastisch reduzieren private static int maxProcesses 256 Maximale Anzahl der Prozesse die gleichzeitig von einem Kontext verwaltet werden 3 1 5 1 7 2 Process java static final boolean allBlock true L sst den Prozess nur eine Anweisung ausf hren au er es wird eine atomic Anweisung ausgef hrt Setzen der Variablen auf false l sst einen Prozess solange unterbrechungsfrei laufen bis eine Zuweisung ausgef hrt wurde explizit mit wait geblockt wird oder ein neuer Prozess erzeugt werden soll Abh ngig vom While Programm kann dies u U die Genauigkeit verringern private static int marRecursion 256 Maximale Rekursionstiefe f r Methodenaufrufe 3 1 5 1 8 Problemanalyse Mit Hilfe dieser leicht erweiterten While Sprache ist es m glich schneller und einfacher gr ere Modelle zu erstellen als dies mit rein manueller gt Im Sinne von jeder Prozess gelangt immer an eine Anweisung ohne Nachfolger 104 KAPITEL 3 GRUPPENERGEBNISSE Eingabe zu bewerkstelligen w re Die
262. nd Freigabe macht Eclipse basiert auf SWT und nicht Suns Swing AWT Framework Daher m ssen auch s mtliche graphischen Elemente die man per Plug in in Eclipse einbauen m chte ebenfalls auf SWT basieren Die Gr nde f r den Einsatz von SWT liegen in der Historie der Entwicklung von Java und haben ihre Wurzeln in den Unzul nglichkeiten von AWT und den Anfangsproblemen von Suns Swing Die Verwendung von SWT stellt f r Swing gewohnte Programmierer eine Umstellung dar die jedoch durch Eclipse JFace abgefedert wird JFace ist eine Sammlung von Klassen und Tools die auf SWT aufsetzt und typische Aufgaben des Benutzer Interface von Eclipse umsetzt Dazu z hlen Frameworks f r Dialoge Eigenschaften und Wizards etc sowie auch Views Editoren und Actions Ein Beispiel f r den Einsatz von JFace war bereits der MessageDialog Aufruf im HelloWorld Beispiel JFace setzt also jedoch ohne es dabei zu verdecken auf SWT auf und bietet eine komfortablere Schnittstelle zur Programmierung von Workbench Komponenten 72 KAPITEL 2 SEMINARPHASE Java fourBitAdder3 logic Eclipse SDK Eile Edit View Navigate Search Project Run Window Help we 8 0 E 6 89 ori dev a 184 oF 60 m0 y Plug in Devel HB Pack 53 7 gt EEG foursitadder3 logic 3 N DEE outine 3 FO gt las a ome y Select E Marquee Marquee Toolto select nodes only D Em e ra or ard Connection C
263. nd selbstbezogene Kanten 3 6 3 3 1 Klasse SymbolRangesLabel Die Klasse SymbolRangesLabel leitet von TextLabel ab und ist eine generische Klasse zum Anzeigen von SymbolRange Listen welche im aaa automaton FiniteAutomaton f r die bergangsfunktion benutzt werden Zur Anzeige wird die toString Methode der jeweils verwendeten Symbole benutzt Es ist vorstellbar dass f r speziellere Darstellungsw nsche an den Kanten neue Label erstellt werden So k nnten zum Beispiel Bitvektoren vertikal dargestellt werden Properties transition trigger v epsilon Start End a if i intervall Add Remove Abbildung 3 39 Ein im Property Panel eingeblendeter Dialog zur Bearbeitung der SymbolRanges an Transitionen 3 6 3 3 2 Klasse SymbolRangesPropertyPanel Mit dem in Abbildung 3 39 darge stellten SymbolRangesPropertyPanel wird eine ebenfalls generische vom SymbolRanges Label aus benutzte Klasse angeboten Sie stellt ein Editier Panel dar welches zum Bear beiten der SymbolRange Listen benutzt werden kann Die Darstellung und auch die Ein gabe der Symbole erfolgt per Strings F r die Eingabe wird die createSymbol String sym Methode des vom Automaten benutzten Alphabets benutzt Auch hier ist es vor stellbar die generische Programmierung dieses Panels f r speziellere Symbol Typen durch 3 6 EDITOR 205 eine komfortablere Version zu ersetzen Bitvektoren k nnten beispielsweise d
264. ndige Symbolmenge erzeugt werden sollen oder dass zu Standard Darstellungen korrespondierende Trigger ben tigt werden ohne dass man sich darum k mmern m chte welche konkrete Darstellung verwendet wird z B wenn man eine Symbolmenge erzeugen m chte die nur aus einem einzigen Symbol be steht Daher geh rt zu jeder Trigger Implementierung auch die Implementierung einer TriggerFactory mit den Methoden createEmptyTrigger createFullTrigger createSingleSymbolTrigger Jeder Automat ist mit einer seinem Triggertyp entspre chenden TriggerFactory assoziiert Beim Instanziieren eines Automaten wird der zu benutzende Triggertyp angegeben so dass im Konstruktor die passende TriggerFactory ausgew hlt werden kann 130 KAPITEL 3 GRUPPENERGEBNISSE 3 2 3 2 2 Transitionanalysen mit OBDDs Die bereits genannten Methoden des Interface Trigger reichen aus um viele Probleme zu l sen z B kann damit ein Produkt automat berechnet werden dabei wird jeweils per Trigger cut gepr ft ob zwei Transitionen von gemeinsamen Symbolen geschaltet werden Falls ja ist eine mit dem R ckgabewert von Trigger cut markierte Transition des Produktautomaten zu kon struieren Auch kann berpr ft werden ob ein Automat deterministisch ist Dabei wer den die Trigger der von einem Zustand ausgehenden Transitionen paarweise geschnitten Falls einer dieser Schnitte nicht leer ist ist der Automat nicht deterministisch F r manche Operationen insbesondere die
265. ne AS e 156 Grammatik f r regul re Ausdr cke 159 Verwendung des Parsers f r regul re Ausdr cke 160 Disjunktion von zwei regul ren Ausdr cken 22 2 2 22 22 nn 161 Kleenescher Abschluss von einem regul ren Ausdruck 162 w Abschlu von einem regul ren Ausdruck 2 2 2 2222 nenn 162 Triple A Workspace in de ke DARE ae 167 Klassen bersicht des Workspaces 2 2 2 oa a a 168 Die Kl ss Console o rad En ER ds 170 Die Klasse PropertyManager dia lee id 171 ResoureeManaget 2 2 ies a siu 28 Va E e A E E g 172 MORSA AA dut ra do ata at a aa ase 173 Die Addonverzeichnisstruktur a 175 Das Grundkonstrukt der Plugins und die wichtigsten Methoden 183 Zusammenhang von Automaten und Analyseplugins 189 Klassenstruktur aller Plugins f r endliche Automaten 191 Die wichtigsten Klassen und Methoden des Paintable Frameworks 197 Die wichtigsten Klassen und Methoden des PaintableAutomaton Addons welches auf dem Paintable Framework aufsetzt 2 222222 201 Beispielbild der drei m glichen Typen von Zust nden und ein Popup Men zur Bearbeitung e en 2 A a eier 203 Die drei m glichen Darstellungsformen von Transitionen einfache symme trische und selbstbezogene Kanten 2 2 2 2 Cm nn nennen 204 Ein im Property Panel eingeblendeter Dialog zur Bearbeitung der Symbol Ranges an Transitionen u 20 SE EE a Dre eg 204
266. ne Senke Der Fall ist analog zu Fall 4 Es wird der Knoten va vb erzeugt und mit x markiert Sein 0 Nachfolger wird Vao Up und sein 1 Nachfolger wird v vp 6 Fall va und vw sind Senken Es wird die Senke va vp erzeugt Die Markierung der neuen Senke ergibt sich aus der Markierung von va und v verkn pft mit Das entstandene OBDD Gag ist nach dieser Berechnung in der Regel nicht minimal bzgl der Variablenordnung Der Algorithmus von Bryant 1986 vermeidet die Erzeugung von berfl ssigen Zust nden und berechnet das reduzierte OBDD Gage sofern die OBDDs Ga und Gs reduziert sind Die Rechenzeit f r die Syntheseoperation ist O Ga G In der Automatenbibliothek ist die Synthese Operation durch die Klasse aaa automaton operation obdd Synthesizer realisiert Einem Synthesizer Objekt werden mit der Methode Synthesizer setup OBDD obdd1 OBDD obdd2 Byte operation die beiden OBDDs und die entsprechende Operation als Byte bergeben F r die g ngigen Operationen stehen in der Klasse OBDD entsprechende Konstanten zur Verf gung f r die AND Operation w re der Byte Wert beispielsweise 80 10002 f r OR w re er 1410 11102 gem den Funktionstabellen der AND und OR Funktion 3 2 4 3 Vereinigung und Schnitt via Synthese Das logische quivalent der Vereinigung bzw des Schnitts ist das OR bzw AND Somit wird die Vereinigung der beiden OBDDs obdd1 und obdd2 durch die Synthese beider realisiert Der Aufruf ob
267. nem Krip kemodell 3 6 5 OBDDs OBBDs wurden im zweiten Semester als Hilfsmittel f r das Model Checking mit LTL Formeln eingef hrt Da die Klasse OBDD von Automaton erbt war es fast ohne nderungen m glich OBDDs im Editor anzuzeigen Nat rlich entsprach die Darstellung in ihrer Form der von Automaten und entsprach nicht den gewohnten OBDD Konventionen Es musste also ein weiteres Package f r den Editor erstellt werden um eine Darstellung zu erreichen wie sie zum Beispiel in Abbildung 3 12 zu sehen ist 3 6 5 1 Implementation Wie bei den Kripkemodellen so war es auch bei den OBDDs m glich die neuen Klassen als Ableitungen von bereits bestehenden Klassen zu modellieren Abbildung 3 47 zeigt die neuen Klassen 3 6 5 1 1 Die Klasse Paintable0BDDSink W hrend die inneren Knoten eines OBDDs in ihrer Form mit der normalen Darstellung von Automaten Zust nden bereinstimmen Kreise werden OBDD Senken blicherweise als Rechtecke dargestellt Die Klasse PaintableOBDDSink erweitert daher PaintableState so dass die Kreisform 212 KAPITEL 3 GRUPPENERGEBNISSE PaintableOBDDT ransition PaintableOBDDSink OBDDStateLabel void setPositive boolean positive PaintableOBDDSink boolean getPositived Point pointOnBorder double angle void paint Graphics2D g PaintableTransition PaintableState StateLabel Abbildung 3 47 Klassendiagramm des Paintable OBDDs Packages durch ein Rechteck abgel st wird F
268. nen Menge ist die Disjunktion von Konjunktio nen jeweils zweier Vergleichsfunktionen x gt Intervallanfang A x lt Intervallenende Bei einer geeigneten Variablenordnung ist diese Funktion durch ein OBDD darstellbar das h chstens um einen linearen Faktor bzgl der Anzahl der Bits gr er ist als die Anzahl der Intervalle 3 2 3 2 Trigger Die bereits vorhandenen Realisierungen von Alphabeten und Symbolen k nnen weit gehend unver ndert aus der ersten Projektphase bernommen werden F r Klassen die Symbolmengen darstellen wurde das Interface Trigger eingef hrt das alle bei der Realisierung von Automatenoperationen ben tigten Manipulationen von Symbolmengen erm glicht Die Klassen OBDD und SymbolRangeList repr sentiert eine Menge von Symbolintervallen also SymbolRanges implementieren dieses Interface Die Signatur enth lt die oben ge nannten Mengenoperationen join cut complementWithRespectTo Au erdem soll eine Trigger Implementierung pr fen k nnen ob ein bestimmtes Symbol in der dar gestellten Symbolmenge enthalten ist covers es soll auch ein beliebiges enthaltenes Zeichen geliefert werden k nnen getCoveredSymbol Eine weitere wichtige Methode ist isFireable mit der entschieden werden kann ob eine Symbolmenge nicht leer ist also eine damit markierte Transition gefeuert werden kann 3 2 3 2 1 TriggerFactory Manchmal kommt es vor dass Standard Trigger z B leere Symbolmenge vollst
269. nen von S e Epsilon Abschluss von S 5 null oder ein S Beispiel a b x abb 3 7 9 3 2 Transformation Eine Tranformation wird gestartet indem man auf die Schaltfl che Create Automaton dr ckt Bei erfolgreicher Transformation erscheint ein neues Tab im Fenster mit der berschrift Automaton 3 7 9 3 3 Operationen und Analysen Alle Funktionen verlaufen analog zum Finite Automaton Plugin 3 7 10 LTL Plugin Dieses Plugin setzt auf dem Plugin der B chiautomaten auf und erzeugt einen solchen anhand einer eingegebenen LTL Formel Linear Temporal Logic 3 7 10 1 Eingabe Als Eingabe werden beliebige LTL Formeln der akzeptiert 3 7 10 1 1 Klammerung Formeln und Teilformeln d rfen beliebig oft geklam mert werden obwohl keine explizite Klammerung erzwungen wird Von Klamme rungsm glichkeiten sollte aber gro z gig Gebrauch gemacht werden da es zwischen den bin ren Operatoren keine Operatorpr zedenzen gibt Jedoch binden un re Operatoren grunds tzlich st rker als bin re Unter bin ren Operatoren gilt eine implizite Rechts klammerung 3 7 10 1 2 Leerzeichen Zwischen bin ren Operatoren und den Operanden muss je weils ein Leerzeichen stehen wenn die Operanden keine u ere Klammer besitzen An sonsten sind Leerzeichen optional Es d rfen beliebig viele optionale Leerzeichen zwischen Operatoren Operanden und Klammern eingef gt werden 3 7 10 1 3 Atomare Propositionen Jede atomare Proposition is
270. ng der Homomorphismen f r W rter einstellige Terme Beim Wortproblem ist bekannt dass die regul ren Mengen unter Homomorphismen und inversen Homomorphismen abgeschlossen sind beim Baum problem ist das anders Falls erkennbare Baumsprachen unter inversen Homomorphismen abgeschlossen sind sind sie nur unter einer Subklasse von Homomorphismen abgeschlos sen Definition Seien F und F zwei Mengen von Funktionssymbolen F r jedes n gt 0 so dass F ein Symbol der Stelligkeit n enth lt definieren wir eine Menge von Variablen xn 21 Zn disjunkt von F und F Sei hr eine Abbildung die mit f F von Stelligkeit 20 KAPITEL 2 SEMINARPHASE n einen Term ts T F Xn verbindet Der Baumhomomorphismus A T F T F bestimmt durch hp ist folgenderma en definiert e h a t T F gilt f r jedes a Fo e h f tz tn ts a1 tr Zn h tr wobei ts x h t1 Tn h t das Resultat der Anwendung der Substitution ay hlt 2n hit auf den Term ts ist Beispiel Sei F or 0 1 und F or 0 1 Wir betrachten den Baumhomomor phismus h bestimmt durch hs und definiert durch hy or x1 x2 13 or x1 or 23 23 hy 0 0 und hf 1 1 Wir k nnen also einen Tern rbaum in einen Bin rbaum um Wenn t O or D dann ist h t o or Bei der Anwendung von Baumhomomorphismen wird die Erkennbarkeit nicht immer er halten wandeln
271. ng in einem Konverter welcher While Programme in Kripkemodelle und diese schlie lich in B chiautomaten umwandelt F r die GUI wurde ebenfalls der Kern restrukturiert denn wie bei der Automatenbi bliothek wurden auch hier einige Verallgemeinerungen vorgenommen Diese zeigten dann auch gleich ihre gute Seite als es daran ging die neu entwickelten Datenstrukturen zu visualisieren Das graphische Framework konnte praktisch nur durch Erweiterungen und ohne Ver nderung des Bestehenden auf die neuen darzustellenden Strukturen wie OBBDs und Kripkemodelle erweitert werden Der Workspace und der graphische Editor verschmolzen zu einem Gesamtprodukt das durch zahlreiche Verbesserungen den im ersten Semester gew nschten und den im zweiten Semester neu notwendig gewordenen Anforderungen gr tenteils gerecht wurde Das LTL Model Checking arbeitete am Ende mit allen Komponenten wie schon im ers ten Semester die Presburger Arithmetik problemlos zusammen Alle Ergebnisse flossen zusammen und konnten mit Hilfe des Workspace genutzt werden 238 KAPITEL 4 EPILOG 4 3 Ausblick Das Konzept des Projektes war es einen flexiblen universell einsetzbaren aber auch erweiterbaren Baukasten f r Automaten zu schaffen auf dessen Grundlage Analysekon zepte umgesetzt werden k nnen Mit dem Abschluss dieser Projektgruppe liegt nun dieser Baukasten vor Die Welt der automatischen Analyse mit Automaten ist aber noch nicht ausgesch pft und bietet genu
272. ngsbewirkendes Zeichen angegeben die Transition ist zun chst einmal eine leere Transition ihr trigger Attribut ist null 3 2 AUTOMATEN 109 e Transition State from Trigger trigger State to hier wird der Transiti on ein Trigger Objekt mit bergeben welches die Menge der Symbole repr sentiert die die Transition feuern e Mit Automaton addTransition Transition newTransition kann man einem Automaten eine Transition hinzuf gen e Analog zum zweiten Transitionskonstruktor f gt Automaton addTransition State from Trigger trigger State to dem Automaten die entsprechende Transition hinzu e Die Methode Automaton addTransition State from State to Symbol symbol f gt dem Automaten eine Transition welche durch ein einzelnes Symbol getriggert wird hinzu e Die Methode Automaton addTransition String symbol State from State to generiert aus dem String ein neues Symbol und f gt die entsprechende Transi tion dem Automaten hinzu Folgende Methoden stehen in der Klasse Transition zur Verf gung e getTrigger liefert das Trigger Objekt der Transition zur ck das die Men ge von Zeichen repr sentiert die die Transition ausl sen k nnen Durch Aufruf der Methode Trigger covers Symbol kann berpr ft werden ob ein bestimm tes Zeichen die Transition ausl sen kann Die Methode Trigger getCovered Symbol liefert irgend ein Symbol das die Transition schaltet Mit der Methode Trigger isFireable kann berpr
273. niteAutomaton vollst ndig realisiert Als weiteres Modell sollte nun der B chiautomat realisiert werden Da der B chiautomat noch immer ein sehr verwandtes Modell ist ist die Implementierung nicht aufw ndig Durch das Ableiten von Automaton stehen sofort die grundlegenden Automatenfunktionalit ten zur Verf gung Jedoch geht das Modell etwas weiter und Operationen m ssen anders implementiert werden und als eine Erweiterung wird noch das Modell der generalisierten B chiautomaten bedacht Der Kern bleibt aber gleich Dass B chiautomaten als Automatenmodell gew hlt wurden geschah mit der Absicht mit diesen Automaten Model Checking zu betreiben und zwar Model Checking mit LTL Formeln Es war daher auch n tig Kripkestrukturen zur Verf gung zu haben um dar auf als elementare Struktur operieren zu k nnen Eine Kripkestruktur kann als einge schr nkter Automat aufgefasst werden und somit liegt es nahe dass auch diese Daten struktur auf Automaton fu en kann Insgesamt wurde also auf dem Ger st des offenen Automatenbaukastens der vorhan den war neben der Referenzimplementierung eines endlichen Automaten mit s mtlichen Funktionen ein weiteres Automatenmodell hinzugef gt Zus tzlich wurden zwei weitere Modelle auf einen Nenner gebracht da man diese auf ein Automatenmodell reduzieren und ebenfalls mithilfe dieses Baukastens erstellen kann Dies hat mehrere angenehme Neben effekte mit sich gezogen So kann beispielsweise das GUI Fro
274. nnerhalb des Workspaces sowohl zur Anzeige als auch zur Bearbeitung von Automaten Es stehen zahlreiche Funktionen zur Verf gung die im Fol genden beschrieben werden 3 7 8 1 Die Toolbar ber die in Abbildung 3 53 dargestellte Toolbar lassen sich einige Funktionen welche die Darstellung von Automaten betreffen beeinflussen Die in der Abbildung dargestellten 3 7 HANDBUCH 223 rand Frucht Reing 1 step Frucht Reing circular placement Preferred Size Layouter THE OBDD layouter Paritioned Layouter Abbildung 3 53 Die Editor Toolbar sieben Schaltfl chen haben folgende Funktionen Bild speichern Mit dieser Funktion kann ein Bild des dargestellten Automaten im Dateisystem abgelegt werden Das Bildformat ist png Vergr ern Ein Druck auf diese Schaltfl che vergr ert proportional die Abst nde zwi schen allen Zust nden so dass der Automat gr er erscheint Verkleinern Bewirkt das Gegenteil der vorherigen Schaltfl che und zoomt durch Ver kleinerung der Abst nde zwischen den Zust nden aus der Automatendarstellung heraus Transitionsbeschriftungen ein ausblenden Aktiviert oder deaktiviert die Darstel lung von Labels an Transitionen Dies kann insbesondere bei mit OBDDs gelabel ten Transitionen sinnvoll sein da deren Darstellung blicherweise wesentlich l nger als die Transition selbst ist Auch bei ausgeblendeten Beschriftungen lassen sich Informationen ber Transition
275. nten erwies sich dieses Vorgehen bei kleinen Graphen als sinnvoll Bei Graphen mit vielen Knoten und Kanten f hrte die oben genannte Wahl des k zu 3 6 EDITOR 215 einer Verklumpung des resultierenden Graphen ohne dabei die bereitgestellte Fl che aus zuf llen Dies ist auf das bei vielen Knoten kleine k und die durch die vielen Kanten starken Anziehungskr fte zur ckzuf hren Eine sinnvolle L sungsoption war es das k einfach konstant zu w hlen 3 6 6 3 2 Algorithmus Der Algorithmus des Layouters wird hier kurz als stark verk rzter Java Pseudo Code vorgestellt Die Methoden calculateRepulsion und calculateAttraction aktualisieren jeweils einen f r jeden Knoten existierenden Kraft Vektor welcher in der Methode moveVertex dann zu einer Positions nderung des Knotens f hrt for int i 0 i lt maxIterations i for i Vertex v vertices 4 for Vertex u vertices i y l ar er calculateRepulsion u v for Edge e edges calculateAttraction e for Vertex v vertices moveVertex v Die Bewegung der Knoten in moveVertex wird dem Simulated Annealing Schema fol gend durch eine Temperatur begrenzt Durch eine Begrenzung der Temperatur wird die Maximalbewegung der Knoten pro Iteration eingeschr nkt mit dem Ziel dass Mini ma im Kr fteverh ltnis nicht einfach bersprungen werden Um gleichzeitig nicht der Gefahr ausgeliefert zu sein in schlechten lokalen Minima festh ngen zu
276. ntend der AAA Workspace von diesem gemeinsamen Modell profitieren da die gemeinsame Darstellung dazu f hrt dass man nur Typen von Automaten auswechseln muss und sich Funktionen bertragen Dies erg nzt sich gut zu dem pluginorientierten Konzept des GUI Frontends Abschlie end l sst sich sagen dass sich die Nutzung des endlichen Automaten FiniteAutomaton nur wenig ge ndert hat Es hat sich sogar herausgestellt dass sich die Bedienung durch neu eingef hrte Konstrukte vereinfachen lie Somit stellt die AAA Automatenbibliothek nicht nur eine sehr umfangreiche und leistungsf hige Klassenbiblio thek dar sondern kann dar ber hinaus auch intuitiv und leicht benutzt werden wenn man davon absieht dass eine riesige F lle an Klassen und Methoden zur Verf gung steht In den folgenden Abschnitten werden die im zweiten Semester vorgenommenen Umstruk turierungen der Automatenbibliothek und die Realisierung der neu hinzugekommenen Automatenmodelle B chiautomaten OBDDs und Kripkestrukuren beschrieben SKripkestrukturen sind streng genommen keine Automaten 128 KAPITEL 3 GRUPPENERGEBNISSE 3 2 3 1 Uberholung des Transitions und Alphabetkonzept Nach der ersten Projektphase standen Automaten zur Verf gung die regul re Spra chen ber beliebigen Alphabeten darstellen k nnen Diese Sprachen k nnen nicht nur aus W rtern von Bits oder druckbaren Unicode Zeichen bestehen sondern auch aus W rtern von Bitvektoren wie es berei
277. nth lt Y alle X und damit ist prep C C Y gezeigt Insgesamt folgt pre C Yp Die Definition von Y basiert auf einer Folge A gt o von Automaten deren Glieder sich nur in der Transitionsmenge unterscheiden Es seien do 6 und ee fs Sit q p y e p w und sk gt i a f r alle i gt 0 Es seien nun A T Q 6 1 F und Y Conf A f r alle i gt 0 34 KAPITEL 2 SEMINARPHASE Abbildung 2 6 Funktionsweise der Y Konstruktion Abbildung 2 7 Beispiel fiir die Y Konstruktion Es gilt Y C Yi f r alle i gt 0 Wegen 6 lt Q T ist P1 erf llt Jede im Laufe des Verfahrens hinzugef gte Transition startet an einem initialen Zustand Abbildung 2 6 soll die Funktionsweise der Konstruktion veranschaulichen In Abbildung 2 6 visualisieren mit Ausnahme des Pfeils von s nach q alle abgebildeten Komponenten Bestandteile des Automaten A f r ein 2 Das zugeh rige PDS enthalte die Regel pi y p w Es ist p ww e Conf A denn es gibt einen ww Lauf von s nach q F F r das PDS ist die Konfiguration p yw ein direkter Vorg nger von p ww Jedoch ist pl yw Conf A weil in s f r kein v I ein yv Lauf beginnt der in die Menge F f hrt Per Definition enth lt A auch die durch den von s nach q verlaufenden Pfeil ausgedr ckte Transition Aus diesem Grund gibt es in A 1 einen yw Lauf von s nach q und es ist p yw Conf A
278. nvertierung ist sinnvoll 3 1 2 Transformation von Formeln der Presburger Arithmetik in endliche Automaten Im ersten Semester bestand die Aufgabe der bersetzergruppe darin das im Abschnitt 2 3 1 beschriebene Verfahren aufbauend auf unserer Automatenbibliothek und unse rem Parser zu implementieren Es musste also m glich sein einen durch den Parser f r eine Presburger Formel generierten Ausdrucksbaum entgegenzunehmen und einen FiniteAutomaton zu konstruieren der die L sungsmenge erf llende Belegungen der frei 3 1 TRANSFORMATION 79 en Variablen der Formel repr sentiert Im zweiten Semester sind nur noch Anpassungen an die weiterentwickelte Automatenbibliothek Korrekturen und kleinere Verbesserungen durchgef hrt worden W hrend sich die im besagten Abschnitt und in der dort benutzten Quelle ausgebreitete Theorie vorwiegend auf die Konstruktion von Automaten f r Atome konzentriert mussten bei der Implementierung weitere Details ausgearbeitet werden Beispiele hierf r sind die Normalisierung von Formeln und Atomen und der Umgang mit unerw nschten Formeln Die Konstruktion von Automaten f r Boolesche Verkn pfungen weicht aus Gr nden einer einfacheren Implementierung deutlich von der theoretischen Vorlage ab Insgesamt ist eine einfach einzubindende Implementierung entstanden die ber eine klei ne Schnittstelle verf gt Da Berechnungen einige Zeit in Anspruch nehmen k nnen bie tet die Schnittstelle ein Listener
279. nz zusammen Nichtsdestotrotz kann ABC beliebige Graphen verwalten An dieser Stelle haben wir uns dann f r eine Java Eigenimplementation entschieden um unsere vorhandenen Kenntnisse in Java Swing und AWT ausnutzen zu k nnen Durch die gesparte Einarbeitungszeit war eine schnelle Umsetzung der wichtigsten Funktionen m glich 3 4 1 2 Graphenbibliothek Einen Automaten als Graphen sch n zu layouten ist schon manuell eine relativ schwere Aufgabe Ein solches Layout automatisch berechnen zu lassen k nnte den Umfang unserer PG bersteigen Aus diesem Grund haben wir uns zu Beginn der PG mit bereits beste henden freien Graphlayout Bibliotheken aueinandergesetzt Drei Bibliotheken haben da 3 4 DER WORKSPACE STAND FEBRUAR 2006 165 bei unser Interesse geweckt Dieses waren das Package org eclipse draw2d graph das JUNG Java Universal Network Graph Framework und Grappa Mit diesen Paketen haben wir experimentiert um sie auf ihre Tauglichkeit hin zu berpr fen Das Package org eclipse draw2d graph ist Bestandteil von Draw2D welches wieder um ein Teil des Graphical Fditing Frameworks von Eclipse ist Der Algorithmus platziert Knoten und verlegt Kanten m glichst kreuzungsfrei Dabei lassen sich einige Einstellungen bez glich der Wichtigkeit von Kanten und Knoten vorgeben Nach einigen Testimplemen tationen ist uns aufgefallen das in dieser Bibliothek keine reflexiven Kanten unterst tzt werden Knot
280. nzu Dieser ist im Tag lt action gt deklariert und verweist mit dem class Attribut auf die Java Klasse helloWorld actions HelloWorldAction welche somit den implementatorischen Teil dieses Plug ins enth lt public class HelloWorldAction implements IWorkbenchWindowActionDelegate private IWorkbenchWindow window public void dispose empty public void init IWorkbenchWindow window this window window public void run IAction action MessageDialog openInformation window getShell Hello World plug in Hello World 2 5 WERKZEUGE 71 public void selectionChanged IAction action ISelection selection empty Das class Attribut einer Action erwartet eine Klasse welche das Interface org eclipse ui IworkbenchWindowActionDelegate implementiert Dessen wichtigste zu implementierende Methode ist public void run IAction welche beim Aufruf der Ak tion also hier durch Ausw hlen des neu erzeugten Men Eintrages gestartet wird 2 5 2 3 SWT JFace SWT das Standard Widget Toolkit ist ein mit Suns AWT und Swing vergleichbares Framework zur Entwicklung von graphischen Oberfl chen in Java Unter Widgets versteht man Steuerelemente wie Buttons Listen Textfelder usw Im Gegensatz zu AWT und Swing benutzt SWT native also betriebssystemabh ngige Widgets was die Anwendung von SWT f r den Programmierer etwas umst ndlicher in Bezug auf Betriebssystemressourcen und deren Benutzung u
281. o im Allgemeinen bei Variablen und Literalen darf gefahrlos auf die Repr sentation zugegriffen werden 3 3 1 1 1 Kompatibilit tsinterface lterer Code oder Parser die schnell auf die Verwendung von Tokens umgestellt werden sollen k nnen die Methode Token getMinToken String i verwenden Diese Methode liefert ein Token vom Typ Token lt Token NullType Token NullType gt mit Repr sentation i zur ck Der Super Typ NullType ist semantiklos 3 3 1 1 2 InputStream aaa parser util InputStream ist eine allgemeine Mana gementklasse zur Behandlung von Zeichenstrings im Kontext einen Parsers Die allgemei nen Bed rfnisse die diese Klasse abdeckt sind sowohl das Halten des Eingabestrings als auch das Verwalten der Position in der Eingabe und Bereitstellung von Methoden zum Zeichenkettenvergleich Die gebr uchliche Initialisierung erfolgt ber den Konstruktor public InputStream String i wobei i die Eingabe repr sentiert Ein sp teres Zur cksetzen geschieht ber void reset Ein Eingabestring kann dann nachtr glich ber void setInput String i gesetzt werden 3 3 PARSER 149 Weitere gebr uchliche Methoden 3 3 1 1 3 void advancePointer Setzt den internen Zeiger um eine Stelle nach vor ne 3 3 1 1 4 void skipSpaces throws StringIndexOutOfBoundsException Setzt den internen Zeiger so weit nach vorne bis das n chste Zeichen im Eingabestring kein Leerzeichen ist Sollte der Zeiger ber das Ende der Eingabe h
282. och aus einem Mitglied bestehen de Parser Team wurde etwa nach der ersten H lfte aufgel st und das Transformations Team auf 2 Mitglieder aufgestockt Das Automaten Team blieb unver ndert wurde jedoch durch zwei weitere Mitglieder unterst tzt die sich der Realisierung der Operationen auf B chiautomaten widmeten KAPITEL 1 ALLGEMEINES Kapitel 2 Seminarphase Wie in jeder Projektgruppe blich fand zu Anfang eine Seminarphase statt In der Se minarphase erh lt jeder Teilnehmer ein Thema wor ber er einen Vortrag h lt Die Semi narphase dient dazu das Themenfeld der Projektgruppe genauer kennen zu lernen und alle Teilnehmer auf einen gemeinsamen Wissensstand zu bringen Das Thema der Projektgruppe umfasste zum Teil Gebiete welche nicht als selbst verst ndlich vorausgesetzt werden konnten Auch diente in unserem Fall die Seminarphase dazu einen berblick ber den Markt also die Vielzahl von Analysemethoden und Pro grammen zu erhalten Die Vortr ge Erf llbarkeitspr fung von Formeln der Presburger Logik mit Hilfe endlicher deterministischer Automaten Erreichbarkeitsanalyse f r Pushdown Systeme Erreichbarkeitsanalyse paralleler Prozesse mit Baumautomaten und Model Checking mit Automaten befassten sich mit Analysemethoden mittels verschiedener Automatenmodelle Die Projektgruppe hat sich dann dazu entschieden zwei solcher Analysemethoden n mlich zun chst die Erf llbarkeit von Formeln
283. on ben tigte Rechenzeit So k nnen auch noch Eingaben bew ltigt werden f r die sonst wegen Speicherplatzmangels kein Leerheitstest mehr durchgef hrt werden kann 3 2 5 6 Beispiele Nun folgen Beispiele f r die oben beschriebenen Operationen 3 2 AUTOMATEN Erzeugt Symbole x TriggerFactory tf new SymbolRangeFactory CharacterAlphabet ca CharacterAlphabet getInstance Trigger a tf createSingleSymbolTrigger ca createSymbol a Trigger b tf createSingleSymbolTrigger ca createSymbol b 141 Trigger c tf createSingleSymbolTrigger ca createSymbol c Tripper abc a join b join c Trigger bc b join c Trigger ab a join b Konstruiert Automat A BuchiAutomaton baA new BuchiAutomaton SymbolRangeList class State all nen State Ai State a2 new State A2 al setInitial true a2 setAccepting true baA addState al baA addState a2 al abe al aly ay 22 aa a a2 il a2 bc a baA addTransition baA addTransition baA addTransition Br En Fa on baA addTransition Konstruiert Automat B Galle BuchiAutomaton baB BuchiAutomaton baA createFromTemplate State bl new State BIU State b2 new State B2 state DSB new state UBS bi setInitial true b3 setAccepting true baB addState b1 baB addState b2 baB addState b3 baB addTransition b1 abc b1 baB addTransition b1 b b2
284. ondern verwendeten als Alphabet beispielsweise den Unicode Zeichensatz Automatenbasierte Analyseverfahren setzen jedoch die verschiedenartigsten Alphabete voraus darunter Bitvektoralphabete Einige Bibliotheken hatten einen eher geringen Funktionsumfang oder aber die Schwer punkte entsprachen nicht unseren Interessen Aus den genannten Gr nden wurde der Beschluss gefasst eine komplett eigene Automa tenbibliothek zu implementieren die vollst ndig an unseren Anforderungen ausgerichtet ist Damit entf llt auch die Problematik fremder Lizenzen Mehrere Analyseverfahren soll ten aufbauend auf unserer Bibliothek realisiert werden ebenso die grafische Oberfl che Die Benutzerschnittstelle sollte generisch sein indem sie ein Framework mit Basisklassen und Standardkomponenten zur Verf gung stellt Da die in die engere Auswahl aufgenom menen Analyseverfahren auch Formeln als Eingaben erwarteten mussten auch geeignete Parser f r die entsprechenden Logiken entwickelt werden 1 2 BERSICHT 3 1 2 bersicht Die Projektgruppe begann ihre Arbeit mit einer Seminarphase um sich die f r die Ver wirklichung der Ziele erforderlichen theoretischen Hintergr nde und praktischen Kennt nisse anzueignen Es wurden einerseits einige Automatenmodelle und automatenbasierte Analysemethoden vorgestellt andererseits z hlten auch konkrete Werkzeuge und Auto matenbibliotheken zu den Themen Insgesamt wurde mehr Material behandelt als f r die eigen
285. onnection tool can be used to connect the various circuit parts ircu PAHE ircuit Epo Flow Container a container Problems Javadoc Declaration PES F a a circuit representing a full adder uses two half adders Abbildung 2 11 Beispiel eines mit GEF realisierten Editors 2 5 2 4 Das Graphical Editing Framework GEF Das Graphical Editing Framework ist ein Eclipse Projekt welches die Entwicklung von graphischen Editoren f r beliebige Anwendungsmodelle vereinfachen soll Das GEF be steht aus zwei Teilkomponenten Zum einem ist das Draw2D eine auf SWT aufsetzende Bibliothek zum Zeichnen und Layouten von eigenen Komponenten und zum anderen das eigentliche GEF selbst welches die Views von Eclipse um einen graphischen Editor erwei tert und wesentliche Funktionen f r graphisches Bearbeiten von Modellen zur Verf gung stellt GEF unterst tzt dabei unter anderem folgende Funktionen Erzeugen L schen Verschieben Verbinden Ver ndern von Objekten Werkzeug amp Komponenten Paletten Drag amp Drop Undo berblicks Ansichten und Zoom Lineale Gitternetz automatische Verbindungen 2 5 WERKZEUGE 73 Wie bei den Views verwendet auch das GEF das MVC Modell trennt also das Mo dell weitgehend von der View ber Policies und Commands wird das Verhalten von GEF Anwendungen gesteuert Hier wird ein umfangreiches Netzwerk von Actions und Listenern eingesetzt We
286. oten des Ausdrucksbaums Der Knoten wird danach auf den Operandenstack gelegt Der Parser verwendet jeweils PushOperator um einen erkannten Operator zu verarbeiten Operanden werden einfach auf den Operandenstack gebracht 156 KAPITEL 3 GRUPPENERGEBNISSE PRG gt Decl VARDECL IGLUE VARDECL endDecl IGLUE S VARDECL ARS IN S gt METHOD IGLUE METHOD GLUE INIT METHOD gt Proc VAR PARALIST MBODY endProc PARALIST Ag ESE MBODY CRUE INIT Sint BODY da gt I gt ASS IF WHILE SKIP SPAWN ATOMIC CALL BLOCK NBLOCKQW NBLOCKQR ATOMIC atomic MBODY CALL gt call VAR PARALIST SPAWN spawn VAR PARALIST BLOCK block wait until BOOL SKIP Slaps ASS gt VAR ARITH NBLOCKQW gt VAR lt ARITH NBLOCKQR VAR gt VAR IF Site BOO 2NBoma 4 BODY WHILE me 2000 NBomEe ARITH gt P1 ARITH BINOP P1 P1 AR NO AE BIN O a BOOL gt P2 LOG_BINOP P2 P2 gt BOOL ARTIH BOOL_BINOP ARITH LOG BINOp eee BOOLBINOP gt lt gt p lt let SHADOWS IGLUE INT positive und negative ganze Zahlen VAR alle Kombinationen aus Zahlen kleinen Buchstaben und nicht reservierten Zeichen IGLUE spezielle Ableitung ohne Zeichenrepr sentation Abbildung 3 19 While PEG 3 3 PARSER 157 3 3 4 Parser f r regul re und w regu
287. othek und eine grafische Unterst tzung dieser beiden Komponenten Diese Teile lassen sich ebenfalls aufteilen Transformationen e Presburger Arithmetik e LTL Model Checking e While Sprache Automatenbibliothek modular aufgebaut durch Vererbung und ausgelagerte Operationen e der abstrakte Kern e endliche Automaten e Biichi Automaten e OBDDs e Kripkestrukturen Grafische Unterst tzung modular aufgebaut durch Plugins 75 76 KAPITEL 3 GRUPPENERGEBNISSE Viewer f r Automaten Editor f r Automaten e Verschiedene Ein und Ausgaben f r Analysen Workspace als Zusammenfassung der Komponenten Ferner muss man noch eine vierte Komponente ber cksichtigen Eine Hilfskomponente in Form eines Parsers Dieser ist notwendig um f r Analyseverfahren geeignete Eingaben zu gewinnen Es war n tig Folgendes mit einem Parser einlesen zu k nnen e Presburger Formeln e temporallogische Formeln e omega regul re Ausdr cke Bei den Komponenten besteht eine gewisse Abh ngigkeit Analysen nutzen Parser und Automaten die grafische Oberfl che stellt Analysen mit und auf Automaten bereit und ist somit auch zum Testen n tzlich Insgesamt lassen sich diese Abh ngigkeiten der Komponenten strenger als Pipeline auf fassen Parser Transformation Automaten Die Zusammenarbeit dieser Komponenten ergibt das endg ltige Produkt 3 1 TRANSFORMATION 77 3 1 Transformation In diesem Kapitel wird der Code f r alle
288. out Informationen Bedeutung hat Die Form eines Zustandes ist hier rechteckig und nicht mehr rund wie bei der Basisklasse PaintableState Daher musste auch die Methode Point pointOnBorder double angle welche f r die korrekte Positionierung von Transitions Anfang Ende notwendig ist erweitert werden Die umfangreichsten nderungen betra fen die Maus Interaktion zur Gr enver nderung PaintableKripkeState eignet sich als Ausgangsklasse f r m gliche zuk nftige Editor Komponenten welche nicht nur in ihrer Position sondern auch in ihrer Gr e bearbeitet werden sollen 3 6 4 1 4 KripkeStateLabel Zur Darstellung von f r einen Zustand aktiven Proposi tionen wurde die Klasse StateLabel passend erweitert Das KripkeStateLabel verwendet 3 6 EDITOR 211 direkt die Assignment Objekte wie sie auch im Automaton Package verwendet werden 3 6 4 1 5 KripkeStateEditPanel Um die Zustands Propositionen bearbeiten zu k nnen wurde das KripkeStateEditPanel entwickelt Dieses wird im Triple A Workspace verwendet indem es bei Selektion eines Kripkezustandes im Property Panel des Workspaces angezeigt wird Abbildung 3 46 zeigt ein solches Panel im Einsatz per Check box k nnen vom Benutzer die Propositionen eines Zustandes aktiviert und deaktiviert werden Propertie state Proposition propa propB prop propD E 5 DADE Abbildung 3 46 Bearbeitung der aktiven Propositionen bei einem Zustand in ei
289. pekte gepr ft Erstens werden Formeln wie 3x1 3 x x1 x3 A Vz1 x1 2 x x2 x3 in denen Quantoren mit identischer Variable ineinander geschachtelt sind als inkorrekt angesehen Zweitens werden auch Formeln wie x1 12 lt 7 V 3x2 x1 22 23 in denen ein und dieselbe Variable sowohl frei als auch gebunden vorkommt als nicht korrekt erachtet Beide F lle k nnten analog zur Variablen berdeckung in einigen Pro 82 KAPITEL 3 GRUPPENERGEBNISSE grammiersprachen sinnvoll interpretiert und durch Variablenumbenennungen aufgel st werden Dies tut das Programm aber nicht weil der Programmierer beide F lle als sehr ungew hnlich ansieht und darin eher ein Versehen des Anwenders vermutet Algorithmisch wird die Korrektheitspr fung mit einem rekursiven Durchlauf des Syntaxbaums gel st Dabei werden als Parameter der aktuelle Knoten eine HashMap der bisher gefundenen frei auftretenden Variablen eine HashMap der bisher gefundenen Quantor gebundenen Variablen und eine HashMap der auf dem Pfad von der Wurzel zum aktuellen Knoten lie genden Quantor gebundenen Variablen verwendet HashSets von Variablen gen gen dem Algorithmus doch die HashMaps bilden Variablen auf Knoten ab so dass in den Excep tions auch Positionsangaben untergebracht werden k nnen Die Parameter erlauben die Erkennung s mtlicher Fehlerf lle Erreicht man beispielsweise einen Quantorknoten des sen Variable bereits auf dem aktuellen Pfad gebunde
290. peratoren identifiziert die den Ausdrucksbaum vor allem in die Breite expandieren lie en Bei genauerer Analyse des Zeichenerkennungsproblems wurde festgestellt dass aufgrund der h ufigen Backtracks die langen Variablennamen und Literalausdr cke die vor allem bei automatischen Tests entstanden immer und immer wieder neu analysiert wurden Als Abhilfe wurden sukzes sive Mechanismen eingef hrt um diese Missst nde zu beheben 1 Ein Caching System wurde eingef hrt Aufgrund des Umstandes dass an einer Posi tion in der Eingabe f r jedes Nichtterminal nur eine richtige Ableitungsm glichkeit exis tiert gegeben dass die Grammatik eindeutig ist kann ein positives oder ein negatives Ergebnis respektive im positivem Fall der dort abgeleitete Ausdrucksbaum zwischenge speichert werden Im Falle von Variablen bzw Literalen kann im positivem Ergebnisfall der jeweils andere Fall ausgeschlossen werden also dessen Cache negativ belegt werden Im Falle der Nichtterminale gilt dies nicht da dieselbe Eingabeposition unter Umst nden noch von einem anderen Nichtterminal erreichbar ist und dort eine mindestens einschrit tige richtige Ableitung machen k nnte Bekannt ist dieses Verfahren unter dem Namen Packrat siehe 2 An oberster Stelle der Grammatik wurde ein Lookahead System eingef hrt Anhand des Zeichens in der Eingabe kann die darauf folgende Ableitung in drei Klassen unterteilt und die richtige Klasse ausgew hlt werden Diese
291. prozess auf vier Gruppen zu verteilen e Programmierer sind zust ndig f r die Implementierung der BBs und f r die Lauf zeitumgebung in der die kompilierte Applikation ausgef hrt wird Kin Kripkemodell ber einer Menge AP atomarer Propositionen ist ein Quadrupel T S Act gt I wobei S eine Zustandsmenge ist Act eine Menge von actions gt C S x Act x S eine Zu standsiibergangsrelation und I S PB AP eine Interpretation 2 5 WERKZEUGE 65 e Constraints Modellierer haben die Aufgabe Anforderungen an die Applikation als temporallogische constraints zu formulieren e Anwendungsexperten bauen SIBs zu vollst ndigen Applikationen zusammen e Endbenutzer k nnen ohne dass Expertenwissen notwendig ist die Applikation modifizieren wobei selbstverst ndlich nur mit den vorhandenen constraints zu ver einbarende nderungen erlaubt sind 2 5 1 2 Agent Building Center Das Agent Building Center kurz ABC ist ein Nachfolger des Metaframe Systems ABC besteht aus einer in Tcl Tk entwickelten Benutzeroberfl che mit der aus SIBs bestehende Graphen erstellt bearbeitet und berpr ft werden k nnen 2 5 1 2 1 SIBs service independent building blocks Zu einem SIB geh ren vier St cke Code e SIB Definition Name Klasse Parameter Branches ausgehende Kanten e Red line Code Prototypischer Code der das Verhalten des SIBs auf abstrakter Ebene implementiert e Local Check Code Wird benutzt um einzeln
292. r der bei der Konstruktion des Generic OperationDriver bergebenen Klasse Wenn nein dann R ckgabe false 3 Die Methode ist nicht als Chainable annotiert a Unterscheidet sich die Anzahl von Parametern von der Anzahl der noch in der bergebenen Liste zur Verf gung stehenden Objekten also alle bis auf das erste Wenn ja dann R ckgabe false b Haben alle noch verf gbaren Objekte den gleichen Typ wie der jeweils entspre chende Methoden Parameter Wenn nein dann R ckgabe false 3 5 DER WORKSPACE STAND JULI 2006 187 4 Die Methode ist als Chainable annotiert a Hat die Methode mehr als einen Parameter Wenn ja dann R ckgabe false b Stehen noch mindestens so viele Objekte in der bergebenen Liste zur Verf gung wie die Methode Parameter hat also mindestens eins Wenn nein dann R ckgabe false c Haben alle noch zur Verf gung stehenden Objekte also alle au er dem ersten in der bergebenen Liste einen mit dem Methoden Parameter kompatiblen Typ Wenn nein dann R ckgabe false 5 R ckgabe true Der Punkt 2 verdeutlicht die grunds tzliche Arbeitsweise Das erste Objekt einer Para meterliste ist dasjenige auf dem die entsprechende Methode aufgerufen wird Die Punkte unter 4 erkl ren sich aus der Behandlung von Chainable Methoden Auf das erste Ob jekt der Parameterliste wird die bergebene Methode mit dem zweiten Objekt der Liste aufgerufen Auf das Ergebnis Objekt wird die Methode dann mit
293. r die Methoden getAcceptance Sets getAcceptanceSet int und getAcceptanceSetsOf State die jede oder eine bestimmte Akzeptanzmenge liefern bzw die Indizes der Akzeptanzmengen in denen sich ein Zustand befindet Mit einem GBA lassen sich w regul re Sprachen unter Umst nden kompakter darstellen die Ausdrucksst rke nimmt aber nicht zu Denn zu jedem GBA A l sst sich leicht ein quivalenter BA A berechnen der das Verhalten von A simuliert A enth lt f r jede Akzeptanzmenge eine Kopie von A Wenn in einer Kopie ein Zustand aus der zu der 3 2 AUTOMATEN 143 n chsten Kopie korrespondierenden Akzeptanzmenge erreicht ist wird in diese Kopie gewechselt Seien Fo Fn die Akzeptanzmengen von A A besteht aus n Kopien von A Ao An In A wird f r jeden Zustand aus F jede ausgehende Transition wie folgt ge ndert Wenn vorher das Ziel von t der Zustand q in A ist so ist das Ziel nachher der q entsprechende Zustand in A mod n Die Startzust nde von A sind die Startzust nde in Ay Akzeptierende Zust nde von A sind alle Zust nde in A _ Die Gr e von A nimmt gegen ber der von A um den Faktor n zu Zu einem BuchiAutomaton Objekt das einen GBA A darstellt kann das beschriebene Verfahren durch Aufruf der Methode degeneralize ausgef hrt werden Die Methode liefert den quivalenten B chiautomaten A zur ck CharacterAlphabet ca CharacterAlphabet getInstance Buchi
294. r die Ungleichung z z lt 2 wird der Zustand 2 konstruiert Bei der Bearbei 2 3 ANALYSE MIT AUTOMATEN 49 tung von 2 wird f r den Bitvektor 0 1 die Transition 1 0 1 2 hinzugef gt weil 2 a 0 1 2 1 ist Bei der Bearbeitung von 1 wird aber die Transition 1 0 1 1 erzeugt da 1 a 0 1 2 1 ist Die Determinisierung eines nichtdeterministischen Automaten kann im Allgemeinen zu einem exponentiellen blow up des Automaten f hren Hier haben wir es jedoch mit einem deutlich g nstigeren Spezialfall zu tun der eine Determinisierung in linearer Zeit zul sst Genauer gesagt k nnen wir den Automaten derart modifizieren dass der g nstige Spezialfall vorliegt Was wir ben tigen nennt sich geordneter endlicher Automat Definition Ein endlicher Automat A hei t geordnet wenn es eine totale Ordnung lt auf seiner Zustandsmenge Q gibt so dass f r alle q r Q mit q lt r die von A erkannte Sprache eine Teilmenge der von A erkannten Sprache ist Dabei bezeichnet A f r eins Q den Automaten der sich aus A durch die Erkl rung von s zum einzigen Initialzustand ergibt Lemma Jeder geordnete endliche Automat l sst sich in Zeit O A in einen quivalenten deterministischen Automaten berf hren Dabei muss nur die Transitionsmenge ver ndert werden Um unseren Automaten zu einem geordneten Automaten zu machen m ssen wir f r jeden Zustand q Q und jeden Bitvektor b 0 1 f r den k
295. rage gestellt werden k nnen um die Qualit t der L sung abzusichern Denn es ist typisch dass bei der Konzeptionalisierung eines Projektes und der Implementierung sich nach einiger Zeit herausstellt dass gewisse Details noch berdacht werden m ssen Das Minimalprojekt wurde gegen Ende des ersten Semesters fertiggestellt Es enthielt ei ne Automatenbibliothek mit einer abstrakten Automaten Basisklasse und einer konkreten Unterklasse zur Repr sentation von deterministischen und nichtdeterministischen endli chen Automaten Die Automaten unterst tzten Unicode Character Alphabete und Bit vektoralphabete und boten die blichen Standardoperationen an Auf dieser Basis war es m glich Presburger Formeln in endliche Automaten zu bersetzen die die L sungsmenge der jeweiligen Formel repr sentierten Die Analyse und die Automatenoperationen konn ten ber die grafische Oberfl che aktiviert werden und Automaten wurden auch visuell dargestellt wobei ihr Layout mit dem Fruchterman Reingold Algorithmus erstellt wurde Die grafische Darstellung von Automaten beruhte auf einem flexiblen selbst entwickel 4 KAPITEL 1 ALLGEMEINES ten Framework das sich auch bei den Erweiterungen im zweiten Semester bew hrte Die Automatenbibliothek musste im zweiten Semester noch einmal verallgemeinert jedoch nicht komplett neu implementiert werden Insgesamt wurde das Minimalprojekt von allen Teilnehmern als gelungen akzeptiert Zu Beginn des zweiten
296. rammatik Die implementierte Grammatik ist in Abbildung 3 14 zu sehen Die Grammatik wurde in der Implementierung von der Linksrekursion befreit jedoch hier im Originalzustand belassen Bei n herer Betrachtung f llt auf dass die Grammatik in diesem hier gezeigten Zustand nicht eindeutig ist Durch das Entfernen der Linksrekursion und durch Behandlung der komplexeren Tokens wie z B not als ein einziges Zeichen im Eingabestrom wird die Grammatik wieder eindeutig 3 3 2 2 Grundlegende Implementierung Einfache Implementierungen dieses Parsertyps folgen der Struktur der zugrunde liegen den Grammatik F r jedes Nichtterminal wird eine eigene Methode implementiert die eigenst ndig die in einer Alternative vorkommenden Terminale pr ft und weiterf hrende 152 KAPITEL 3 GRUPPENERGEBNISSE Nichtterminale Methoden aufruft oder bei Misserfolg aller Alternativen einen Fehler zur ck liefert Weiterhin sei noch an dieser Stelle anzumerken dass aufgrund der kleinen Menge an To kens die zu erkennen ist das Erkennen von Zeichenketten direkt im Parser implementiert ist 3 3 2 3 Entwicklung des Parsers Nach Abschluss des ersten Prototyps war festzustellen dass bei gro en Eingabel ngen die Laufzeit extrem anstieg Der Grund hierf r war dass beim Zerlegen sehr viel Zeit zur Zeichenerkennung verloren ging und sehr viele Backtracks gemacht wurden Als weiterer Grund dieser langen Zerlegungsdauer wurden die zweistelligen O
297. rde wird der Automat zu Schluss noch mal minimiert Das bedeutet z B dass die e Kanten entfernt werden 3 3 4 2 6 Beispielhafter Aufruf Ein Beispiel f r einen Aufruf der Thompson Konstruktion RegularExpressionParser rep new RegularExpressionParser try 4 new ThompsonConstruction a bc computeResult catch ParseException pe Es erzeugt einen Automaten der den regul ren Ausdruck a bc abzeptiert 3 4 DER WORKSPACE STAND FEBRUAR 2006 163 3 4 Der Workspace Stand Februar 2006 Die Workspacegruppe besch ftigte sich mit der graphischen Schnittstelle des Projektes Der Workspace hat prim r die Aufgabe die Handhabung der Automatenbibliothek des Parsers und der Transformationsverfahren zu erleichtern und diese graphisch intuitiv nutz bar zu gestalten Hierbei bleibt das flexible Gesamtkonzept zu ber cksichtigen das es erm glicht den Workspace schnell und unkompliziert zu erweitern So lassen sich ber eine Addon Schnittstelle neue Automaten oder Transformationsverfahren integrieren 3 4 1 Planungsphase Der Implementation des Workspaces ging eine umfangreiche Analysephase voraus in der wir kurz unsere Vorstellungen und Ziele definiert haben Das wichtigste Ziel bestand darin die Vorgaben eines Baukastenprinzips zu erf llen Das hei t dass der Workspace leicht erweiterbar sein sollte und neue Automaten oder Trans formationsverfahren integriert werden k nnen ohne daf
298. rechnet Offensichtlich wird f r alle gt 1 in der ten Iteration X p y 0 lt j lt i berechnet X wird also niemals station r Eine weitere Schwierigkeit ist dass X mit unendlichen Mengen belegt werden kann C kann schon unendlich sein was sofort die Frage nach der Repr sentation im Speicher aufwirft Der hier zu entwickelnde Algorithmus zur Vorg nger Berechnung wird ebenso wie der naive Algorithmus Folgen von Vorg nger Mengen berechnen dabei jedoch dank gr erer Schritte stets nach endlich vielen Schritten pre C erreichen Auch dieser 32 KAPITEL 2 SEMINARPHASE Algorithmus verarbeitet potentiell unendliche Mengen Wir ben tigen also eine Daten struktur zur endlichen Repr sentation unendlicher Mengen Weil z B Algorithmen f r das Model Checking oft mit den Mengen rechnen sollte die Datenstruktur abgeschlossen sein unter den Operationen Schnitt Vereinigung und Komplement und diese Operatio nen auch m glichst effizient aber unbedingt mit polynomiellem Rechenaufwand ausf hren k nnen Nat rlich sollte es auch in polynomieller Zeit entscheidbar sein ob eine gegebe ne Konfiguration Element der repr sentierten Menge ist Schliesslich fordern wir noch die Abgeschlossenheit unter pre um die Vorg nger Berechnung immer durchf hren zu k nnen Die von uns gew hlte Datenstruktur wird all diese Anforderungen erf llen wird aber nicht in der Lage sein beliebige Teilmengen des Konfigurationsraums darzustellen
299. reichen ist die Menge der im NFA beim Lesen von w erreichbaren Zust nde identisch mit der s entsprechenden Zustandsmenge F r genauere Details zu dieser Konstruktion insbesondere zu dem Problem der Berech nung von Symbolmengen die mehrere Transitionen gemeinsam schalten sei auf Abschnitt 3 2 2 auf Seite 122 verwiesen 3 2 1 7 7 Totalisierung Oft ist es beim Spezifizieren eines Automaten m hselig und auch un bersichtlich einen Automaten komplett zu spezifizieren Man stelle sich vor man m chte lediglich modellieren dass ein einziger Buchstabe in einem Zustand zu einem gewissen anderen f hrt Alle anderen Eingaben sollen dazu f hren dass der Automat nicht akzeptiert Man m sste also f r das komplette Alphabet einen bergang von dem Ausgangszustand zu einem nicht akzeptierenden Ausnahme Zustand der nicht verlassen werden kann 118 KAPITEL 3 GRUPPENERGEBNISSE haben Dies ist aber nicht notwendig da ein Ausnahmezustand immer implizit vorhanden ist f r jeden Zustand existiert in der Vorstellung eine Transition dorthin die von allen Sym bolen geschaltet wird f r die keine andere Transition vorhanden ist Man m chte allerdings manchmal diese kompakte Form auch expandieren k nnen um den vollst ndigen Automaten zu bekommen Dies ist z B beim Komplementieren sogar n tig Mittels der Methode renderTotalized l sst sich diese Totalisierung auf einem Auto maten durchf hren Ein Aufruf dieser Methode
300. relation gt C P x T x 2P T ist die kleinste Relation mit e c gt c f r alle c P x I e ist c ein direkter Vorg nger von C ist so c gt C e wenn c gt c1 und c gt C f r 1 lt i lt n dann c gt C1 UV UC F r alle Mengen C von Konfigurationen von P definieren wir wieder die Vorg ngerfunktionen e prep C c P x T 3C CC C ist direkter Nach folger von c 2 2 ALLGEMEINE ANALYSE 37 e prep reflexiver und transitiver Abschluss von prep e prep prep o pres 2 2 1 7 Alternierende Multi Automaten AMA Sei P P T A ein Alternierendes Pushdown System Ein P AMA ist ein Tupel A T Q 6 1 F wobei T Q J und F wie bei Multi Automaten definiert sind 6 ist eine Funktion mit dem Definitionsbereich Q xT und der Menge der negationsfreien Booleschen Formeln ber Q als Wertebereich 6 l sst sich analog zu A als Relation 6 C Q xT x 29 modellieren Auch hier finden parallele Ubergiinge statt Die Transitionsrelation gt C Q x T x 2 ist die kleinste Relation mit e q gt q fiir allege Q e wenn q r Q 6 dann q gt Q e wenn q gt q qn und q gt Q f r alle 1 lt i lt n so q 3 Q1U U Qn A akzeptiert p w gdw st 2 Q f r ein Q C F Ein Lauf von A ber w T beginnend bei q Q ist ein endlicher Baum mit Zust nden als Knoten wobei q die Wurzel ist Die Vater Kind Beziehungen ergeben sich aus den angewendeten Regeln Ein Abstieg von einer Ebene
301. reten Programmiersprache die zu den BB korrespon dierenden Programmfragmente implementiert werden BBs k nnen auch bereits als Spe zifikation existieren ohne dass es eine Implementierung gibt 2 5 1 1 3 Verifikation durch Model Checking Der BB Graph kann als Kripkemo dell interpretiert werden in dem die BBs Zust nde sind in denen Mengen von atomaren Aussagen gelten oder nicht gelten Die benannten Kanten bzw branches zwischen den BBs entsprechen den actions Dieses Modell erlaubt es temporallogische unendliche Fol gen von BBs betreffende Aussagen ber den BB Graphen zu formulieren Diese Aussagen entsprechen Anforderungen an die Art und Weise wie BBs ausgef hrt werden Es ist unter anderem m glich zu zu beschreiben e in welcher Reihenfolge BBs ausgef hrt werden e dass irgendein BB unter einer Bedingung irgendwann einmal ausgef hrt werden muss e dass zwei bestimmte BBs niemals gemeinsam w hrend einer Ausf hrung des Sys tems auftauchen Zu einer Anwendung k nnen Hunderte solcher Aussagen bzw constraints formuliert wer den die w hrend des Entwicklungsprozesses st ndig effizient berpr fbar sind Model Checking Wird ein constraint verletzt gilt eine Aussage also nicht ist das ein siche rer Hinweis darauf dass ein Entwicklungsschritt unternommen wurde der nicht mit der Spezifikation vertr glich ist 2 5 1 1 4 Entwicklergruppen Weiterhin erlaubt das Metaframe System den Soft wareentwicklungs
302. rmittelt der Plugin manager zu jedem Innerframe bzw Automatenfenster das g ltige Plugin und for dert dieses zum Speichern des Innerframes auf Dies geschieht indem das Plu gin die Methode public void savePlugin InnerFrame innerFrame Document document im FiniteAutomatonPluginSerializer aufruft Der FiniteAutomatonPluginSerializer f gt zuerst einen neuen Knoten plu gin hinzu Der Knoten erh lt ein Attribut class dass mit dem Klassenna men des Plugins belegt wird So wei der Pluginmanager beim Laden wel ches Plugin den Teilbaum fehlerfrei laden kann Unter diesen Knoten wer den nun alle Informationen des Innerframes eingetragen Der Knoten title wird mit dem Titel des Innerframes gef llt Die Daten des Automaton werden ber die Methode AutomatonSerializer createDocumentFromAutomaton automaton und die aktuellen Koordinaten der Knoten des PaintableAutomaton wer den ber die Methode StateLocationSerializer serialize pAutomaton document element ermittelt und dem Dokument angeh ngt Beim Laden zerteilt die Klasse FiniteAutomatonPluginSerializer das Dokument in die oben beschriebenen Teile und l dt diese ber geeignete Methoden ein Die Klasse PluginData Diese Klasse sammelt alle wichtigen Informationen eines Plug ins So werden hier der FiniteAutomaton und der PaintableAutomaton gespeichert Die Klasse erm glicht es diese Daten an einer Stelle zentral zu verwalten Die Klasse FiniteAutomatonColorizer Diese Klasse
303. rne Verwaltung eines Parsers vereinfachen 10 im engl predictive Meine lose bersetzung w re Zur ckgehen oder Durchprobieren 148 KAPITEL 3 GRUPPENERGEBNISSE 3 3 1 1 Token aaa parser util Token ist eine Containerklasse die Informationen ber eine Zeichenkette bereith lt Im Einzelnen sind dies Typ und Supertyp sowie die eigentliche Zeichenkette und die Position in der Eingabe Typ und Supertyp werden vom jeweiligem Parser als enum bereitgestellt Im Allgemei nen kann davon ausgegangen werden dass ein Supertyp eine Oberklasse wie bin rer Operator darstellt und Typ ein konkretes Element der Klasse wie Plus Bei der Verwendung der Informationen innerhalb eines Tokens ist zu beachten dass die Zeichenkette innerhalb eines Tokens nicht unbedingt mit der Repr sentation innerhalb der Eingabe bereinstimmen muss Das Gleiche gilt f r die Position Der Grund ist darin zu suchen dass Methoden oder Programme im allgemeinen bei der Auswertung nicht an der Repr sentation eines z B Operators interessiert sind sondern an dem was dieser Operator bedeutet also an der Semantik Eine Vermischung von Syntax und Semantik f hrt zwangsl ufig dazu dass Methoden und Programme bei der geringsten nderung der Repr sentation eines Operators angepasst werden m ssen Es f hrt also dazu dass diese Programme schwerer zu warten sind Nur in F llen wo die Semantik durch die Auswertung definiert wird als
304. rocess public void init WorkspaceFrame workspaceFrame this workspaceFrame workspaceFrame e Die abstrakte Klasse AddonManager bildet die Basis f r alle weiteren Addon 174 KAPITEL 3 GRUPPENERGEBNISSE Manager Diese miissen von der abstrakten Klasse abgeleitet werden Der Grund liegt in der Methode loadAvailableAddons Diese Methode wird beim Instanziieren des Addon Managers gestartet und hat die Aufgabe alle vorhandenen Addons zu ermitteln und dynamisch zu laden Auf die genauere Funktionsweise kommen wir sp ter noch einmal zur ck e Finer der zwei implementierten Addontypen wird Driver genannt Driver ha ben die prim re Aufgabe eine Automatenbibliothek die ohne Gedanken an eine GUI konzipiert wurde in den Workspace einzubinden Eine einzubindende Bibliothek wird also per Treiber angesprochen und es gibt pro Automatentyp genau einen Die Driver erf llen folgende Aufgaben 1 Ganz trivial kennt er seine zugeh rige Automatenbibliothek und deren aktuellen Standort 2 Ein Driver ist in der Lage einen Automaten im Workspace anzuzeigen und wei wie und ob ein Automat graphisch bearbeitet werden kann 3 Er stellt Methoden zur Verf gung um Automaten zu speichern und sp ter wieder einladen zu k nnen 4 Er stellt alle Automatenoperationen zur Verf gung und filtert sie Das hei t wird z B genau ein Automat markiert so werden nur un re Ope rationen im Workspacemen angezeigt die zu di
305. rvall einer Transition beginnt die nicht in 7 ist Denn in die Minimumsberechnung geht auch Position z 1 ein falls ein Zeiger z f r eine weitere Transition existiert c I kann nicht in Richtung h herwertiger Zeichen verl ngert werden denn ansonsten w re das Minimum anders berechnet werden kann auch nicht in Richtung nieder wertigerer Zeichen verl ngert werden denn ansonsten h tte in der vorausgehenden Iteration das gleiche 7 ausgegeben werden m ssen und das Minimum w re anders berechnet worden Die Anzahl der Iterationen entspricht der Anzahl ausgegebener SymbolRanges Diese las sen sich nicht zu gr eren Intervallen zusammenfassen Also ist die Ausgabe optimal formatiert Die Kosten einer Iteration werden dominiert durch die Kosten der MINHEAP Operationen sind damit logarithmisch bez glich der Anzahl betrachteter Transitionen also h chstens logarithmisch bez glich der Ausgabel nge Damit erf llt die Laufzeit des Algorithmus die oben genannten Anforderungen Der Algorithmus ist in der Klasse aaa automaton util SymbolRange TransitionAnalyzer implementiert 3 2 AUTOMATEN 127 3 2 3 Einleitung und bersicht zur Weiterf hrung Die abstrakte Klasse Automaton wurde als gemeinsame Basis f r verschiedene Automaten modelle konzipiert Die wichtigste und zugleich auch einfachste Klasse eines Automaten ist der endliche Automat Dieser wurde bereits in der ersten H lfte der Projektgruppe in der Klasse Fi
306. s bei BuchiAutomaton m glich ist Die Quantor Variablen werden zudem so angeordnet dass ein besonders einfach zu implementierender und effizient zu berechnender Spezialfall der Projektion ausreicht Der erste Schritt der Normalisierung ist die Bereinigung der Formel Dabei werden Variablen die an mehrere nicht ineinander geschachtelte Qantoren gebunden sind dies ist erlaubt umbenannt Beispielsweise wird 3x F3 V Va F2 in 3x_substl F V Va_subst2 F gt transformiert Im zweiten Schritt werden alle Nega tionen unter Beriicksichtigung der De Morgan schen Gesetze und des Involutionsgesetzes doppelte Negationen heben sich auf nach innen delegiert Ungleichungen k nnen auf ein 3 1 TRANSFORMATION 83 fache Weise negiert werden so dass der Negations Operator verschwindet Uber Gleichun gen darf ein Negations Operator stehen bleiben denn die Gleichung m sste durch die Dis junktion zweier Ungleichungen ersetzt werden von denen jede einzelne hnlich aufw ndig zu berechnen ist wie die Gleichung Andererseits ist der f r die Gleichung berechnete Au tomat deterministisch und das Komplement in Linearzeit zu berechnen Im dritten Schritt werden die Quantoren nach oben gezogen aus 3x_substl F V Vx_subst2 F gt wird 3x_substl Vx_subst2 Fy V F 3 1 2 2 3 Atom Extraktion Nach der Normalisierung steht die Menge der Atome fest die nun bestimmt wird Dazu wird der Syntaxbaum rekursiv dur
307. s Tab im Fenster mit der berschrift Automaton 230 KAPITEL 3 GRUPPENERGEBNISSE 3 7 9 2 3 Operationen und Analysen Alle Funktionen verlaufen analog zum Fini te Automaton Plugin htpb Die Analysefunktionen weichen optisch leicht ab weil ein Console fun ram Fie Find members c 00000 0 01100 12 Abbildung 3 60 Auffinden einer aktzepierenden Belegung bei Bitvektoren Presburger Plugin Automaten mit Bitvektoren verwendet So werden nun in beiden Ana lysefunktionen Tabellen verwendet die die jeweiligen Variablenbelegungen anzeigen siehe 3 61 und 3 60 3 7 9 3 Regular Expression Plugin Auch das Plugin f r Regular Expressions ist eine Erweiterung des Finite Automaton Plugin Mit diesem Plugin l sst sich ein regul rer Ausdruck in einen Automaten transfor mieren 3 7 9 3 1 Eingabe Als Eingabe wird ein regul rer Ausdruck erwartet Folgende Operationen von regul ren Ausdr cken werden unterst tzt e Vereinigung von S und U S U s ist in S oder s ist in U e Konkatenation von S und U SU st s ist in S und u ist in U e Kleene Abschluss von S Sx null oder mehr Konkatenationen von S 32 T 00000 3 000011 I Step Stepall Reset y show complete path Abbildung 3 61 Automatenlauf bei Bitvektoren 3 7 HANDBUCH 231 e Positiver Abschluss von S S ein oder mehr Konkatenatio
308. se des zweiten Semesters Nachdem das Minimalziel bereits schon im ersten Semester erreicht war war ein neuer Kurs zu Beginn des zweiten Semesters einzuschlagen Im besonderen Ma e ist die Alter native zwischen Baumautomaten und B chiautomaten abgewogen worden Man hat sich f r B chiautomaten und das damit verbundene Model Checking mit LTL Formeln ent schieden Dieses Automatenmodell ist dem der endlichen Automaten noch sehr nahe und somit sollte mehr Wert auf die Analyse gelegt werden und die Abrundung aller Feinheiten Das ist auch ein Grund warum man sich entschlossen hatte den Schritt zu gehen dass die interne Darstellung von transitionsausl senden Symbolmengen nicht mehr nur ber Intervalle von Symbolen sondern auch andere denkbare Datenstrukturen gel st werden sollte Es wurde beschlossen dass sich als Datenstruktur daf r OBDDs gut eignen und dies wurde zu einem neuen Arbeitsteilgebiet Die Automatenbibliothek musste u A darauf hin erweitert werden und somit wurde der Kern der Automatenbibliothek als getrennter Arbeitsbereich zu den konkreten Operationen bzw Algorithmen f r B chiautomaten ein gestuft Zus tzlich musste noch eine simple Datenstruktur f r die zu pr fenden Modelle bereitgestellt werden Um f r das LTL Model Checking einfach an sinnvolle Modelle zu kommen und Analysen somit automatischer zu gestalten sollten aus simplen Programmen geeignete Modelle generiert werden Diese Anforderung fand ihre Umsetzu
309. solcher Nachfolgezustand so sollte die Transiti on auf einen endg ltig ablehnenden Zustand reject umgebogen werden Weil die Schranke jedoch nicht scharf ist werden weiterhin berfl ssige Zust nde konstruiert Dagegen hat das Verfahren die positive Eigenschaft dass die Ergebnisautomaten deterministisch sind Wir l sen das Problem der berfl ssigen Zust nde durch eine R ckw rtskonstruktion die im Zustand c gestartet wird Auf diese Weise bekommt der Automat nur Zust nde von denen aus c erreichbar ist Der Fall dass der Algorithmus einen unendlich langen Pfad zur ckverfolgt kann nicht auftreten denn die R ckw rtskonstruktion kann h chstens die endlich vielen Zust nde q mit q lt 3 1 lt lt las konstruieren berfl ssige Zust nde wer den genau dann konstruiert wenn die Gleichung unerf llbar ist z B 7x1 212 6 In diesem Fall werden init keine ausgehenden Transitionen zugewiesen was leicht ge pr ft werden kann Nach den bisherigen Ausf hrungen sollte klar sein dass Algorith mus 2 einen minimalen deterministischen endlichen Automaten konstruiert der genau die L sungsmenge der Gleichung akzeptiert Wird der Zustand reject hinzugef gt so ist reject nicht berfl ssig denn er ist der einzige Zustand von dem aus c nicht erreich bar ist Er ist also mit keinem anderen Zustand quivalent Wegen a 4 0 f r ein i gibt es stets Eingaben die nicht mehr zu L sungen verl ngert werden k nnen Es werden 48
310. sse von der Oberfl che aus mit geeigneten Eingaben gestartet werden k nnen und die Ergeb nisautomaten auf Wunsch grafisch dargestellt werden k nnen Auf die erstellten Auto maten sollten die Operationen des jeweiligen Automatentyps angewendet werden k nnen Au erdem waren Editoren zur manuellen Erstellung von Automaten w nschenswert Der Zweck eines solchen Baukastens besteht vor allem darin dem Anwender die M chtigkeit von Automatenmodellen zur Verf gung zu stellen Automaten sind zu den wichtigsten und am gr ndlichsten erforschten Strukturen der Informatik zu z hlen F r die Standardoperationen wurden m glichst effiziente Algorithmen entwickelt viele Ei genschaften von Automaten wurden untersucht und viele Probleme sind durch Automa ten modellierbar Mit der Modellierbarkeit eines Problems als Automat oder Kollektion 2 KAPITEL 1 ALLGEMEINES von Automaten kann der L sungsprozess jedoch in vielen F llen auf eine endlich h ufige Anwendung der wohlbekannten und gut beherrschbaren Standardoperationen reduziert werden anstatt v llig neue Algorithmen zu entwerfen Nat rlich wird mit dieser Vor gehensweise nicht unbedingt die bestm gliche Laufzeit erreicht aber automatenbasierte Verfahren k nnen durchaus praktikabel sein In jedem Fall erachtet die Projektgruppe diese spezielle Art von Verfahren als sehr interessant Einsatzmoglichkeiten der Automa tenbibliothek bestehen beispielsweise im Bereich des Model Checking und der
311. ssen Beispielhaft sei die Po tenzmengenkonstruktion genannt bei der die Zust nde des deterministischen Ergebnisau tomaten Mengen von Zust nden des NFAs entsprechen Sei Q Y q0 F 9 Q x E 2 ein NFA und 2 Y qo 6 22 x 2 der dazu quivalente DFA 6 ist wie folgt definiert 9 S a UJ s a ses Liegen die Transitionen in tabellarischer Form vor stellt die Berechnung von 0 kein Problem dar man muss lediglich f r alle s S an der Stelle f r a nachschauen und die entsprechende Menge bilden Die Laufzeit ist linear in der Eingabel nge In der vorliegenden Automatenbibliothek sind die transitionsbewirkenden Zeichen men genweise spezifiziert Nat rlich ist es auch hier m glich f r jedes einzelne Zeichen zu pr fen in welchen Mengen es liegt Die Laufzeit eines solchen Verfahrens w re stets min destens so gro wie die Gr e des Alphabets W nschenswert ist aber eine Laufzeit die asymptotisch nicht viel gr er ist als die L nge der Darstellung der Symbolmengen in der Ein bzw Ausgabe 123 3 2 AUTOMATEN Abbildung 3 9 Diagramm zu dem endg ltigen Automatenkern 124 KAPITEL 3 GRUPPENERGEBNISSE Abbildung 3 10 Objektdiagramm zur beispielhaften Konstruktion in 3 2 1 5 Die Ausgabe besteht aus neu berechneten Transitionen mit Symbolmengen als Markie rung bei der Potenzmengenkonstruktion sind das Transitionen zwischen Zustandsmengen z B zwischen A und B Eine Transition
312. sst sich ein NBA A konstruieren mit y 2 Q 20D so dass L A genau die Menge der Berechnungen ist in denen yp gilt 2 1 3 3 Model Checking Truth and Validity Checking In diesem Abschnitt werden nun bisherige Ergebnisse verwendet um die Giiltigkeit und Korrektheit einer temporallogischen Formel entscheiden zu k nnen 2 1 3 3 1 LTL Eine LTL Formel y ist g ltig e gt alle Berechnungen von A akzeptiert werden e S L A X mit E 2 eo gt L A 90 e L A 9 Somit kann die Giiltigkeitspriifung einer Formel auf den Leerheitstest reduziert werden Satz 2 Die G ltigkeit einer gegebenen LTL Formel y kann in O 200 D mit Platzbedarf O p entschieden werden 2 1 AUTOMATENMODELLE 29 Seien ein FS Programm P und eine LTL Formel y gegeben dann kann man wie folgt entscheiden ob in P gilt P kann als NBA Ap gesehen werden mit Q W qo wo F V Y 2P und w 6 w a gdw wRu a V w Dann ist L Ap die Menge aller Berechnungen von P Der Korrektheitstest d h der Test ob eine Formel bei einem gegebenen unterliegenden Programm erf llt ist l sst sich nun reduzieren y gilt in P wenn L Ap C Lu A gilt D h L Ap lt L A L Ap N L A 0S L Ap L A Satz 3 Die Korrektheit einer LTL Formel p in einem FS Programm P kann in O P 201 mit Platzbedarf O y log PI entschieden werden 30 KAPITEL 2 SEMINARPHASE 2 2
313. st Dies klingt selbstverst ndlich ist aber bei allen anderen Bibliotheken leider nicht der Fall 60 KAPITEL 2 SEMINARPHASE 2 4 2 3 JRexx Die Automatenbiliothek JRexx ist von der karneim com Gesellschaft f r Softwarear chitektur mbH implementiert worden um ein Pattern Matching unter Zuhilfenahme von Automaten durchzuf hren Dabei wurden DFA und NFA implementiert sowie die Erzeugung eines Automaten durch einen gegebenen regul ren Ausdruck Es handelt sich hierbei um ein Open Source Produkt unter der LGPL Funktionsumfang Wie bei dk brics automaton lassen sich Automaten auf zwei Arten modellieren Zum einen kann man einen Automaten durch explizite Angabe der Zust nde und Zustands bergangsfunktion modellieren Die zweite M glichkeit ist es einen Automaten durch die Angabe eines regul ren Ausdrucks erzeugen zu lassen Automat Auf Automaten sind eine Vielzahl weiterer Operationen erlaubt Automaten minimierung ohne Angabe des verwendeten Algorithmus Komplement Produkt sprache Quotientensprache Vereinigung von Automaten Zustands berwachung Fazit Diese Bibliothek ist prim r entwickelt worden um ein Pattern Matching op timal zu unterst tzen Aus diesem Grund ist die Bibliothek zu stark mit speziellen Funktionalit ten berladen Dieses macht die gesamte Skriptbiblio thek sehr un bersichtlich Weitere schwerwiegende Nachteile bilden die Aus gaben System out printin autm die trotz intensiver Bem hungen
314. st es Redundanzen w hrend der Compile Zeit zu vermeiden also z B Schleifen Invarianten au erhalb der Schleife auszuf hren den Variablen m glichst kleine Wertebereiche zuzu ordnen oder berfl ssige Berechnungen zu erkennen die nie benutzt werden oder schon zur Compile Zeit feststehen Au er im Bereich der Codeoptimierung findet die Programm analyse auch neuerdings Anwendung in der Softwareverifikation Hier ist ihre Aufgabe un erwiinschtes Programmverhalten zu erkennen und zu vermeiden wie z B das Uberlaufen einer Variable 2 2 2 1 Reaching Definitions Analysis Im Folgenden wird ein Programmanalyseverfahren beispielhaft vorgestellt Der Text ba siert auf dem ersten Kapitel des Buches Principles of Program Analysis Bei der Reaching Definitions Analysis ist man an den vollst ndigen Erreichbarkeits Informationen von Variablenzuweisungen interessiert um Aussagen ber den Programmverlauf zu ma chen Erreichbarkeits Informationen geben Auskunft dar ber an welchem Programm punkt eine Variable zum letzten Mal bzgl eines anderen Programmpunktes zugewiesen worden sein k nnte Wie bei den meisten rekursiven Datenfluss Problemen ist es nicht m glich zu entschei den ob eine Zuweisung einen bestimmten Programmpunkt tats chlich erreicht Es ist nur m glich Aussagen dar ber zu treffen ob eine Zuweisung einen bestimmten Programm punkt erreichen kann Ob dies tats chlich der Fall ist h ngt im Allgemeinen von der
315. startet Diese bricht mit der Ausgabe Der Automat ist nicht leer ab wenn sie einen Zustand b erreicht der sich auf dem von der ersten Tiefensuche benutzten Stack befindet Wenn bei keiner dieser Tiefensuchen ein Zustand gefunden wird der auf dem Stack der ersten Tiefensuche ist wird Der Automat ist leer ausgegeben Eine Eingabe die vom Automaten akzeptiert wird erh lt man im Fall der Nicht Leerheit wie folgt Das endliche Pr fix dieser Eingabe ist ein Wort ber das man vom Startzustand zum Zustand b gelangt Der unendlich oft wiederholte zyklische Teil der Eingabe besteht erstens aus dem Wort ber das man vom Zustand b zum Zustand a gelangt und zweitens aus dem Wort ber das man von a zu b zur ck gelangt Die Teilw rter lassen sich durch Speichern von Zusatzinformationen auf den Stacks der Tiefensuchen leicht rekonstruieren Die zweite Tiefensuche wird zwar unter Umst nden mehrmals gestartet aber jeder Zu stand wird h chstens einmal dabei besucht Trotzdem findet das Verfahren stets einen Kreis mit einem akzeptierenden Zustand falls ein solcher existiert Das kann wie folgt per Widerspruchsbeweis gezeigt werden Sei q der erste akzeptierende Zustand von dem aus die zweite Tiefensuche einen Kreis nicht findet weil ein auf diesem Kreis liegender Zustand r von einer bei q startenden zweiten Tiefensuche bereits besucht wurde q liegt auf keinem Kreis sonst w re schon die bei q startende zwe
316. strakte Klasse Converter Methoden Beschreibung abstract erzeugt einen XML Teilbaum der das via setObject convert bject gesetzte Objekt repr sentiert abstract erzeugt ein Objekt aus dem via setElement gesetzten convertElement XML Teilbaum protected h ngt unter den XML Knoten getElement XML addCollection Teilb ume f r mehrere oder ein einzelnes Objekt addObject durch rekursive Converter Aufrufe bzw durch Be nutzung der XStream Bibliothek die XML Teilb ume aus beliebigen Objekten erzeugen kann protected erzeugt mehrere oder ein einzelnes Objekt aus fetchCollection Teilb umen die unter getElement h ngen intern fetch bject realisiert durch durch rekursive Converter Aufrufe oder mit XStream getObject setObject gibt das zu konvertierende Objekt zur ck bzw setzt es getElement setElement gibt die Wurzel des das zu konvertierende Objekt re pr sentierenden Teilbaums zur ck bzw setzt sie getAutomaton gibt den Automaten zur ck bzw setzt den Automa setAutomaton ten der das zu konvertierende Objekt enth lt getAttribute holt oder setzt einfache Attribute setAttribute strakte Klasse die Methoden anbietet mit denen Objektattribute gelesen und geschrie ben werden k nnen und mit denen member Objekte in einen Baum eingef gt werden bzw aus diesem herausgeholt werden k nnen Um Objekte einer bestimmten Klasse zu konvertieren muss eine f r diese Klasse spez
317. t 2 3 1 3 Konstruktion von Automaten f r Gleichungen F r ein Atom az dot 4 c soll ein deterministischer endlicher Automat erzeugt werden der genau die L sungsmenge der Gleichung akzeptiert wobei die L sungen wie oben beschrieben dargestellt werden Die Idee ist dass jeder Zustand einen bestimmten Wert repr sentiert den die linke Seite annehmen kann und dass sich der Automat beim Lesen einer Folge von Bitvektoren stets in dem Zustand befindet der den momentanen Wert der linken Seite repr sentiert Der momentane Wert ergibt sich aus dem bereits gelesenen Teil des Wortes denn dieser ist ja auch eine Variablenbelegung Wenn der Automat von einem Zustand q in einen Zustand q bergeht w hrend er den Bitvektor b liest steht dies f r eine Wert nderung des Ausdrucks a 2 43 2 Ann von q auf q der durch die Ver nderung der Variablenbelegung zustande kommt Diese Ver nderung wiederum resultiert auf Bitvektorebene daraus dass der Vektor b an die bereits gelesene Belegung hinten angeh ngt wird F r jede Variable x gilt Bedeutete der bisher gelesene Bitstring den Wert d so bedeutet der neue um b nach hinten verl ngerte Bitstring den Wert 2d b Eigenschaft der Zweierkomplementdarstellung Da die Gleichung linear ist verdoppelt sich die linke Seite zun chst Es muss dann noch 2 3 ANALYSE MIT AUTOMATEN 47 f r alle 2 mit b 1 der Wert a hinzuaddiert werden In Vektorschreibweise bedeutet
318. t deterministisch falls alle bergangsregeln verschiedene linke Seiten haben und wenn es keine e Regeln gibt F r einen Baumautomaten A kann in Zeit O A ermittelt werden ob die Sprache L A leer ist Ausserdem kann f r einen gegebenen Baum t in polynomieller Zeit A t ermittelt werden ob t von einem Baumautomaten A akzeptiert wird Um die Erreichbarkeitsanalyse von parallelen Prozessen mit Baumautomaten zu erl utern m ssen wir uns erst einmal mit der Prozess Algebra vertraut machen Die Prozess Algebra besteht zu einem Teil aus der Syntax und zum anderen aus der Semantik Die Syntax besteht aus der Menge der Handlungsnamen Act a b c aus der Menge der Pro zessvariablen Var X Y Z und aus der Menge der Prozess Algebra PA Terme Epa Anl die durch die folgende BNF festgelegt sind tu 0 X tu tu F r ein t Epa ist Var t die Menge der Prozessvariablen die in t vorkommen und Subterm t die Menge aller Teiltermen von t Eine PA Deklaration ist eine endliche Men ge A X tii 1 n von Prozess bergangsregeln Dabei m ssen die X s nicht verschieden sein Die Menge der Prozessvariablen die in Avorkommen werden mit Var A bezeichnet und Subterm A steht f r die Vereinigung aller Subterm t so dass t eine rechte oder eine linke Seite einer Regel in A ist Mit der Semantik werden die Uberg nge von einem PA Term zu einen anderen PA Term bei Ausf hrung einer Aktion beschrieben Wir
319. t eine LTL Formel Eine atomare Proposition ist dabei eine aus nicht f r Operatoren reservierten Zeichen 232 KAPITEL 3 GRUPPENERGEBNISSE bestehende Zeichenkette Beispiele fiir atomare Propositionen sind p aBc n 3 3 n und 123 3 7 10 1 4 Boolesche Konstanten Die Booleschen Konstanten T und L bzw al ternativ true und false sind LTL Formeln 3 7 10 1 5 Boolesche Operatoren Sind F und Fy LTL Formeln so sind auch F A Fy FLV Fo AF FL gt Fo und Fi F LTL Formeln Alternativ kann auch amp amp gt und lt gt geschrieben werden 3 7 10 1 6 Temporallogische Operatoren F r LTL Formeln F und F gt sind X Fi FF GF Fi U F und FRF ebenfalls LTL Formeln Die Semantik jedes dieser Opera toren soll im Folgenden kurz beschrieben werden da die temporallogischen Operatoren f r gew hnlich weniger h ufig in der Welt angetroffen werden als die anderen Operatoren Man stelle sich vor dass man sich in einem bestimmten Zustand q eines Kripkemodells befindet 3 7 10 1 7 Next Operator X Die Formel X F gilt in q genau dann wenn auf allen in q startenden Pfaden der jeweils zweite Zustand des Pfades die Formel F erf llt 3 7 10 1 8 Finally Operator F FF sagt aus dass auf allen in q startenden Pfaden irgendwann einmal F gilt 3 7 10 1 9 Globally Operator G GF bedeutet dass F auf allen in q startenden Pfaden gilt also in jedem Zustand jedes solchen Pfades 3 7 10 1 10 Until Operator U Eine Formel F UF
320. tand aus Diese Transition wird nun zu dem Automaten hinzugefiigt Dem Automat wurde unser neuer Zustand finalState noch nicht explizit hinzugefiigt doch dies geschieht implizit beim Einfiigen der Transition Es sei noch erw hnt dass es auch eine Methode mit der Signatur addTransition String State State gibt deren erstes Argument eine String Repr sentation eines Symbols ist Das Alphabet erzeugt aus diesem String eine Symbol Objekt In dem Beispiel wird allerdings ein Symbol someSymbol explizit aus einem String erzeugt Der Automat wird hinter den Kulissen eine Symbolmenge siehe dazu auch Abschnitt 3 2 3 2 auf Seite 129 erzeugen die nur aus diesem einzelnen Symbol besteht Es gilt auf einiges zu achten Die Zust nde sollten eindeutig einem Automaten geh ren Es sollte nicht unachtsam damit umgegangen werden Das Eingabezeichen bzw Symbol sollte passend zu dem Alphabet sein das bei der Konstruktion des Automaten verwen det wurde Das sollte aber unter normalen Umst nden kein Problem sein weil man die createSymbol String Methode des Alphabets nutzt um das Symbol zu erstellen 3 2 AUTOMATEN 115 3 2 1 6 L ufe Endliche Automaten sollen endlich lange W rter aus der Sprache die sie repr sentieren akzeptieren Sie lesen dabei jedes einzelne Zeichen eines Wortes nacheinander Intern nehmen sie dabei nichtdetermistisch einen Zustand bzw deterministisch mehrere Zust nde an Nach dem Lesen des letzten Zeichens ist der Auto
321. ten Variablen ergibt sich als die Vereinigung der Variablenmengen der einzelnen Atom Normalformen Die so erhaltenen Variablen werden im String Array allVariables gespeichert Das Array ist gem der folgenden Ordnung sortiert e Freie Variablen sind untereinander lexikographisch geordnet e Juantor Variablen sind nach zunehmender Tiefe im Syntaxbaum geordnet e Jede freie Variable ist kleiner als jede Quantor Variable 84 KAPITEL 3 GRUPPENERGEBNISSE Am Anfang des Arrays stehen also lexikographisch sortiert alle freien Variablen Mit die sem Pr fix des Arrays wird das die Variablenordnung darstellende Array gef llt Den letzten Teil bilden die Quantor Variablen je gr er der Index desto gr er ist die Tiefe in der sich der zugeh rige Quantor befindet Geschlossene Presburger Formeln enthalten keine freien Variablen und die Variablenordnung hat die L nge 0 Damit die Alphabets konstruktion nicht scheitert wird in diesem Fall f r die geschlossene Formel die Nor malform von A dummy lt 0 V dummy gt 0 verwendet Sowohl die Zahl quantifizierter als auch die Zahl freier Variablen ist nach oben unbeschr nkt 3 1 2 2 5 Elimination berfl ssiger Quantoren In diesem Schritt werden alle Quantoren Qg entfernt f r die x eine irrelevante Variable ist Die Semantik der Formel wird dadurch nicht ver ndert 3 1 2 2 6 Automaten Konstruktion Hierbei findet ein rekursiver Post Order Durchlauf des normalisierten Syntax
322. ten auf unendlichen W rtern Nichtdetermi nismus gibt einer Maschine existenzielle Wahlm glichkeit ihr Komplement dagegen folg lich eine universelle Wahlm glichkeit Daher macht die Betrachtung von Maschinen Sinn die beide Wahlm glichkeiten vereinen Diese Maschinen hei en alternierend F r eine Menge X sei B X eine Menge positiver Boolescher Formeln ber X d h Elemente aus X sowie true false induktiv verkn pft mit A V Sei Y C X Y erf llt eine Formel O B X wenn genau f r die positive Belegung der Elemente aus Y erf llt ist D h Y ist ein positives Modell f r O es enth lt keine negierten Ausdr cke z B f r AV B ist A ein positives Modell Sei A ein nichtdeterministischer Automat Die bergangsfunktion 6 l sst sich als Formel ausdr cken bzw als Klauselmenge sehen q a q1 q2 43 q a q1 V q2 V 93 Ein alternierender Automat ABA A ist hnelt von der Definition einem NBA mit dem Unterschied dass die bergangsfunktion 6 partiell auf B Q abbildet Bedingt durch die m gliche Universalwahl ist ein Lauf r eines ABA A auf einem unendlichen Wort w do Q1 42 ein Q beschrifteter Baum p r mit Wurzel r e qo so dass gilt Wenn u i r v q und q a O dann 2 1 AUTOMATENMODELLE 25 e gibt es k Kinder v1 Up mit k lt Q von v e und r v1 r vg erf llt O Ein Lauf kann endliche Zweige besitzen Fiir den Fall O true kann v auch kind
323. tervallende z das Ende des aktuellen Symbolintervalls f r solch einen Zeiger z an Erreicht z ist der Zustand der von der zu z geh rigen Transition erreicht wird 2 Initialisiere einen MIN HEAP A in dem die Zeiger gem ihrer Position aufsteigend geordnet sind 126 KAPITEL 3 GRUPPENERGEBNISSE 3 Entferne alle minimalen Zeiger aus h nenne ihre Position minSymbol und die ent sprechende Zeigermenge Z 4 e Falls h nicht leer ist nenne das nunmehr minimale Element in h Kopf des MIN HEAP 2 setze maxSymbol min Intervallende z z Z U Position z 1 e Falls h leer setze marSymbol mins Intervallende z z Z 5 Gebe aus I minSymbol maxSymboll T Transition z z Z 6 Versuche alle Zeiger in Z zur Position maxSymbol 1 zu bewegen Ein z kann genau dorthin bewegt werden wenn mazSymbol 1 noch auf dem aktuellen Intervall liegt ansonsten wird z zum Anfang des n chsten Intervalls bewegt Existiert kein n chstes Intervall mehr kann z nicht bewegt werden und wird nicht wieder in h eingef gt Falls z erfolgreich bewegt wurde f ge z wieder in h ein 7 Falls h nicht leer fahre bei 3 fort Die ausgegebenen Paare 1 7 haben die gew nschten Eigenschaften a I endet sp testens dort wo das erste der aktuellen Intervalle in 7 endet n mlich an min Intervallende z z Z b Weiterhin endet sp testens an der Position die vor derjenigen liegt an der ggf ein Inte
324. tes private Properties properties Operations private PropertyManager private void createStandardProperties sel public void setProperty String key int value properties cfg Abbildung 3 28 Die Klasse PropertyManager LookAndFeel javax swing plaf metal MetalLookAndFeel Zum gegenw rtigen Zeitpunkt unterst tzt der Workspace zwei Eigenschaften die Speicherung der Spracheinstellung und ein individuelles Look amp Feel Je nach gew hlter Spracheinstellung wird der Workspace in der gew nschten Spra che gestartet Java unterst tzt es das Erscheinungsbild und das Verhalten der GUI mittels so genannter Look amp Feels anzupassen Auf allen Plattformen stehen sowohl das Motif Look and Feel als auch das Metal Look and Feel zur Verf gung auf Mac und Win dows zus tzlich ein dem system blichen angepasstes eigenes Look amp Feel In den Eigenschaften wird das vom User bevorzugte Look amp Feel gespeichert und beim Start des Workspaces verwendet Der PropertyManager ist unter Zuhilfenahme des java util Properties Konzeptes implementiert RessourceManager Um viele interessierte Nutzer mit unserem Projekt erreichen zu k nnen haben wir den Workspace sprachunabh ngig programmiert Dieses Ziel wird effizient erreicht indem wir auf das ResourceBundle Konzept von Java zur ckgegriffen haben Bei diesem Konzept werden alle angezeigten Texte Infor mationen und ggf Bilder durch einen symbolischen Namen in der Programmie
325. tet neben den bekannten endlichen Automaten eben dieses Automatenmodell der B chiautomaten an um damit Analysen durchf hren zu 138 KAPITEL 3 GRUPPENERGEBNISSE k nnen 3 2 5 1 Komplement Das Komplement von B chiautomaten ist zwar konstruierbar aber f r die gegebenen Ressourcen nur f r extrem kleine und damit seltene B chiautomaten durchf hrbar In wird eine Konstruktion beschrieben die 4 4 1 Zust nde ben tigt Deshalb hat sich die Projektgruppe gegen die Implementierung entschlossen und wird sie hier auch nicht weiter betrachten 3 2 5 2 Vereinigung union Die Vereinigung bei B chiautomaten funktioniert analog zu den Automaten auf endlichen Worten siehe 3 2 1 7 2 Auch hier m ssen die Automaten dieselben Alphabete haben und beide Automaten werden nicht ver ndert sondern ein neuer erzeugt Wenn der Automat generalisiert ist wird er degeneralisiert Ebenso wie bei Automaten auf endlichen Worten ist der resultierende Automat nichtdeterministisch Da aber die Klasse der von nichtde terministischen B chiautomaten erkennbaren Sprachen gr er ist als die der von deter ministischen erkennbaren ist er auch nicht notwendigerweise in einen deterministischen B chiautomaten berf hrbar Das Resultat des Methodenaufrufs l sst sich in maximal linearer Laufzeit berechnen 3 2 5 3 Schnitt intersect Die Schnittoperation liefert einen Automaten der den Schnitt der Sprachen der beiden Automaten A und B akz
326. tion eines angemessenen B chiautomaten aus einem Kripkemodell wird wie folgt umgesetzt Ein neuer einziger Initialzustand zeigt auf alle bisherigen Initialzust nde des Kripkemodells Die atomaren Propositionen eines Zustandes werden zu Trigger an den Transitionen die als Zielzustand diesen Zustand haben Die Methode tr gt die Si gnatur BuchiAutomaton KripkeModel toBuchiAutomaton 3 2 6 2 CTL Model Checking Die Klasse CTLModelChecker erlaubt durch die Methode check String die Erf llbarkeit einer CTL Formel f auf einem Kripkemodell K zu testen d h ob K ein Modell von f ist bzw ob das System dem K unterliegt gewisse Eigenschaften die f beschreibt erf llt Dabei wird f als String angegeben und von einem Parser intern umgewandelt in eine interne Repr sentation der CTL Formel check liefert true gdw K ein Modell von f ist d h die Formel in allen Startzust nden von K gilt Alternativ kann man durch getValidStates String auch die Menge aller Zust nde erhalten in denen f gilt Das CTL Model Checking verl uft dabei mit einer simplen Fixpunktberechnung Das unterliegende System wurde in der Vorlesung Softwarekonstruktion im Wintersemester 2005 2006 an der Universit t Dortmund erl utert Die Idee ist atomare Formeln mit der Menge der Zust nde in denen sie gelten zu identifiziert und Konjuktionen Disjunktionen und Komplementbildung auf Mengenoperationen bertr gt Die Temporaloperatoren wer den durch die Auswertung monoton
327. tliche Projektarbeit erforderlich war Allerdings erm glichte dies die Auswahl beson ders geeigneter oder interessanter Gebiete und verhinderte eine zu fr he Beschr nkung auf wenige Themenkreise die sich sp ter als inad quat h tte erweisen k nnen Nach Abschluss der Seminarphase wurde ziemlich schnell deutlich dass die PG eine kom plette Eigenentwicklung anstrebte Da sie sich damit ein ehrgeiziges Ziel gesetzt hatte ist im ersten Semester zun chst ein minimales aber vollst ndiges System implementiert worden das nur einen Automatentypen und ein Analyseverfahren sowie einen geeigneten Parser und eine grafische Oberfl che enth lt Es ging in erster Linie darum ein Gef hl f r die Problemstellung zu bekommen aber bereits hier wurde auch ein Augenmerk auf Erweiterbarkeit gelegt Es wurde davon ausgegangen dass die Verwirklichung des Zieles eines universellen Baukastens in einem einzigen Schritt zu kompliziert ist F r das Mi nimalprojekt fiel die Wahl auf ein auf endlichen Automaten basierendes Verfahren zur Erf llbarkeitsanalyse von Formeln der Presburger Logik Im Weiteren sollte sich dann herausstellen wie flexibel und erweiterbar dieses erste Konzept bereits ist Die PG rech nete damit dass das System sicherlich als Basis f r die weitere Entwicklung dienen kann auch wenn die gew nschte Flexibilit t und Erweiterbarkeit erst noch unter Beweis gestellt werden musste Eine komplette vorliegende L sung sollte analysiert und in F
328. ton Klasse erm glicht Hierzu muss die flag mittels setAllowEmptyTransitions false ge setzt werden Dies kann auch durch die Wahl eines geeigneten Konstruktors des endlichen Automaten geschehen W hrend Automaton emptyTransitionsAllowed false ist wird jede hinzu gef gte e Transition durch normale Transitionen ersetzt und ggf werden weitere Zust nde auf akzeptierend gesetzt Beim Setzen der flag werden bestehende e Transitionen auf gel st es wird die Methode removeEpsilonTransitions implizit aufgerufen in der alle e Transitionen resp leeren Transitionen aufgel st werden Der Automat wird dabei Wie in 3 2 1 2 beschrieben wird ein Transition Objekt mit leerem Trigger erzeugt 3 2 AUTOMATEN 111 allerdings nicht deterministisch gemacht da sich die Trigger zweier ausgehender Tran sitionen des selben Zustands weiterhin berlappen k nnen und mehrere Startzust nde unber cksichtigt bleiben siehe hierzu Abschnitt 3 2 1 7 6 Determinisierung Es stehen folgende Methoden der Klasse FiniteAutomaton zur Erstellung von e Transi tionen zur Verf gung e addAndSubstituteEpsilonTransition State from State to l st die ein zuf gende e Transition sofort auf d h die Methode erstellt f r jede ausgehende Transition des Zielzustands to eine Transition vom Startzustand from mit dem selben Ziel und dem gleichen Trigger e addEpsilonTransition State from State to f gt in Abh ngigkeit der empty TransitionsAllow
329. ts bei der Analyse der Presburger Arithmetik der Fall war Um die Menge von Bitvektoren darzustellen die eine Transition zwischen zwei Zust nden ausl sen k nnen war es zwingend notwendig diese Menge in Intervalle zu zerlegen und die Transition f r jedes dieser Intervalle mit einer entsprechenden SymbolRange zu markieren In der zweiten Projektphase sollen Automaten dazu benutzt werden unerw nschte Be rechnungspfade von Transitionssystemen darzustellen vgl dazu Abschnitt 3 1 3 auf Seite 86 Die Transitionen solcher Automaten sind mit Mengen von Mengen atomarer Propo sitionen markiert die intern als Mengen von Bitvektoren dargestellt werden sollen Es ist nicht zu erwarten dass die dabei auftretenden Bitvektormengen sich in wenige Intervalle zerlegen lassen Angemessener ist es eine solche Menge durch ihre charakteristische Funk tion anzugeben Zur Darstellung von Booleschen Funktionen haben sich ordered binary decision diagrams OBDDs bew hrt vgl dazu Abschnitt 3 2 4 auf Seite 131 Diese Datenstruktur wurde in der zweiten Projektphase als alternative Darstellung von Sym bolmengen implementiert Diese Darstellung ist der alten intervallorientierten nicht diametral entgegengesetzt Vielmehr erkennt man Gemeinsamkeiten In beiden F llen werden Mengen dargestellt die sich vereinigen schneiden und komplementieren lassen Bei OBDDs wird das durch Syn thesen vgl 3 2 4 3 auf Seite 134 bzw Komplementbildungen vg
330. tyPanel des Workspaces unten links 3 7 8 2 6 Beabeiten von Transitionen Transitionen werden ber das PropertyPa nel des Workspaces bearbeitet Abbildung 3 57 zeigt einen solchen Vorgang Das an gezeigt Panel ist abh ngig vom Automaten und Transitionstyp Das in der genannten Abbildung gezeigte Panel ist jedoch die Standardversion zum Bearbeiten von Transitio nen mit Symbol Intervallen ber die Checkbox epsilon kann eingestellt werden ob die markierte Transition auch einen Epsilon bergang haben soll In der Tabelle darunter k nnen Intervalle von Symbolen erstellt und bearbeitet werden Das Erstellen und Ent fernen geschieht ber die beiden Schaltfl chen Add und Remove Das Start und das Endsymbol eines Intervalles kann direkt in der Tabelle bearbeitet werden Dazu muss ein fach die entsprechende Tabellenzelle angeklickt werden Anschlie end kann man ber die Tastatur Ver nderungen durchf hren die durch Dr cken der ENTER Taste umgesetzt werden Die entsprechende Darstellung im Editor wird dabei sofort aktualisiert 3 7 9 Plugins Der Triple A Workspace erh lt seine Funktionalit t durch installierte Plugins Ein g ltiges Plugin befindet sich in einem Unterverzeichnis des Pluginverzeichnisses Folgende Plugins sind bereits vorinstalliert 3 7 HANDBUCH 227 3 7 9 1 Finite Automaton Plugin Dieses Plugin ist ein einfaches Plugin f r endlich
331. uge 2 5 1 ABC and Friends In einer Welt in der immer mehr Aufgaben mit Rechnerunterst tzung bew ltigt werden und in der es daher einen gro en Bedarf an Programmen gibt w re es w nschenswert dass man neben den eigentlichen Programmierexperten von denen es nicht genug gibt noch andere Gruppen an der Entwicklung von Programmen beteiligen k nnte Diese Beteiligung muss auf einer hohen Ebene stattfinden auf der Implementierungsde tails ausgeblendet sind und auf der es nur um die Eigenschaften sowie das nach au en sichtbare Verhalten der zu entwickelnden Applikation geht Im Folgenden werden einige Ans tze beschrieben die eine solche programmierungsfreie Programmierung erm glichen Dabei geht es darum fertige und wiederverwendbare Pro grammeinheiten zu Applikationen zu kombinieren wobei Modelle benutzt werden die eine High Level Sicht bieten Das sind zudem Modelle die abstrakt genug sind um eine Ve rifikation des entwickelten Programms zu erm glichen 2 5 1 1 Metaframe 2 5 1 1 1 Programmierungsfreies Programmieren Das Metaframe System vgl konkretisiert die in der Einleitung motivierte programmierungsfreie Programmie rung Die wiederverwendbaren Programmeinheiten hei en building blocks BB oder ser vice independent building blocks SIB Sie bestehen aus klassischen Programmfragmenten Prozeduren Module Funktionen Klassen und werden im Metaframe System als Kno ten dargestellt
332. ugin Anwendung auf Anwendung auf Basis Basis des Automatenmodells des Automatenmodells Presburger Formeln regul re Ausdr cke Abbildung 3 33 Zusammenhang von Automaten und Analyseplugins Im Minimalfall besteht ein konkretes Plugin aus den im ersten Semester beschrieben Komponenten Es muss zum einen die Datei addon xml geben und zum anderen eine von Plugin erbende Klasse Desweiteren m ssen vom konkreten Plugin die neuen Methoden implementiert werden die im vorherigen Abschnitt angesprochen worden sind Da es nun keine Driverplugins mehr gibt muss sich das Plugin darum k mmern die automatenspezifischen Operationen mit Hilfe des GenericOperationDriver aus der Au tomatenbibliothek auszulesen und diese in den Men s anzuzeigen Das Plugin hat daf r beste Voraussetzungen da es ber die Methoden framesSelected List lt InnerFrame gt selectedFrames und framesDeselected List lt InnerFrame gt selectedFrames im mer genau informiert wird welche und wieviele Automaten markiert sind So kann das Plugin gezielt auf die Situation eingehen und die Men s f llen Wo liegt nun der Vorteil eines Pluginkonzeptes in dem sich jedes Plugin selber um die Au 190 KAPITEL 3 GRUPPENERGEBNISSE tomatenoperation k mmern muss was im ersten Semester noch die Aufgabe von speziellen Driver Plugins war Dieser Vorteil wird erst klar wenn man die Plugins feiner struktu riert Sowohl das PresburgerPlugin als auch das R
333. und API zur Erstellung und Bearbeitung von Flussgraphen so dass wann immer eine solche Funktio nalit t ben tigt wird ein Einsatz von ABC erwogen werden sollte insbesondere dann wenn sich abzeichnet dass bei diesem Einsatz von anderen ABC Benutzern wiederver wendbare Resultate entstehen 2 5 2 Das Eclipse Project Das Ziel des Eclipse Project ist es eine offene Entwicklungs und Anwendungsplattform zu entwickeln und zur Verf gung zu stellen Offen steht hier einerseits f r einen vielseitigen Einsatzbereich aber haupts chlich auch f r die Tatsache dass es sich beim Eclipse Project um ein Open Source Produkt handelt gEEEEEEEEEEEEEEEBEEEEEEEEEEEEEEEEEEEEEEEEEREEEEENEEEENENW E Another Eclipse Tool Java Workbench Development Tools JDT Plug in Development Environment PDE Ir Eclipse Project ta Abbildung 2 10 berblick ber das Eclipse Project siehe auch 2 5 2 1 Lizenzmodell Das Eclipse Project wird vom Konsortium Eclipse Foundation unter der Common Public License herausgegeben Gegenw rtig wechselt das Projekt auf die Eclipse Public Licen se was jedoch inhaltlich keinen Unterschied bedeutet Der Sourcecode ist ohne Lizenz geb hren erh ltlich und kann frei verteilt und auch kommerziell genutzt werden Lediglich der Eclipse Code selbst und auch alle Modifikationen daran m ssen auch bei kommer zieller Weiterverwendung frei erh ltl
334. ung von Automaten Vergleich von Automaten Konvertieren eines NFA Automaten in einen DFA Automaten 62 KAPITEL 2 SEMINARPHASE Fazit Auf der einen Seite hat JFlap eine Menge Vorteile Zum einen ist die Bibliothek sehr umfangreich und implementiert eine Menge weiterer Konstrukte wie PDAs und Grammatiken So ist es zum Beispiel m glich sich zu einem gegeben Automaten eine Grammatik erzeugen zu lassen Au erdem wird immer noch an JFlap weiterentwickelt und es ist bereits eine Java 1 5 Version verf gbar JFlap bietet einen guten Editor f r den die Bibliothek prim r entwickelt wurde Dieser Editor ist aber auch bzgl der flexiblen Nutzung da es keine Trennung zwischen Modell und View gibt sein gr ter Nachteil Dieses kann man gut an den Zust nden sehen Im Konstruktor eines Zustandes muss eine Position angegeben werden Auf dieser kann er dann im Editor angezeigt werden Ein kleiner Nachteil ist die Un bersichtlichkeit der Programmierung 2 4 2 6 Fazit Diese Recherchen zeigen dass sich das Engagement gro teils um DFA NFA Automatenbibliotheken dreht Andere Automatenimplementationen wie B chi oder Baumautomaten sind nicht zu finden Von allen Bibliotheken ist dk brics automaton die am besten umgesetzte und k nnte als Basis einer Eigenentwicklung oder Weiterentwick lung genutzt werden JFlap und JRexx k nnten f r eine GUI interessant sein um Ideen f r eine grafische Umsetzung zu sammeln 2 5 WERKZEUGE 63 2 5 Werkze
335. urch An und Ausklicken von Bits editiert werden und nicht wie im generischen Dialog der Fall durch Eingabe von 0 1 Strings 3 6 3 4 Klasse AutomatonEditorPanel Diese Klasse erbt von PaintableContainerPanel siehe auch 3 35 und stellt somit die Hauptverbindung zum Paintable Framework dar Anstelle von Paintable Objekten wird hier einfach ein PaintableAutomaton Objekt dem Panel hinzugef gt Die einzelnen Komponenten Zust nde und Transitionen werden dann ausgepackt und angezeigt Weitere wesentliche Funktionen des AutomatonEditorPanel sind die Editier Funktionen f r Automaten Per Rechtsklick auf die Editorfl che lassen sich neue Zust nde hinzuf gen Das Erzeugen von Kanten geschieht durch Drag amp Drop mit gedr ckter STRG Taste Man kann auf diese Art dann ganz einfach eine Kante von einem Zustand zu einem weiteren ziehen Details sind im Abschnitt 3 6 3 6 aufgef hrt Properties automaton Property Value states init st acc st transitions empty transitions deterministic false empty false alphabet CharacterAlphabet alphabet size 65536 Om Hn w Abbildung 3 40 Anzeige von allgemeinen Automaten Informationen im Workspace Im Zuge der Integration in den Workspace tibernahm das AutomatonEditorPanel auch die Anzeige von allgemeinen Automaten Information im Property Panel des Workspace Dies ist insbesondere bei solchen Automaten sinnvoll di
336. urzel 2 1 2 1 1 NFTA Nondeterministic Finite Tree Automata Die Menge T F x von Termen ber dem geordneten Alphabet F und der Menge x von Variablen ist die kleinste Menge die definiert ist durch Fo C T F x Ax C T F x und wenn p gt 1A f E F Ati tp T F x dann ist f ti tp T F x mit Fo den 0 stelligen Zeichen d h Konstanten und Fp den p stelligen Zeichen Wenn x leer ist dann schreibt man auch T F Terme aus T F hei en Grundterme Ein nichtdeterministischer endlicher Baumautomat ber einem endlichen Alphabet F ist ein Tupel A Q F Qf A wobei Q eine Menge von Zust nden Qs C Q eine Menge von akzeptierenden Zust nden x die Menge von Variablen und A eine Menge von Zu stands bergangsfunktionen von folgendem Typ ist f m 21 5 In n gt a F 21 En wobei n gt 0 f Fn mit F den n stelligen Funk tionen q qi qn E Q 1 Zn E X 2 1 2 1 1 1 Move Relation Um herauszufinden ob ein Term von einem Baumauto maten akzeptiert wird kann man Zust nde in einen Baum ber den Bl ttern einf gen die man dann immer weiter nach oben verschiebt und aktualisiert Ein Term Baum wird dann akzeptiert wenn sich zum Schluss an der Wurzel ein akzeptierender Zustand befindet Definition Sei A Q F Qf A ein NTFA ber F Die Move Relation A ist definiert durch seien t t T FUQ mit t A Y Es existiert eine Substitution so dass t gem der Regeln aus A zu t substituiert
337. werden kann A A Wir schreiben wenn wir endlich oft anwenden Beispiel Sei F and not 0 Wir betrachten den Automaten A Q F Qf A definiert durch Q 190 1 Qf q und A 0 gt 0 not qi x gt qo not x not qo x gt q not z U and qi x a y gt a and x y 18 KAPITEL 2 SEMINARPHASE E amp OO OO O O M OO 00 00 00 060 00 OO 00 2 1 2 1 1 2 Lauf Man kann auch anders als durch die Move Relation herausfinden ob ein Term von einem Baumautomaten akzeptiert wird Anstatt Zust nde in den Baum einzuf gen und sie dann zu verschieben kann man auch von den Bl ttern angefangen jeden Teilterm oder jede Konstante aus einem Knoten auf einen Zustand abbilden Definition Sei t ein Grundterm und A ein NTFA Ein Lauf r auf A ber t ist eine Abbildung r Pos t Q wobei Pos t die Position von t bezeichnet welches sowohl eine Konstante als auch eine mehrstellige Funktion sein kann passend zu A Der NTFA beginnt an den Bl ttern und bewegt sich nach oben wobei er entlang seines Weges jede Position des Terms die er bei einem Knoten findet auf einen Zustand abbildet bis zur Wurzel Der Baum bzw der Term wird akzeptiert wenn nach dem Lauf an der Wurzel ein akzeptierender Zustand steht Beispiel Sei F or and not 0 1 Wir betrachten den Automaten A Q F Q y A definiert durch Q 41 Qr q und A 0
338. xibel sind Dazu geh rt dass sie mit universellen Formaten umgehen k nnen Eine Interaktion mit schon vorhandenen System ist w nschenswert 3 2 1 8 1 XML F r viele Anwendungen reicht es nicht aus dass Automaten nur tem por r existieren es ist h ufig notwendig sie weiterzuverarbeiten oder sie auf einem Se kund rspeicher persistent zu machen F r diese beiden Zwecke steht die M glichkeit zur Verf gung zu einem Automaten eine XML Repr sentation zu berechnen Diese kann in Form eines org w3c dom Document Objektes entweder direkt weiterverarbeitet oder als Textdatei gespeichert werden Die dabei entstehenden Ergebnisse sollen m glichst redundanzfrei aber noch von Men schen lesbar sein Daher wurde keine Standardl sung gew hlt sondern ein eigener Weg beschritten Die wichtigste Idee dabei ist Objekte als Teil XML B ume darzustellen wo bei einfache Attribute eines Objekts z B vom Typ String oder int als Attribute des Wurzelknoten modelliert werden und komplexere member Objekte bzw Sammlungen da von als Unterb ume repr sentiert werden Diese L sung ist keine allgemeine sondern wurde nur f r Objekte erdacht die Teile von Automaten sind Zust nde Transitionen ec F r ein Objekt das auf diese Weise dargestellt werden soll muss eine Converter Implementierung zur Verf gung stehen siehe Abbildung 3 8 Converter ist eine ab 120 KAPITEL 3 GRUPPENERGEBNISSE Abbildung 3 8 Die ab
339. zend zum gleichnamigen Abschnitt des ersten Semesters beschrieben siehe Abschnitt 3 4 3 Einzig das Pluginkonzept erh lt einen neuen Abschnitt 3 5 3 1 Workspace WorkspaceControl Der Klasse WorkspaceControl sind neue statische Methoden hin zugef gt worden SaveAction Diese Aktion startet einen Prozess der alle markierten Automaten an einer ausgew hlten Stelle im XML Format speichert Die dazugeh rige Akti on in der Klasse WorkspaceControl ist eine Art Starter dieser Funktion In der WorkspaceControl wird ber einen FileDialog ein Zielpfad und ein Ziel dateiname ausgew hlt Diese Kombination wird an den Pluginmanager durch Aufruf der Methode pluginManager saveWorkspace Pfad Dateinname bergeben Der Pluginmanager k mmert sich im Weiteren darum dass die markierten Automaten dort gespeichert werden LoadAction Analog zur SaveAction kann ber einen FileDialog eine XML Datei gew hlt werden Diese wird an den Pluginmanager bergeben der den Inhalt wiederherstellt Das ganze passiert ber den Aufruf der Methode pluginManager loadFromDisk Pfad Dateinname WorkspaceMenu Eine neue Schnittstelle wurde in dieser Klasse implementiert So k nnen ber die Methode addAnalysisMenultem JMenultem item Analyseaktio nen dem Workspace dynamisch hinzugef gt werden WorkspaceToolBar Die Toolbar wurde aus dem Projekt entfernt da alle wichtigen Aktionen bereits im WorkspaceMenu untergebracht sind und eine selektive Anzeige
340. zlich mit Funktionen zum L schen und Kopieren des Konsoleninhalts ausgestattet So k nnen wichtige Inhalte einfach und schnell exportiert werden 3 4 DER WORKSPACE STAND FEBRUAR 2006 167 Triple A Workspace Ld 01x File Action Preferences SG Automaton 9 EI NFA D new Presburger 6 new Presburger automaton E new Presburger Source Automaton ann y rand Frucht Reing Automatenliste y 2 z y 2 z x y 2 z ll a Abbildung 3 25 Triple A Workspace 3 4 3 Features der Implementation An dieser Stelle gehen wir auf die Implementation des Workspace ein und beleuchten die Hintergr nde und ggf aufgetretene Probleme und deren L sungen Das Ziel dieses Abschnittes ist es den Leser in die Lage zu versetzen unter Zuhilfenahme des Codes die Workspace Implementation und seine Hintergr nde zu verstehen 3 4 3 1 Der Workspace Abbildung 3 26 zeigt ein abstraktes Klassendiagramm des Workspace Dieses Schaubild ist nicht vollst ndig um es bersichtlich zu halten Es enth lt aber alle nennenswerten Hauptkomponenten des Workspace deren Funktionen im Weiteren kurz erl utert werden Einige Punkte werden auch sp ter in diesem Abschnitt noch einmal aufgegriffen um deren Funktionalit t genauer zu erl utern WorkspaceControl Die Klasse WorkspaceControl bildet die zentrale Kontrollin stanz des Worksp
341. zu lassen und diese farblich im PaintableAutomaton hervorzuheben Wegen Unterschieden in den Alphabeten gibt es hier eine Klasse f r das CharacterAlphabet und eine f r das AssignmentAlphabet Beide Klassen erm glichen eine komfortable Eingabem glichkeit Beim CharacterAlphabet reicht ein einfaches JTextField bei AssignmentAlphabet steht eine Tabelle mit den einzelnen Variableneintr gen zur Verf gung Der Run wird von der Automatenklasse FiniteRun unterst tzt so kann man einen schritt weisen Lauf durch die Eingabe durchf hren Das Einf rben des Automaten wird auch hier ber Schnittstellen der Klasse FiniteAutomatonColorizer durchgef hrt 3 5 5 7 1 Package aaa workspace plugin presburgerplugin und Package aaa workspace plugin regularexpressionplugin Durch die Vererbungsstruktur unter scheiden sich nur noch die Transformation und die dabei entstehenden Daten vom FiniteAutomatonPlugin Unterschiede treten an drei Stellen auf e Selbstverst ndlich unterscheiden sich die Aktionen CreateAutomatonAction und NewAutomatonAction weil hier jeweils ein Eingabetab ben tigt wird und beim Er zeugen eines neuen Automaten unterschiedliche Transformationen angesto en wer den m ssen e Durch das neue Sourcetab muss der Pluginserializer angepasst werden so dass dieser auch das Sourcetab mitspeichert e Die Plugindata wird um einen Source Eintrag erweitert weil wir dort zentral alle Daten sammeln 3 5 5 8 Plugin bersicht Der
Download Pdf Manuals
Related Search
Endbericht endbericht endbericht terraboga endbericht berliner mietspiegel 2024 endbericht evaluation anerkennungsgesetz
Related Contents
USER MANUAL TRAINING CENTRES Da-Lite 34562L projection screen Bedienungsanleitung Dynacode II - carl Installing Ocularis Base Eaton EX 2200 RT3U HotSwap HW SAL500F40G PDF manual - Ocean Drilling Program Phonix S7505TFF mobile phone case Copyright © All rights reserved.
Failed to retrieve file