Functional Pearl: Theorem Proving for All (Equational Reasoning in Liquid Haskell)

06/09/2018
by   Niki Vazou, et al.
0

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 checked. Concretely, we show how the equational proofs and derivations from Graham's textbook can be recast as proofs in Haskell (spoiler: they look essentially the same).

READ FULL TEXT

page 1

page 2

page 3

page 4

research
10/10/2022

A Reunion of Godel, Tarski, Carnap, and Rosser

We unify Godel's First Incompleteness Theorem (1931), Tarski's Undefinab...
research
09/03/2021

Four proofs of the directed Brooks' Theorem

We give four new proofs of the directed version of Brook's Theorem and a...
research
09/07/2021

Conjectures, Tests and Proofs: An Overview of Theory Exploration

A key component of mathematical reasoning is the ability to formulate in...
research
06/06/2014

Initial Experiments with TPTP-style Automated Theorem Provers on ACL2 Problems

This paper reports our initial experiments with using external ATP on so...
research
05/04/2023

Proving Properties of φ-Representations with the Walnut Theorem-Prover

We revisit a classic theorem of Frougny and Sakarovitch concerning autom...
research
07/06/2022

Gacs-Kucera Theorem

Gacs-Kucera Theorem, tightened by Barmpalias and Lewis-Pye, w.t.t.-reduc...
research
09/27/2022

Structure in Theorem Proving: Analyzing and Improving the Isabelle Archive of Formal Proofs

The Isabelle Archive of Formal Proofs has grown to a significant size in...

Please sign up or login with your details

Forgot password? Click here to reset