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 maintainer: Rodrigo Mesquita 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