A type checker plugin for GHC that can solve equalities and inequalities
of types of kind @Nat@, where these types are either:
.
* Type-level naturals
.
* Type variables
.
* Applications of the arithmetic expressions (+,-,*,^).
.
It solves these equalities by normalising them to sort-of SOP
(Sum-of-Products) form, and then perform a simple syntactic equality.
.
For example, this solver can prove the equality between:
.
(x + 2)^(y + 2)
.
and
.
4*x*(2 + x)^y + 4*(2 + x)^y + (2 + x)^y*x^2
.
Because the latter is actually the SOP normal form of the former.
.
To use the plugin, add the
.
OPTIONS_GHC -fplugin GHC.TypeLits.Normalise
.
Pragma to the header of your file.
.
This package provides a library for the Haskell programming language.
See http://www.haskell.org/ for more information on Haskell.
Installed Size: 1.4 MB
Architectures: amd64 arm64