2017
DOI: 10.1145/3158150
|View full text |Cite
|
Sign up to set email alerts
|

Bonsai: synthesis-based reasoning for type systems

Abstract: When designing a type system, we may want to mechanically check the design to guide its further development. We describe algorithms that perform symbolic reasoning about executable models of type systems. The algorithms support three queries. First, they check type soundness and synthesize a counterexample program if such a soundness bug is found. Second, they compare two versions of a type system, synthesizing a program accepted by one but rejected by the other. Third, they minimize the size of synthesized co… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
7
0

Year Published

2018
2018
2022
2022

Publication Types

Select...
3
2
1

Relationship

1
5

Authors

Journals

citations
Cited by 9 publications
(7 citation statements)
references
References 55 publications
0
7
0
Order By: Relevance
“…As we show later, to bypass the challenge of complex SMT constraints that are generated by a faithful interpretation of a traversal's semantics, a scalable approach to solve the placement and resource allocation problems is to use ILP to map the computation rules to the available slots in the traversal [15,36]. Definition 3.7.…”
Section: Domainsmentioning
confidence: 99%
See 1 more Smart Citation
“…As we show later, to bypass the challenge of complex SMT constraints that are generated by a faithful interpretation of a traversal's semantics, a scalable approach to solve the placement and resource allocation problems is to use ILP to map the computation rules to the available slots in the traversal [15,36]. Definition 3.7.…”
Section: Domainsmentioning
confidence: 99%
“…If the formula is satisfiable, the verifier then returns a counterexample to the synthesizer that will look for another candidate. Similar to prior work in Neo [20] and Bonsai [15], our symbolic tree t𝑟 is encoded as a bounded 𝑚-ary tree derived from the attribute grammar. We omit the details since it is not the main contribution.…”
Section: System Overviewmentioning
confidence: 99%
“…One approach is to sample from these domains, and this can be done relatively easily. Unfortunately, this is rarely fruitful as, with high probability, all programs sampled are invalid (i.e., do not type and borrow check) [30]. Thus, a borrow checker that returned £ ¢ ¡ false in all cases would appear effective.…”
Section: Constrained Program Domainsmentioning
confidence: 99%
“…Poor choice of data structures is another frequent source of performance problems in solver-aided programs. Some common programming patterns, such as tree manipulations, require careful data structure design (see, e.g., [Chandra and Bodik 2018]) to yield an effective symbolic encoding. In general, performance issues arise when the representation of a data type is irregular (e.g., a list of length one or two), increasing the number of paths that need to be evaluated to operate on a symbolic instance of that type.…”
Section: Three Anti-patterns In Solver-aided Programsmentioning
confidence: 99%
“…Type System Soundness Checking. Bonsai [Chandra and Bodik 2018] is a synthesis-based tool for checking the soundness of type systems. It uses a novel tree representation for type checking, and has been used to replicate a soundness bug in the Scala type system.…”
Section: Other Findingsmentioning
confidence: 99%