-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathinversion-plugin.cabal
211 lines (197 loc) · 4.93 KB
/
inversion-plugin.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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
cabal-version: 3.0
name: inversion-plugin
synopsis: A compiler plugin to provide automatic inversion
version: 2.0
license: BSD-3-Clause
license-file: LICENSE
copyright: (c) 2020-2023, Finn Teegen, Kai-Oliver Prott, Niels Bunkenburg
maintainer: [email protected]
author: Finn Teegen, Kai-Oliver Prott, Niels Bunkenburg
category: Language
build-type: Simple
stability: experimental
description: A very nice plugin for the GHC that automatically derives inverse functions.
extra-source-files:
README.md
source-repository head
type: git
location: https://github.com/cau-placc/inversion-plugin
flag use-sbv {
Description: Use SBV
Default: False
Manual: True
}
flag use-what4 {
Description: Use What4
Default: True
Manual: True
}
flag use-cvc {
Description: Use CVC4/5
Default: False
Manual: True
}
flag use-z3 {
Description: Use Z3
Default: True
Manual: True
}
flag use-dfs {
Description: Perform depth-first search
Default: False
Manual: True
}
flag use-iddfs {
Description: Perform iterative-deepening depth-first search
Default: False
Manual: True
}
flag use-bfs {
Description: Perform breadth-first search
Default: True
Manual: True
}
flag use-cs {
Description: Perform concurrent search
Default: False
Manual: True
}
flag use-ps {
Description: Perform parallel search
Default: False
Manual: True
}
common deps
hs-source-dirs: src
build-depends:
base ^>= 4.16.1.0,
ghc ^>= 9.2.2,
ghc-prim -any,
template-haskell -any,
bytestring -any,
containers -any,
deque ^>= 0.4.3,
transformers -any,
ghc-tcplugin-api -any,
mtl -any,
syb -any,
extra -any,
split -any,
tree-monad -any,
parallel-tree-search -any,
ChasingBottoms -any,
kan-extensions -any,
sbv -any,
what4 -any,
parameterized-utils -any,
libBF -any,
text -any,
bv-sized -any,
OneTuple -any
ghc-options: -Wall -Wincomplete-uni-patterns
if flag(use-sbv)
cpp-options: -DUSE_SBV -UUSE_WHAT4
if flag(use-what4)
cpp-options: -DUSE_WHAT4 -UUSE_SBV
if flag(use-cvc)
cpp-options: -DUSE_CVC -UUSE_Z3
if flag(use-z3)
cpp-options: -DUSE_Z3 -UUSE_CVC
if flag(use-dfs)
cpp-options: -DUSE_DFS -UUSE_IDDFS -UUSE_BFS -UUSE_CS -UUSE_PS
if flag(use-iddfs)
cpp-options: -DUSE_IDDFS -UUSE_DFS -UUSE_BFS -UUSE_CS -UUSE_PS
if flag(use-bfs)
cpp-options: -DUSE_BFS -UUSE_DFS -UUSE_IDDFS -UUSE_CS -UUSE_PS
if flag(use-cs)
cpp-options: -DUSE_CS -UUSE_DFS -UUSE_IDDFS -UUSE_BFS -UUSE_PS
if flag(use-ps)
cpp-options: -DUSE_PS -UUSE_CS -UUSE_DFS -UUSE_IDDFS -UUSE_BFS
default-language: Haskell2010
other-extensions:
DefaultSignatures,
DeriveAnyClass,
DeriveDataTypeable,
DeriveFunctor,
DeriveGeneric,
EmptyCase,
EmptyDataDeriving,
ExistentialQuantification,
FlexibleContexts,
FlexibleInstances,
FunctionalDependencies,
GeneralizedNewtypeDeriving,
LambdaCase,
MultiParamTypeClasses,
OverloadedStrings,
RankNTypes,
RecursiveDo,
ScopedTypeVariables,
StandaloneDeriving,
TemplateHaskell,
TupleSections,
TypeFamilies,
TypeOperators,
UndecidableInstances
other-modules:
Plugin.Dump
Plugin.Effect.SolverLibrary.SBV
Plugin.Effect.SolverLibrary.What4
Plugin.Effect.TH
Plugin.Effect.Tree
Plugin.Effect.Util
Plugin.Primitives
Plugin.Trans.Class
Plugin.Trans.ClsInst
Plugin.Trans.Coerce
Plugin.Trans.Constr
Plugin.Trans.CreateSyntax
Plugin.Trans.DictInstFun
Plugin.Trans.Expr
Plugin.Trans.FunWiredIn
Plugin.Trans.Import
Plugin.Trans.LExprEQ
Plugin.Trans.Pat
Plugin.Trans.PatternMatching
Plugin.Trans.Preprocess
Plugin.Trans.Record
Plugin.Trans.TyCon
Plugin.Trans.Type
Plugin.Trans.Util
Plugin.Trans.Var
SBVTest
What4Test
library
import: deps
exposed-modules:
Plugin.BuiltIn
Plugin.BuiltIn.Char
Plugin.BuiltIn.Identity
Plugin.BuiltIn.Primitive
Plugin.Effect.Annotation
Plugin.Effect.Monad
Plugin.InversionPlugin
Plugin.Lifted
Plugin.Prelude
Plugin.Trans.TysWiredIn
test-suite tests
import: deps
type: detailed-0.9
hs-source-dirs: test
test-module: Tests
other-modules:
SemanticTests
Tests.Definitions
Tests.QuickCheckInverse
Plugin.BuiltIn
Plugin.Effect.Monad
Plugin.Effect.Annotation
Plugin.InversionPlugin
Plugin.Prelude
build-depends:
inversion-plugin,
process ^>= 1.6.5.0,
filepath ^>= 1.4.2.1,
directory ^>= 1.3.3.0,
Cabal ^>= 3.2.0.0,
QuickCheck ^>= 2.14.2