Programming Languages and Systems 28th European Symposium on Programming, ESOP 2019, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2019, Prague, Czech Republic, April 6-11, 2019, Proceedings
Uloženo v:
| Hlavní autor: | |
|---|---|
| Médium: | E-kniha Kniha |
| Jazyk: | angličtina |
| Vydáno: |
Cham
Springer Nature
2019
Springer Springer International Publishing AG |
| Vydání: | 1 |
| Témata: | |
| ISBN: | 9783030171841, 3030171841, 9783030171834, 3030171833 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
Obsah:
- Intro -- ETAPS Foreword -- Preface -- Organization -- From Quadcopters to Helicopters: Formal Verification to Eliminate Exploitable Bugs (Abstract of Invited Talk) -- Contents -- Program Verification -- Time Credits and Time Receipts in Iris -- 1 Introduction -- 2 A User's Overview of Time Credits and Time Receipts -- 2.1 Time Credits -- 2.2 Time Receipts -- 3 HeapLang and the Tick Translation -- 4 Iris with Time Credits -- 5 Iris with Time Receipts -- 6 Marrying Time Credits and Time Receipts -- 7 Application: Thunks in Iris-with-Time-Credits -- 7.1 Concurrency and Reentrancy -- 7.2 Implementation of Thunks -- 7.3 Specification of Thunks in Iris-with-Time-Credits -- 7.4 Proof of Thunks in Iris-with-Time-Credits -- 8 Application: Union-Find in Iris -- 9 Discussion -- 10 Related Work -- 11 Conclusion -- References -- Meta-F: Proof Automation with SMT, Tactics, and Metaprograms -- 1 Introduction -- 2 Meta-F by Example -- 2.1 Tactics for Individual Assertions and Partial Canonicalization -- 2.2 Tactics for Entire VCs and Separation Logic -- 2.3 Metaprogramming Verified Low-Level Parsers and Serializers -- 3 The Design of Meta-F -- 3.1 An Effect for Metaprogramming -- 3.2 Executing Meta-F Metaprograms -- 3.3 Syntax Inspection, Generation, and Quotation -- 3.4 Specifying and Verifying Metaprograms -- 4 Meta-F, Formally -- 4.1 Correctness and Trusted Computing Base (TCB) -- 4.2 Extracting Individual Assertions -- 5 Executing Metaprograms Efficiently -- 5.1 CBN and CBV Strong Reductions -- 5.2 Native Plugins and Multi-language Interoperability -- 6 Experimental Evaluation -- 6.1 A Reflective Tactic for Partial Canonicalization -- 6.2 Combining SMT and Tactics for the Parser Generator -- 7 Related Work -- 8 Conclusions -- References -- Semi-automated Reasoning About Non-determinism in C Expressions -- 1 Introduction
- 7 A New Fundamental Theorem for Call-by-Need
- 2 lMC: A Monadic Definitional Semantics of C -- 2.1 The Source Language lMC -- 2.2 The Target Language HeapLang -- 2.3 The Monadic Definitional Semantics of lMC -- 3 Separation Logic with Weakest Preconditions for lMC -- 4 Soundness of Weakest Preconditions for lMC -- 4.1 Weakest Preconditions for HeapLang -- 4.2 Weakest Preconditions for Monadic Expressions -- 4.3 Modeling the Heap -- 4.4 Deriving the lMC Rules -- 5 A Symbolic Executor for lMC -- 5.1 Rules for Symbolic Execution -- 5.2 An Algorithm for Symbolic Execution -- 6 A Verification Condition Generator for lMC -- 7 Discussion -- 8 Related Work -- References -- Safe Deferred Memory Reclamation with Types -- 1 Introduction -- 2 Background and Motivation -- 3 Semantics -- 4 Type System and Programming Language -- 4.1 RCU Type System for Write Critical Section -- 4.2 Types in Action -- 4.3 Type Rules -- 5 Evaluation -- 6 Soundness -- 6.1 Proof -- 7 Discussion and Related Work -- 8 Conclusions -- References -- Language Design -- Codata in Action -- 1 Introduction -- 2 The Many Faces of Codata -- 2.1 Church Encodings and Object-Oriented Programming -- 2.2 Demand-Driven Programming -- 2.3 Abstraction Mechanism -- 2.4 Representing Pre- and Post-Conditions -- 3 Inter-compilation of Core Calculi -- 3.1 Syntax and Semantics -- 3.2 Compiling Data to Codata: The Visitor Pattern -- 3.3 Compiling Codata to Data: Tabulation -- 3.4 Correctness -- 3.5 Call-by-Value: Correcting the Evaluation Order -- 3.6 Indexed Data and Codata Types: Type Equalities -- 4 Compilation in Practice -- 5 Related Work -- 6 Conclusion -- References -- Composing Bidirectional Programs Monadically -- 1 Introduction -- 1.1 Further Examples of BX -- 2 Monadic Bidirectional Programming -- 2.1 Monadic Biparsers -- 3 A Unifying Structure: Monadic Profunctors -- 3.1 Constructing Monadic Profunctors
- 3.2 Deriving Biparsers as Monadic Profunctor Pairs -- 4 Reasoning about Bidirectionality -- 4.1 Compositional Properties of Monadic Bidirectional Programming -- 4.2 Quasicompositionality for Monadic Profunctors -- 5 Monadic Bidirectional Programming for Lenses -- 6 Monadic Bidirectional Programming for Generators -- 7 Discussion and Related Work -- References -- Counters in Kappa: Semantics, Simulation, and Static Analysis -- 1 Introduction -- 2 Kappa -- 2.1 Signature -- 2.2 Site-Graphs -- 2.3 Sliding Embeddings -- 2.4 Rules -- 3 Encoding Counters -- 3.1 Encoding the Value of Counters as Unbounded Chains of Agents -- 3.2 Encoding the Value of Counters as Circular Lists of Agents -- 3.3 Correspondence -- 3.4 Benchmarks -- 4 Generic Abstraction of Reachable States -- 4.1 Collecting Semantics -- 4.2 Generic Abstraction -- 4.3 Coalescent Product -- 5 Numerical Abstraction -- 5.1 Encoding States and Preconditions -- 5.2 Encoding Rules -- 5.3 Generic Numerical Abstract Domain -- 5.4 Numerical Abstraction -- 5.5 Benchmarks -- 6 Conclusion -- References -- One Step at a Time -- 1 Introduction -- 2 Overview -- 3 Big-Step Specifications -- 3.1 Evaluator Definition Language -- 4 Transformation Steps -- 4.1 CPS Conversion -- 4.2 Generalization of Continuations -- 4.3 Argument Lifting in Continuations -- 4.4 Continuations Switch Control Directly -- 4.5 Defunctionalization -- 4.6 Remove Self-recursive Tail-Calls -- 4.7 Convert Continuations to Terms -- 4.8 Inlining, Simplification and Conversion to Direct Style -- 4.9 Removing Vacuous Continuations -- 4.10 Detour: Generating Pretty-Big-Step Semantics -- 4.11 Pretty-Printing -- 4.12 Correctness -- 5 Evaluation -- 6 Related Work -- 7 Conclusion and Future Work -- References -- Program Semantics -- Extended Call-by-Push-Value: Reasoning About Effectful Programs and Evaluation Order -- 1 Introduction
- 2 Extended Call-by-Push-Value -- 2.1 Syntax -- 2.2 Type System -- 2.3 Equational Theory -- 3 Call-by-Name and Call-by-Need -- 3.1 The Equivalence at the Object (Internal) Level -- 3.2 The Meta-level Equivalence -- 4 An Effect System for Extended Call-by-Push-Value -- 4.1 Effects -- 4.2 Effect System and Signature -- 4.3 Exploiting Effect-Dependent Equivalences -- 5 Related Work -- 6 Conclusions and Future Work -- References -- Effectful Normal Form Bisimulation -- 1 Introduction -- 2 From Applicative to Normal Form Bisimilarity -- 3 Preliminaries: Monads and Algebraic Operations -- 3.1 Algebraic Operations -- 4 A Computational Call-by-value Calculus with Algebraic Operations -- 5 Relators -- 6 Effectful Eager Normal Form (Bi)simulation -- 6.1 Congruence and Precongruence Theorems -- 6.2 Soundness for Effectful Applicative (Bi)similarity -- 6.3 Eager Normal Form (Bi)simulation Up-to Context -- 6.4 Weak Head Normal Form (Bi)simulation -- 7 Related Work -- 8 Conclusion -- References -- On the Multi-Language Construction -- 1 Introduction -- 2 Background -- 3 Combining Order-Sorted Theories -- 3.1 The Initial Term Model -- 4 Refining the Construction -- 4.1 Subsort Polymorphic Boundary Functions -- 4.2 Semantic-Only Boundary Functions -- 5 Reduction to Order-Sorted Algebra -- 6 An Example of Multi-Language Construction -- 7 Concluding Remarks -- References -- Probabilistic Programming Inference via Intensional Semantics -- 1 Introduction -- 2 Probabilistic Programming -- 2.1 Conditioning and Posterior Distribution -- 2.2 A First-Order Probabilistic Programming Language -- 2.3 Measure-Theoretic Semantics of Programs -- 2.4 Exact Inference -- 3 Approximate Inference via Intensional Semantics -- 3.1 An Introduction to Approximate Inference -- 3.2 Capturing Probabilistic Dependencies Using Event Structures -- 3.3 Runtime Values and Dataflow Graphs
- 3.4 Quantitative Dataflow Graphs -- 4 Programs as Labelled Event Structures -- 4.1 Composition of Probablistic Event Structures -- 4.2 Interpretation of Programs -- 5 An Inference Algorithm -- 5.1 A Concrete Presentation of Probabilistic Dataflow Graphs -- 5.2 Metropolis-Hastings -- 5.3 Our Proposal Kernel -- 6 Conclusion -- References -- Types -- Handling Polymorphic Algebraic Effects -- 1 Introduction -- 2 Overview -- 2.1 Monomorphic Algebraic Effects and Handlers -- 2.2 Polymorphic Algebraic Effects and Handlers -- 2.3 Problem in Naive Combination with Let-Polymorphism -- 2.4 Our Solution -- 3 Surface Language: efflet -- 3.1 Syntax -- 3.2 Type System -- 4 Intermediate Language: eff -- 4.1 Syntax -- 4.2 Semantics -- 4.3 Type System -- 4.4 Elaboration -- 4.5 Properties -- 5 Related Work -- 5.1 Polymorphic Effects and Let-Polymorphism -- 5.2 Algebraic Effects and Handlers -- 6 Conclusion -- References -- Distributive Disjoint Polymorphism for Compositional Programming -- 1 Introduction -- 2 Compositional Programming -- 2.1 A Finally Tagless Encoding in Haskell -- 2.2 The SEDEL Encoding -- 3 Semantics of the Fi+ Calculus -- 3.1 Syntax and Semantics -- 3.2 Disjointness -- 3.3 Elaboration and Type Safety -- 4 Algorithmic System and Decidability -- 4.1 Algorithmic Subtyping Rules -- 4.2 Decidability -- 5 Establishing Coherence for Fi+ -- 5.1 The Challenge -- 5.2 Impredicativity and Disjointness at Odds -- 5.3 The Canonicity Relation for Fi+ -- 5.4 Establishing Coherence -- 6 Related Work -- 7 Conclusion and Future Work -- References -- Types by Need -- 1 Introduction -- 2 Closed -Calculi -- 3 Preliminaries About Multi Types -- 4 Types by Name -- 4.1 CbN Correctness -- 4.2 CbN Completeness -- 4.3 CbN Model -- 5 Types by Value -- 5.1 CbV Correctness -- 5.2 CbV Completeness -- 6 Types by Need -- 6.1 CbNeed Correctness -- 6.2 CbNeed Completeness

