hegg-0.2.0.0: hegg.cabal
cabal-version: 2.4
name: hegg
version: 0.2.0.0
Tested-With: GHC ==9.4.1 || ==9.2.2 || ==9.0.2 || ==8.10.7
synopsis: Fast equality saturation in Haskell
description: Fast equality saturation and equality graphs based on "egg:
Fast and Extensible Equality Saturation" and "Relational E-matching".
.
This package provides e-graphs (see "Data.Equality.Graph"),
a data structure which efficiently represents a congruence
relation over many expressions.
.
For a monadic interface to e-graphs check out
"Data.Equality.Graph.Monad" (home to the convenient
function 'represent').
.
Secondly, it provides functions for doing equality
saturation (see "Data.Equality.Saturation"), an
optimization/term-rewriting technique that applies rewrite
rules non-destructively to an expression represented in an
e-graph until saturation, and then extracts the best
representation.
.
Equality matching (see "Data.Equality.Matching") is done as
described in "Relational E-Matching"
.
For a walkthrough of writing a simple symbolic
simplification program see the [hegg symbolic
tutorial](https://github.com/alt-romes/hegg#equality-saturation-in-haskell).
.
Additional information can be found [in the README](https://github.com/alt-romes/hegg).
homepage: https://github.com/alt-romes/hegg
bug-reports: https://github.com/alt-romes/hegg/issues
license: BSD-3-Clause
author: Rodrigo Mesquita <romes>
maintainer: Rodrigo Mesquita <rodrigo.m.mesquita@gmail.com>
copyright: Copyright (C) 2022 Rodrigo Mesquita
category: Data
extra-source-files: CHANGELOG.md
README.md
source-repository head
type: git
location: https://github.com/alt-romes/hegg
library
ghc-options: -Wall -Wcompat
-- -fno-prof-auto
-- -ddump-simpl
-- -ddump-to-file
-- -dsuppress-ticks
-- -dsuppress-stg-exts
-- -dsuppress-coercions
-- -dsuppress-idinfo
-- -dsuppress-unfoldings
-- -dsuppress-module-prefixes
-- -dsuppress-timestamps
-- -dsuppress-uniques
-- -dsuppress-var-kinds
exposed-modules: Data.Equality.Graph,
Data.Equality.Graph.Internal,
Data.Equality.Graph.ReprUnionFind,
Data.Equality.Graph.Classes,
Data.Equality.Graph.Classes.Id,
Data.Equality.Graph.Nodes,
Data.Equality.Graph.Lens,
Data.Equality.Graph.Monad,
Data.Equality.Matching,
Data.Equality.Matching.Database,
Data.Equality.Matching.Pattern,
Data.Equality.Saturation,
Data.Equality.Extraction,
Data.Equality.Language,
Data.Equality.Analysis,
Data.Equality.Saturation.Scheduler,
Data.Equality.Saturation.Rewrites,
Data.Equality.Utils,
Data.Equality.Utils.SizedList
if impl(ghc >= 9.2)
exposed-modules: Data.Equality.Utils.IntToIntMap
if flag(vizdot)
exposed-modules: Data.Equality.Graph.Dot
-- Modules included in this library but not exported.
-- other-modules:
-- LANGUAGE extensions used by modules in this package.
build-depends: base >= 4.4 && < 5,
transformers >= 0.4 && < 0.7,
containers >= 0.4 && < 0.7
if flag(vizdot)
build-depends: graphviz >= 2999.6 && < 2999.7
hs-source-dirs: src
default-language: Haskell2010
test-suite hegg-test
ghc-options: -Wall
-- -finfo-table-map -fdistinct-constructor-tables
-threaded
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Test.hs
other-modules: Invariants, Sym, Lambda, SimpleSym
other-extensions: OverloadedStrings
build-depends: base,
hegg,
containers,
deriving-compat >= 0.6 && < 0.7,
tasty >= 1.4 && < 1.5,
tasty-hunit >= 0.10 && < 0.11,
tasty-quickcheck >= 0.10 && < 0.11
benchmark hegg-bench
default-language: Haskell2010
hs-source-dirs: test
other-modules: Invariants, Sym, Lambda, SimpleSym
main-is: Bench.hs
type: exitcode-stdio-1.0
build-depends: base, hegg,
containers,
deriving-compat,
tasty,
tasty-hunit,
tasty-quickcheck,
tasty-bench >= 0.2 && < 0.4
ghc-options: -with-rtsopts=-A32m -threaded
Flag vizdot
Description: Compile 'Data.Equality.Graph.Dot' module to visualize e-graphs
Manual: True
Default: False