crucible-0.7: crucible.cabal
Cabal-version: 2.2
Name: crucible
Version: 0.7
Author: Galois Inc.
Maintainer: rscott@galois.com, kquick@galois.com, langston@galois.com
Copyright: (c) Galois, Inc 2014-2022
License: BSD-3-Clause
License-file: LICENSE
Build-type: Simple
Category: Language
Synopsis: Crucible is a library for language-agnostic symbolic simulation
Description:
Crucible provides a program representation format based on single-static assignment
(SSA) form control flow graphs, and a symbolic simulation engine for executing
programs expressed in this format. It also provides support for communicating with
a variety of SAT and SMT solvers, including Z3, CVC4, Yices, STP, and dReal.
extra-source-files: CHANGELOG.md
source-repository head
type: git
location: https://github.com/GaloisInc/crucible
subdir: crucible
-- Many (but not all, sadly) uses of unsafe operations are
-- controlled by this compile flag. When this flag is set
-- to False, alternate implementations are used to avoid
-- Unsafe.Coerce and Data.Coerce. These alternate implementations
-- impose a significant performance hit.
flag unsafe-operations
Description: Use unsafe operations to improve performance
Default: True
common bldflags
ghc-options: -Wall
-Werror=incomplete-patterns
-Werror=missing-methods
-Werror=overlapping-patterns
-Wpartial-fields
-Wincomplete-uni-patterns
ghc-prof-options: -O2 -fprof-auto-exported
default-language: Haskell2010
library
import: bldflags
build-depends:
base >= 4.13 && < 4.19,
bimap,
bv-sized >= 1.0.0 && < 1.1,
containers >= 0.5.9.0,
exceptions,
fgl,
hashable,
json >= 0.9 && < 1.0,
lens,
mtl,
panic >= 0.3,
parameterized-utils >= 1.0.8 && < 2.2,
prettyprinter >= 1.7.0,
template-haskell,
text,
time >= 1.8 && < 2.0,
th-abstraction >=0.1 && <0.6,
transformers,
unordered-containers,
vector,
what4 >= 0.4
default-extensions:
NondecreasingIndentation
NoStarIsType
hs-source-dirs: src
exposed-modules:
Lang.Crucible.Analysis.DFS
Lang.Crucible.Analysis.ForwardDataflow
Lang.Crucible.Analysis.Fixpoint
Lang.Crucible.Analysis.Fixpoint.Components
Lang.Crucible.Analysis.Postdom
Lang.Crucible.Analysis.Reachable
Lang.Crucible.Backend
Lang.Crucible.Backend.AssumptionStack
Lang.Crucible.Backend.ProofGoals
Lang.Crucible.Backend.Online
Lang.Crucible.Backend.Simple
Lang.Crucible.CFG.Common
Lang.Crucible.CFG.Core
Lang.Crucible.CFG.Expr
Lang.Crucible.CFG.Extension
Lang.Crucible.CFG.ExtractSubgraph
Lang.Crucible.CFG.Generator
Lang.Crucible.CFG.Reg
Lang.Crucible.CFG.SSAConversion
Lang.Crucible.CFG.EarlyMergeLoops
Lang.Crucible.FunctionHandle
Lang.Crucible.Simulator
Lang.Crucible.Simulator.Breakpoint
Lang.Crucible.Simulator.BoundedExec
Lang.Crucible.Simulator.BoundedRecursion
Lang.Crucible.Simulator.CallFrame
Lang.Crucible.Simulator.Evaluation
Lang.Crucible.Simulator.EvalStmt
Lang.Crucible.Simulator.ExecutionTree
Lang.Crucible.Simulator.Intrinsics
Lang.Crucible.Simulator.GlobalState
Lang.Crucible.Simulator.Operations
Lang.Crucible.Simulator.OverrideSim
Lang.Crucible.Simulator.PathSatisfiability
Lang.Crucible.Simulator.PathSplitting
Lang.Crucible.Simulator.PositionTracking
Lang.Crucible.Simulator.Profiling
Lang.Crucible.Simulator.RegMap
Lang.Crucible.Simulator.RegValue
Lang.Crucible.Simulator.SimError
Lang.Crucible.Simulator.SymSequence
Lang.Crucible.Syntax
Lang.Crucible.Types
Lang.Crucible.Vector
Lang.Crucible.Panic
Lang.Crucible.Utils.BitSet
Lang.Crucible.Utils.CoreRewrite
Lang.Crucible.Utils.MonadVerbosity
Lang.Crucible.Utils.MuxTree
Lang.Crucible.Utils.PrettyPrint
Lang.Crucible.Utils.RegRewrite
Lang.Crucible.Utils.StateContT
Lang.Crucible.Utils.Structural
if flag(unsafe-operations)
cpp-options: -DUNSAFE_OPS
test-suite absint-tests
import: bldflags
type: exitcode-stdio-1.0
hs-source-dirs: test/absint
other-modules: AI,
EvenOdd,
Max,
WTO
main-is: Main.hs
build-depends: base,
containers,
mtl,
crucible,
what4,
parameterized-utils,
tasty >= 0.10,
tasty-hunit >= 0.9,
tasty-quickcheck >= 0.8,
QuickCheck
test-suite helper-tests
import: bldflags
type: exitcode-stdio-1.0
hs-source-dirs: test/helpers
-- other-modules:
main-is: Main.hs
build-depends: base,
hspec >= 2.5,
crucible,
panic >= 0.3,
tasty >= 0.10,
tasty-hspec >= 1.1