2018
DOI: 10.1145/3299711.3242756
|View full text |Cite
|
Sign up to set email alerts
|

Theorem proving for all: equational reasoning in liquid Haskell (functional pearl)

Abstract: Equational reasoning is one of the key features of pure functional languages such as Haskell. To date, however, such reasoning always took place externally to Haskell, either manually on paper, or mechanised in a theorem prover. This article shows how equational reasoning can be performed directly and seamlessly within Haskell itself, and be checked using Liquid Haskell. In particular, language learners -to whom external theorem provers are out of reach -can benefit from having their proofs mechanically checke… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
5
0

Year Published

2019
2019
2021
2021

Publication Types

Select...
3
2

Relationship

1
4

Authors

Journals

citations
Cited by 6 publications
(5 citation statements)
references
References 26 publications
(33 reference statements)
0
5
0
Order By: Relevance
“…Finally, language-based approaches offer an alternative path to the verification of software. Liquid Haskell [34] extends standard Haskell types with Liquid Types [29], a form of refinement types [30], in order to prove properties about realistic Haskell programs [33]. In this approach, verification conditions are generated and discharged during type-checking.…”
Section: Related Workmentioning
confidence: 99%
“…Finally, language-based approaches offer an alternative path to the verification of software. Liquid Haskell [34] extends standard Haskell types with Liquid Types [29], a form of refinement types [30], in order to prove properties about realistic Haskell programs [33]. In this approach, verification conditions are generated and discharged during type-checking.…”
Section: Related Workmentioning
confidence: 99%
“…This is also a primary application of relational cost analysis. Consider the familiar monoid laws of the append operator: associativity These properties can be proved correct in Liquid Haskell via equational reasoning [Vazou et al 2018]. However, although the two sides of each property give the same results, each side does not necessarily require the same amount of resources.…”
Section: Extrinsic Cost Analysismentioning
confidence: 99%
“…To exemplify both the equational and inequational styles of proof, we reason about the results and resource usage of append separately. Readers are referred to [Vazou et al 2018] for a more detailed discussion on the following concepts.…”
Section: Proof Constructionmentioning
confidence: 99%
See 2 more Smart Citations