Constructive Galois Connections

07/23/2018
by   David Darais, et al.
0

Galois connections are a foundational tool for structuring abstraction in semantics and their use lies at the heart of the theory of abstract interpretation. Yet, mechanization of Galois connections using proof assistants remains limited to restricted modes of use, preventing their general application in mechanized metatheory and certified programming. This paper presents constructive Galois connections, a variant of Galois connections that is effective both on paper and in proof assistants; is complete with respect to a large subset of classical Galois connections; and enables more general reasoning principles, including the "calculational" style advocated by Cousot. To design constructive Galois connections we identify a restricted mode of use of classical ones which is both general and amenable to mechanization in dependently-typed functional programming languages. Crucial to our metatheory is the addition of monadic structure to Galois connections to control a "specification effect." Effectful calculations may reason classically, while pure calculations have extractable computational content. Explicitly moving between the worlds of specification and implementation is enabled by our metatheory. To validate our approach, we provide two case studies in mechanizing existing proofs from the literature: the first uses calculational abstract interpretation to design a static analyzer; the second forms a semantic basis for gradual typing. Both mechanized proofs closely follow their original paper-and-pencil counterparts, employ reasoning principles not captured by previous mechanization approaches, support the extraction of verified algorithms, and are novel.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
04/09/2021

A Constructive Logic with Classical Proofs and Refutations (Extended Version)

We study a conservative extension of classical propositional logic disti...
research
09/03/2021

A Survey of the Proof-Theoretic Foundations of Logic Programming

Several formal systems, such as resolution and minimal model semantics, ...
research
07/20/2021

Verified Functional Programming of an Abstract Interpreter

Abstract interpreters are complex pieces of software: even if the abstra...
research
12/28/2018

Sequential algorithms and the computational content of classical proofs

We develop a correspondence between the theory of sequential algorithms ...
research
07/19/2021

Structured Proofs for Adversarial Cyber-Physical Systems

Many cyber-physical systems (CPS) are safety-critical, so it is importan...
research
02/20/2023

A modest proposal: explicit support for foundational pluralism

Whilst mathematicians assume classical reasoning principles by default t...
research
12/19/2011

What is an OS?

While the engineering of operating systems is well understood, their for...

Please sign up or login with your details

Forgot password? Click here to reset