This document was typeset on August 11, 2023 at 16:10 using the typographical lookand-feel classicthesis developed by André Miede, available at https://bitbucket.org/amiede/classicthesis/ 15 2.3 A Streamlined Semantics 19 2.3.1 Metafunctions 21 2.3.2 A Note on the Relationship Between the Semantics 22 3 Structural Types for Dataspace Actors 23 3.1 Types, Informally 23 3.1.1 Typing the Chat Room 30 3.1.2 Revisiting the Arithmetic Service 32 3.2 Actors, Types, Formally 33 3.2.1 λ ds Reduction Metafunctions 35 3.2.2 Types for Dataspaces and Actors 38 3.2.3 Static Semantics 39 3.2.4 Meta-Theorems 47 3.3 Completing the Model 48 3.3.1 Meta-Theorems 50 3.4 Implementation 53 3.5 Assessment 55 3.6 Related Work 56 4 Facets for Actors that Share State 59 4.1 Facets, Informally 59 4.1.1 Derived Forms 64 4.1.2 The Synergy of Facets 66 4.2 Facets, Formally 67 4.2.1 Formal Syntax 67 4.2.2 Semantics 70 4.2.3 Metafunctions 74 4.2.4 Machine Transition Example 79 vii 4.2.5 Dataspace Programs 82 4.3 Type Checking Facets 83 4.3.1 Auxiliary Definitions 85 4.3.2 Machine Typing 87 4.4 Properties 89 4.5 Related Work 92 5 Behavioral Types for Faceted Actors 95 5.1 Overview 95 5.1.1 Basic Types 95 5.1.2 Specification 95 5.1.3 Effect Types for Facets 97 5.1.4 Checking Specifications Mechanically 98 5.1.5 Revisiting the Smart-Home Example 99 5.2 Type Level Semantics 100 5.2.1 Machine Types and Type-level Machines 103 5.2.2 Type-level Dataspaces 107 5.3 Meta-Theorems 107 5.4 Implementation 113 5.4.1 Implementing the Behavior of Facet-Oriented Actors 113 5.4.2 Implementing the Type Checker 114 5.4.3 Implementing the Model Checker Translation 120 5.4.4 Type-Varying Assertions 125 5.5 Evaluation 126 5.5.1 Corpus 127 5.5.2 Deadlock Freedom 132 5.5.3 Classifications 134 5.5.4 Results 136 5.5.5 Interpretation and Discussion 139 5.5.6 Threats to Validity 141 5.6 Related Work 141 6 Conclusion 145 6.1 Future Work 145 6.2 Conclusion 149 viii