This book constitutes the refereed proceedings of the 22nd International Symposium on Practical Aspects of Declarative Languages, PADL 2020, held in New Orleans, USA, in January 2020.
The 10 full and 4 short papers were carefully reviewed and selected from 24 submissions. The papers present original work emphasizing novel applications and implementation techniques for all forms of declarative concepts, including programming with sets, functions, logic, and constraints. The papers are organized in the following topical headings: logical engines and applications; answer set programming systems; memory and real-time in functional programming; reasoning and efficient implementation; and small languages and implementation.
Author(s): Ekaterina Komendantskaya, Yanhong Annie Liu
Series: (Lecture Notes in Computer Science, 12007
Publisher: Springer
Year: 2020
Language: English
Pages: 252
City: Cham
Preface
Organization
Abstracts of Invited Talks
Logical Engines for Cloud Configurations
Symbolic Reasoning About Machine Learning Systems
Abstracts of Invited Talks for the Invited Experience and Direction Session
Relational Artificial Intelligence
Learning Interpretable Rules from Structured Data
An Introduction to the Imandra Automated Reasoning System
We Are All Poor Schmucks: On the Value of Gradual Types
Abstract for the Competitive Programming Experience Session
Competitive Programming with Picat
Contents
Logical Engines and Applications
Interactive Text Graph Mining with a Prolog-based Dialog Engine
1 Introduction
2 The Graph-Based Natural Language Processing Module
2.1 Building and Ranking the Text Graph
2.2 Pre- and Post-ranking Graph Refinements
2.3 Summary and Keyword Extraction
2.4 Relation Extraction
3 The Prolog-Based Dialog Engine
3.1 Generating Input for Post-processing by Logic Programs
3.2 The Prolog Interface
3.3 The User Interaction Loop
3.4 The Answer Generation Algorithm
3.5 Interacting with the Dialog Engine
4 Discussion
5 Related Work
6 Conclusions
References
Flexible Graph Matching and Graph Edit Distance Using Answer Set Programming
1 Introduction
2 Background
3 Specifying Graph Matching and Edit Distance
4 Correctness
5 Discussion
6 Evaluation
7 Related Work
8 Conclusions
References
On Repairing Web Services Workflows
1 Introduction
2 Web Shopping Domain
3 The Web Service Composition Problem
4 Repair
4.1 Formalization
4.2 Implementation
4.3 Experimental Evaluation
5 Conclusion, Discussion, and Future Work
References
Answer Set Programming Systems
AQuA: ASP-Based Visual Question Answering
1 Introduction
2 Background
3 Technical Approach
3.1 Preprocessor
3.2 SRE: Semantic Relations Extractor
3.3 Query Generator
3.4 Commonsense Knowledge
3.5 ASP Engine
4 Experiments and Results
5 Example
6 Discussion
7 Contribution and Related Works
8 Future Work
9 Conclusion
References
Diagnosing Data Pipeline Failures Using Action Languages: A Progress Report
1 Requirements
2 Hybrid ALE
3 Diagnostic Modeling Library
4 Generating Explanations and Suggestions
5 Job Termination Status and Automatic Model Generation
6 Conclusion
References
VRASP: A Virtual Reality Environment for Learning Answer Set Programming
1 Introduction
2 Related Work
3 The VRASP Design
4 Evaluation
4.1 Evaluation Design
4.2 Result
5 Conclusion and Future Work
References
Memory and Real-Time in Functional Programming
On the Effects of Integrating Region-Based Memory Management and Generational Garbage Collection in ML
1 Introduction
2 Generational Garbage Collection
2.1 Evacuating Objects
2.2 The GC Algorithm
2.3 Mutable Objects and Large Objects
3 Experimental Results
3.1 Comparison with Mlton
3.2 Generational Garbage Collection
3.3 Memory Waste
4 Related Work
5 Conclusion and Future Work
References
RTMLton: An SML Runtime for Real-Time Systems
1 Introduction
2 MLton Architecture and Consequences for Real-Time
2.1 MLton Threads
2.2 GC Architecture
3 Real-Time Extensions to MLton
3.1 Concurrency and Threading
3.2 Creating a Real-Time GC
4 Evaluation
5 Related Work
6 Conclusion
References
A Timed IO Monad
1 Introduction
2 Timed Monad Class
2.1 Timestamp, Duration, Time Scale and Time Drift
2.2 Timed Monad
2.3 Timed Monad Laws
2.4 On the Validity of Timed Monad Extensions
3 Default Timed Monad Instances
3.1 Monads with Timer
3.2 Derived Timed Monad Instance
3.3 More on Temporal Correctness Issues
4 Symbolic Timed Extension of a Monad
4.1 Inner and Outer Durations with Tempi
4.2 Derived Symbolic Timed Monad Instance
5 Timed Promises
5.1 Monad References
5.2 Timed Monad References
5.3 Time Specific Action on Timed Monad References
6 Data Flow Programming with Timed Monad Streams
7 Related Works
8 Conclusion
References
Reasoning and Efficient Implementation
Exploiting Database Management Systems and Treewidth for Counting
1 Introduction
2 Preliminaries
3 Towards Relational Algebra for Dynamic Programming
4 Dynamic Programming on TDs Using Databases and SQL
4.1 System dpdb: Dynamic Programming with Databases
4.2 Table Algorithms With dpdb for Selected Problems
5 Experiments
5.1 Setup
5.2 Results
6 Final Discussion and Conclusions
References
Whitebox Induction of Default Rules Using High-Utility Itemset Mining
1 Introduction
2 Background
2.1 The FOIL Algorithm
2.2 SHAP
2.3 High-Utility Itemset Mining
3 SHAP-FOLD Algorithm
4 Experiments
5 Related Works and Conclusions
References
Small Languages and Implementation
Explanations for Dynamic Programming
1 Introduction
2 Explaining Decisions with Value Decompositions
3 Dynamic Programming with Semirings
3.1 Semirings and Dynamic Programming
3.2 A Haskell Library for Dynamic Programming
3.3 Computing the Lengths of Shortest Paths
3.4 Computing Shortest Paths
4 Explanations from Value Decomposition
5 Proactive Generation of Explanations
6 Related Work
7 Conclusions and Future Work
References
A DSL for Integer Range Reasoning: Partition, Interval and Mapping Diagrams
1 Introduction
2 Interval and Partition Diagrams
3 Mapping Diagrams and Colorings
4 Legends
5 Diagram Extension to the Why3 Verification Platform
6 Verified Code Examples
7 Related Work
8 Conclusions and Future Work
References
Variability-Aware Datalog
1 Introduction
2 Background and Motivating Example
2.1 Datalog and Variability
2.2 Soufflé
3 Variability-Aware Soufflé
3.1 Syntax Extension
3.2 RAM
3.3 Interpreter
4 Evaluation
5 Conclusion and Future Work
References
Author Index