Imperative Functional Programs that Explain their Work

05/22/2017
by   Wilmer Ricciotti, et al.
0

Program slicing provides explanations that illustrate how program outputs were produced from inputs. We build on an approach introduced in prior work by Perera et al., where dynamic slicing was defined for pure higher-order functional programs as a Galois connection between lattices of partial inputs and partial outputs. We extend this approach to imperative functional programs that combine higher-order programming with references and exceptions. We present proofs of correctness and optimality of our approach and a proof-of-concept implementation and experimental evaluation.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/05/2021

Pirouette: Higher-Order Typed Functional Choreographies

We present Pirouette, a language for typed higher-order functional chore...
research
08/13/2018

Predicate Specialization for Definitional Higher-order Logic Programs

Higher-order logic programming is an interesting extension of traditiona...
research
01/05/2018

Monitoring Data Minimisation

Data minimisation is a privacy enhancing principle, stating that persona...
research
02/22/2019

Automating the Diagram Method to Prove Correctness of Program Transformations

We report on the automation of a technique to prove the correctness of p...
research
05/01/2018

Live Functional Programming with Typed Holes

This paper develops a dynamic semantics for incomplete functional progra...
research
03/22/2023

Practical compilation of fexprs using partial evaluation: Fexprs can performantly replace macros in purely-functional Lisp

Macros are a common part of Lisp languages, and one of their most lauded...
research
03/02/2023

HasChor: Functional Choreographic Programming for All (Functional Pearl)

Choreographic programming is an emerging paradigm for programming distri...

Please sign up or login with your details

Forgot password? Click here to reset