2015
DOI: 10.1145/2858965.2814308
|View full text |Cite
|
Sign up to set email alerts
|

Galois transformers and modular abstract interpreters: reusable metatheory for program analysis

Abstract: The design and implementation of static analyzers has become increasingly systematic. Yet for a given language or analysis feature, it often requires tedious and error prone work to implement an analyzer and prove it sound. In short, static analysis features and their proofs of soundness do not compose well, causing a dearth of reuse in both implementation and metatheory. We solve the problem of systematically constructing static analyzers by introducing Galois transformers: monad transformers that transport G… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3
1
1

Citation Types

0
15
0

Year Published

2015
2015
2019
2019

Publication Types

Select...
5
2
1

Relationship

4
4

Authors

Journals

citations
Cited by 11 publications
(15 citation statements)
references
References 21 publications
0
15
0
Order By: Relevance
“…Our key insight consists of splitting the JSIL semantics into two components: a Semantics Module and a state instantiation. Similar decompositions have arisen in the context of abstract interpretation [Blazy et al 2016;Darais et al 2015; Horn and Might 2010], but we believe we are the first to use it in the design of a symbolic execution tool.…”
Section: Overviewmentioning
confidence: 52%
“…Our key insight consists of splitting the JSIL semantics into two components: a Semantics Module and a state instantiation. Similar decompositions have arisen in the context of abstract interpretation [Blazy et al 2016;Darais et al 2015; Horn and Might 2010], but we believe we are the first to use it in the design of a symbolic execution tool.…”
Section: Overviewmentioning
confidence: 52%
“…These arrow transformers are well-known and we borrowed their definition from the arrow transformer libraries arrows and atl on Hackage. 2 Furthermore, some of these arrow transformers appeared in form of monad transformers in [Darais et al 2017[Darais et al , 2015], which we took inspiration from. Environment Components To implement environment components, we created the type class ArrowEnv with an operation getEnv to fetch an environment, localEnv to set a new environment in a local context, extendEnv to extend the given environment with a new binding and lookup to look up a binding in the current environment: Based on this interface, we created two components for environments.…”
Section: Analysis Componentsmentioning
confidence: 99%
“…The idea of composing static analyses from modular components has also been explored by Darais et al [2015]. The authors also propose to share code between concrete and abstract interpreter.…”
Section: Related Workmentioning
confidence: 99%
“…Galois transformers and modular abstract interpreters by Darais et al [2015] represent a systematic way to construct monadic abstract interpreters. Galois transformers are monad transformers, whose monadic operations can be proven sound with respect to each other.…”
Section: Related Workmentioning
confidence: 99%