-
Notifications
You must be signed in to change notification settings - Fork 8
/
hegg.cabal
151 lines (135 loc) · 5.98 KB
/
hegg.cabal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
cabal-version: 2.4
name: hegg
version: 0.5.0.0
Tested-With: GHC ==9.6.2 || ==9.4.5 || ==9.2.7 || ==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 <[email protected]>
copyright: Copyright (C) 2022 Rodrigo Mesquita
category: Data
extra-doc-files: CHANGELOG.md
README.md
source-repository head
type: git
location: https://github.com/alt-romes/hegg
library
other-extensions: BlockArguments StandaloneKindSignatures
-- QuantifiedConstraints are quite broken with GHC-9.0
-- Ord (Pattern l) instance triggers same issue like
-- https://github.com/haskell/mtl/issues/138
build-depends: base >=4.16 || <4.15
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.Analysis.Monadic,
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.
-- base-4.13, because foldMap' is used.
build-depends: base >= 4.13 && < 5,
transformers >= 0.4 && < 0.8,
containers >= 0.4 && < 0.8
if flag(vizdot)
build-depends: graphviz >= 2999.20 && < 2999.21,
text
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,
T1, T2, T3
other-extensions: OverloadedStrings
build-depends: base,
hegg,
containers,
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,
tasty,
tasty-hunit,
tasty-quickcheck,
tasty-bench >= 0.2 && < 0.4,
deepseq >= 1.4 && < 1.6
ghc-options: -with-rtsopts=-A32m
if impl(ghc >= 8.6)
ghc-options: -fproc-alignment=64
Flag vizdot
Description: Compile 'Data.Equality.Graph.Dot' module to visualize e-graphs
Manual: True
Default: False