Is sound gradual typing dead?

A Takikawa, D Feltey, B Greenman, MS New… - Proceedings of the 43rd …, 2016 - dl.acm.org
Programmers have come to embrace dynamically-typed languages for prototyping and
delivering large and complex systems. When it comes to maintaining and evolving these …

Abstracting definitional interpreters (functional pearl)

D Darais, N Labich, PC Nguyen… - Proceedings of the ACM on …, 2017 - dl.acm.org
In this functional pearl, we examine the use of definitional interpreters as a basis for abstract
interpretation of higher-order programming languages. As it turns out, definitional …

Compiling symbolic execution with staging and algebraic effects

G Wei, O Bračevac, S Tan, T Rompf - Proceedings of the ACM on …, 2020 - dl.acm.org
Building effective symbolic execution engines poses challenges in multiple dimensions: an
engine must correctly model the program semantics, provide flexibility in symbolic execution …

Types, modes and so much more–the Prolog way

MV Hermenegildo, JF Morales, P Lopez-Garcia… - Prolog: The Next 50 …, 2023 - Springer
We present in a tutorial way some ideas developed in the context of the Ciao Prolog system
that we believe could be useful for the future evolution of Prolog. We concentrate primarily …

Relatively complete counterexamples for higher-order programs

PC Nguyễn, D Van Horn - ACM SIGPLAN Notices, 2015 - dl.acm.org
In this paper, we study the problem of generating inputs to a higher-order program causing it
to error. We first approach the problem in the setting of PCF, a typed, core functional …

Soft contract verification for higher-order stateful programs

PC Nguyễn, T Gilray, S Tobin-Hochstadt… - Proceedings of the ACM …, 2017 - dl.acm.org
Software contracts allow programmers to state rich program properties using the full
expressive power of an object language. However, since they are enforced at runtime …

Securing Verified IO Programs Against Unverified Code in F

CC Andrici, Ș Ciobâcă, C Hriţcu, G Martínez… - Proceedings of the …, 2024 - dl.acm.org
We introduce SCIO*, a formally secure compilation framework for statically verified programs
performing input-output (IO). The source language is an F* subset in which a verified …

Automatic and scalable detection of logical errors in functional programming assignments

D Song, M Lee, H Oh - Proceedings of the ACM on Programming …, 2019 - dl.acm.org
We present a new technique for automatically detecting logical errors in functional
programming assignments. Compared to syntax or type errors, detecting logical errors …

How to evaluate the performance of gradual type systems

B Greenman, A Takikawa, MS New, D Feltey… - Journal of Functional …, 2019 - cambridge.org
A sound gradual type system ensures that untyped components of a program can never
break the guarantees of statically typed components. This assurance relies on runtime …

[PDF][PDF] Gradual C0: Symbolic Execution for Efficient Gradual Verification

J DiVincenzo, I McCormack, H Gouni… - arXiv preprint arXiv …, 2022 - jennalwise.github.io
Separation logic [Reynolds 2002] supports the modular static verification of heap-
manipulating programs. The↦→ operator asserts both ownership of a heap location and its …