Domain-Specific Languages for Modeling and Simulation
Total Page:16
File Type:pdf, Size:1020Kb
Domain-specifc Languages for Modeling and Simulation Dissertation zur Erlangung des akademischen Grades Doktor-Ingenieur (Dr.-Ing.) der Fakultät für Informatik und Elektrotechnik der Universität Rostock vorgelegt von Tom Warnke, geb. am 25.01.1988 in Malchin aus Rostock Rostock, 14. September 2020 https://doi.org/10.18453/rosdok_id00002966 Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz. Gutachter: Prof. Dr. Adelinde M. Uhrmacher (Universität Rostock) Prof. Rocco De Nicola (IMT Lucca) Prof. Hans Vangheluwe (Universität Antwerpen) Eingereicht am 14. September 2020 Verteidigt am 8. Januar 2021 Abstract Simulation models and simulation experiments are increasingly complex. One way to handle this complexity is developing software languages tailored to specifc application domains, so-called domain-specifc languages (DSLs). This thesis explores the potential of employing DSLs in modeling and simulation. We study diferent DSL design and implementation techniques and illustrate their benefts for expressing simulation models as well as simulation experiments with several examples. Regarding simulation models, we focus on discrete-event models based on continuous- time Markov chains (CTMCs). Most of our work revolves around ML-Rules, an rule-based modeling language for biochemical reaction networks. First, we relate the expressive power of ML-Rules to other currently available modeling languages for this application domain. Then we defne the abstract syntax and operational semantics for ML-Rules, mapping models to CTMCs in an unambiguous and precise way. Based on the formal defnitions, we present two approaches to implement ML-Rules as a DSL. The core of both implementations is fnding the matches for the patterns on the left side of ML-Rules’ rules. The frst approach makes use of ideas from functional programming and realizes ML-Rules as an internal DSL embedded in Scala. The second approach utilizes the language workbench Xtext and object-oriented programming to implement ML-Rules as an external DSL. We relate both approaches to each other and discuss their specifc trade-ofs, for example regarding computational efciency. In addition, we demonstrate how DSL implementation techniques can be employed to integrate CTMC-based modeling into Repast Simphony, a software framework for agent-based simulation. Simulation experiments beneft from DSLs in a diferent way than simulation models. Here, we focus on more technical issues like repeatability, replicability, reproducibility, and reusability of experiments. The utility of DSLs for expressing simulation experiments is illustrated based on two diferent DSL implementations. First, we discuss SESSL, an object-oriented Scala-based internal DSL, highlighting diverse ways in which DSLs can support efective simulation experimentation. Based on the ideas of SESSL, we also present a Scala-based internal DSL that is implemented in a purely functional fashion, and discuss the implications. i Zusammenfassung Simulationsmodelle und -experimente werden immer komplexer. Eine Möglichkeit, dieser Komplexität zu begegnen, ist, auf bestimmte Anwendungsgebiete spezialisierte Software- sprachen, sogenannte domänenspezifsche Sprachen (DSLs, domain-specifc languages), zu entwickeln. Die vorliegende Arbeit untersucht, wie DSLs in der Modellierung und Simula- tion eingesetzt werden können. Wir betrachten verschiedene Techniken für Entwicklung und Implementierung von DSLs und illustrieren ihren Nutzen für das Ausdrücken von Simulationsmodellen und -experimenten anhand einiger Beispiele. In Bezug auf Simulationsmodelle konzentrieren wir uns auf diskret-ereignisbasiert Mod- elle, die auf Markow-Ketten mit kontinuierlicher Zeitbasis (CTMCs, continuous-time Markov chains) basieren. Der größte Teil dieses Abschnitts dreht sich um die regelbasierte Modellierungssprache für biochemische Reaktionsnetze ML-Rules. Als Ausgangspunkt set- zen wir die Ausdruckskraft von ML-Rules mit anderen verfügbaren Modellierungssprachen in diesem Anwendungsgebiet in Beziehung. Im Anschluss defnieren wir die abstrakte Syntax und formale Semantik von ML-Rules, wodurch eine eindeutige Abbildung von Modellen auf CTMCs hergestellt wird. Auf Grundlage dieser formalen Defnitionen stellen wir zwei Ansätze zur Implementierung von ML-Rules in einer DSL vor. Der Kern beider Implementierungen ist das Finden der Vorkommen der Muster auf den linken Regelseiten von ML-Rules. Der erste Ansatz nutzt Ideen aus der funktionalen Programmierung und setzt ML-Rules als interne DSL in Scala um. Der zweite Ansatz nutzt die language workbench Xtext und objekt-orientiere Programmierung, um ML-Rules als externe DSL umzusetzen. Wir stellen beide Ansätze nebeneinander und diskutieren die spezifschen Trade-ofs, zum Beispiel in Bezug auf Rechenefzienz. Des Weiteren demonstrieren wir, wie CTMC-basierte Modellierung mit Hilfe von DSL-Implementierungstechniken in Repast Simphony, ein Framework für agentenbasierte Simulation, integriert werden kann. Simulationsexperiment proftieren auf andere Weise als Simulationsmodelle von der Nutzung von DSLs. Hier konzentrieren wir uns auf technischere Aspekte wie Wieder- holbarkeit, Replizierbarkeit, Reproduzierbarkeit und Wiederverwendbarkeit von Experi- menten. Der Nutzen von DSLs für das Ausdrücken von Simulationsexperimenten wird mit Hilfe zweier DSl-Implementierungen gezeigt. Zunächst behandeln wir SESSL, eine objektorientierte Scala-basierte interne DSL, wobei wir hervorheben, wie die Nutzung von DSLs das efektive Durchführen von Simulationsexperimenten unterstützt. Aufbauend auf den Ideen hinter SESSL stellen wir dann eine Scala-basierte interne DSL vor, die auf rein funktionale Art implementiert ist, und diskutieren die Implikationen. iii Acknowledgements I would have never fnished this thesis without the support and assistance of many people. First and foremost, I want to thank my supervisor Prof. Lin Uhrmacher. With her knowledge and inspiring enthusiasm, she always had the right advice to help me overcome any obstacle on my way to a fnished thesis. I would like to thank my colleagues for their constructive feedback and cooperation. It was invaluable to always have someone to bounce ideas of, and I think much of this thesis is the direct result of the great work atmosphere in the modeling and simulation group. I am grateful to Tobias for introducing me to ML-Rules and to Roland for his work on SESSL. I want to thank my parents and my sister for their unshakable support. Most importantly, I am grateful to Anna for her patience and for always believing in me. v Contents 1. Introduction 1 1.1. Languages for handling complexity .................... 2 1.2. Terminology ................................. 3 1.3. Contributions ................................ 3 1.4. Outline ................................... 4 1.5. Bibliographical Note ............................ 5 2. Domain-specifc Languages 9 2.1. General-purpose and domain-specifc languages ............. 9 2.2. Concrete syntax ............................... 11 2.2.1. Formal language theory ...................... 11 2.2.2. Parser generators .......................... 13 2.2.3. Parser combinators ......................... 14 2.2.4. Fluent interfaces .......................... 15 2.3. Abstract syntax ............................... 16 2.3.1. Abstract syntax trees and abstract syntax graphs . 16 2.3.2. Metamodels and language workbenches . 17 2.3.3. Deep and shallow embeddings in functional languages . 19 2.4. Semantics .................................. 21 2.4.1. Interpretation and Compilation . 22 2.4.2. Type systems and static analysis . 23 2.4.3. Formal semantics .......................... 24 2.5. Designing and implementing domain-specifc languages . 26 2.5.1. External DSLs ........................... 26 2.5.2. Internal DSLs ............................ 28 2.5.3. Expressive power .......................... 29 2.6. Summary .................................. 30 3. Modeling population processes 33 3.1. Continuous-time Markov chains ...................... 33 3.1.1. Intuition ............................... 33 3.1.2. Formal defnition .......................... 34 3.1.3. Balance analysis .......................... 35 3.1.4. Stochastic simulation algorithms . 36 3.2. Markov Population Models ........................ 37 3.2.1. Modeling formalisms ........................ 39 3.2.2. Next Reaction Method ....................... 39 vii Contents 3.2.3. ODE approximation ........................ 41 3.3. Biochemical reaction networks as population processes . 43 3.3.1. Calculating the reaction rate ................... 45 3.3.2. Relating rate interpretations .................... 47 3.4. Summary .................................. 48 4. ML-Rules and Biochemical Reaction Networks 49 4.1. Modeling biochemical reaction networks with ML-Rules . 49 4.1.1. Reaction-based modeling ...................... 49 4.1.2. Attributed entities and rule-based modeling . 50 4.1.3. Static and dynamic compartments . 52 4.1.4. User-defned functions and functions on solutions . 53 4.1.5. Deterministic events ........................ 54 4.1.6. Modularization ........................... 54 4.2. Other Modeling Languages for Biochemical Reaction Networks . 54 4.2.1. Antimony .............................. 55 4.2.2. BNGL ................................ 55 4.2.3. The κ-calculus ........................... 55 4.2.4. PySB ................................ 56 4.2.5. Chromar ............................... 56 4.2.6. ` ..................................