name: ghc-typelits-natnormalise version: 0.6 synopsis: GHC typechecker plugin for types of kind GHC.TypeLits.Nat description: A type checker plugin for GHC that can solve /equalities/ 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. homepage: http://www.clash-lang.org/ bug-reports: http://github.com/clash-lang/ghc-typelits-natnormalise/issues license: BSD2 license-file: LICENSE author: Christiaan Baaij maintainer: christiaan.baaij@gmail.com copyright: Copyright © 2015-2016, University of Twente, 2017-2018, QBayLogic B.V. category: Type System build-type: Simple extra-source-files: README.md CHANGELOG.md cabal-version: >=1.10 tested-with: GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.1, GHC == 8.4.2, GHC == 8.5.0 source-repository head type: git location: https://github.com/clash-lang/ghc-typelits-natnormalise.git flag deverror description: Enables `-Werror` for development mode and TravisCI default: False manual: True library exposed-modules: GHC.TypeLits.Normalise, GHC.TypeLits.Normalise.SOP, GHC.TypeLits.Normalise.Unify build-depends: base >=4.9 && <5, ghc >=8.0.1 && <8.6, ghc-tcplugins-extra >=0.2.5, integer-gmp >=1.0 && <1.1, transformers >=0.5.2.0 && < 0.6 hs-source-dirs: src default-language: Haskell2010 other-extensions: CPP LambdaCase RecordWildCards TupleSections if flag(deverror) ghc-options: -Wall -Werror else ghc-options: -Wall test-suite test-ghc-typelits-natnormalise type: exitcode-stdio-1.0 main-is: Tests.hs Other-Modules: ErrorTests build-depends: base >=4.8 && <5, ghc-typelits-natnormalise, tasty >= 0.10, tasty-hunit >= 0.9, template-haskell >= 2.11.0.0 hs-source-dirs: tests default-language: Haskell2010 other-extensions: DataKinds GADTs KindSignatures NoImplicitPrelude TemplateHaskell TypeFamilies TypeOperators ScopedTypeVariables if flag(deverror) ghc-options: -O0 -dcore-lint