@hackage equational-reasoning0.7.1.0
Proof assistant for Haskell using DataKinds & PolyKinds
Categories
License
BSD-3-Clause
Maintainer
konn.jinro_at_gmail.com
Links
Versions
Installation
Tested Compilers
Dependencies (5)
- base >=4.13 && <5
- containers >=0.5 && <0.9
- template-haskell >=2.11 && <2.25
- th-desugar >=1.13 && <1.20
- void >=0.6 && <0.8 Show all…
Dependents (10)
@hackage/half-space, @hackage/sized, @hackage/manifolds-core, @hackage/acme-everything, @hackage/manifolds, @hackage/sized-vector, Show all…
Agda-style Equational Reasoning in Haskell by Data Kinds
What is this?
This library provides means to prove equations in Haskell. You can prove equations in Agda's EqReasoning like style.
See blow for an example:
plusZeroL :: SNat m -> Zero :+: m :=: m
plusZeroL SZero = Refl
plusZeroL (SSucc m) =
start (SZero %+ (SSucc m))
=== SSucc (SZero %+ m) `because` plusSuccR SZero m
=== SSucc m `because` succCongEq (plusZeroL m)
It also provides some utility functions to use an induction.
For more detail, please read source codes!
TODOs
- Automatic generation for induction schema for any inductive types.