Proceedings of the 19th ACM SIGPLAN International Conference on Functional Programming 2014
DOI: 10.1145/2628136.2628161
|View full text |Cite
|
Sign up to set email alerts
|

Refinement types for Haskell

Abstract: SMT-based checking of refinement types for call-by-value languages is a well-studied subject. Unfortunately, the classical translation of refinement types to verification conditions is unsound under lazy evaluation. When checking an expression, such systems implicitly assume that all the free variables in the expression are bound to values. This property is trivially guaranteed by eager, but does not hold under lazy, evaluation. Thus, to be sound and precise, a refinement type system for Haskell and the corres… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

3
106
0

Year Published

2014
2014
2021
2021

Publication Types

Select...
5
2

Relationship

1
6

Authors

Journals

citations
Cited by 178 publications
(109 citation statements)
references
References 29 publications
3
106
0
Order By: Relevance
“…For example, we define a measure len to write properties about the number of elements in a list. Measure definitions are not arbitrary Haskell code but a very restricted subset [39]. Each measure has a single equation per constructor that defines the value of the measure for that constructor.…”
Section: Methodsmentioning
confidence: 99%
See 3 more Smart Citations
“…For example, we define a measure len to write properties about the number of elements in a list. Measure definitions are not arbitrary Haskell code but a very restricted subset [39]. Each measure has a single equation per constructor that defines the value of the measure for that constructor.…”
Section: Methodsmentioning
confidence: 99%
“…Core LIQUIDHASKELL uses GHC to reduce the source to the Core IL [35], and, to facilitate source-level error reporting, creates a map from Core expressions to locations in the Haskell source. Constraints Then, it uses the abstract interpretation framework of Liquid Typing [29], modified to ensure soundness under lazy evaluation [39], to generate logical constraints from the Core IL. Solution Next, it uses a fixpoint algorithm (from [29]) combined with an SMT solver to solve the constraints, and hence infers a valid refinement typing for the program.…”
Section: Liquidhaskellmentioning
confidence: 99%
See 2 more Smart Citations
“…Resolving this discrepancy without sacrificing precision would involve adding a termination analysis (cf. Vazou et al 2014). While we believe this can be accommodated with minor changes to the analysis, we shall not further address this issue in remainder of the paper.…”
Section: Operational Semanticsmentioning
confidence: 99%