g2: Haskell symbolic execution engine.

[ bsd3, formal-methods, library, program, symbolic-computation ] [ Propose Tags ] [ Report a vulnerability ]

A Haskell symbolic execution engine. For details, please see: https://github.com/BillHallahan/G2


[Skip to Readme]

Modules

  • G2
    • G2.Config
      • G2.Config.Config
      • G2.Config.Interface
      • G2.Config.ParseConfig
    • Data
      • G2.Data.Timer
      • G2.Data.UFMap
      • G2.Data.UnionFind
      • G2.Data.Utils
    • Equiv
      • G2.Equiv.Approximation
      • G2.Equiv.Config
      • G2.Equiv.EquivADT
      • G2.Equiv.G2Calls
      • G2.Equiv.Generalize
      • G2.Equiv.InitRewrite
      • G2.Equiv.Summary
      • G2.Equiv.Tactics
      • G2.Equiv.Types
      • G2.Equiv.Uninterpreted
      • G2.Equiv.Verifier
    • G2.Execution
      • G2.Execution.HPC
      • G2.Execution.Interface
      • G2.Execution.Memory
      • G2.Execution.NewPC
      • G2.Execution.NormalForms
      • G2.Execution.PrimitiveEval
      • G2.Execution.Reducer
      • G2.Execution.RuleTypes
      • G2.Execution.Rules
    • Initialization
      • G2.Initialization.DeepSeqWalks
      • G2.Initialization.ElimTicks
      • G2.Initialization.ElimTypeSynonyms
      • G2.Initialization.InitVarLocs
      • G2.Initialization.Interface
      • G2.Initialization.KnownValues
      • G2.Initialization.MkCurrExpr
      • G2.Initialization.Types
    • G2.Interface
      • G2.Interface.Interface
      • G2.Interface.OutputTypes
    • G2.Language
      • G2.Language.AST
      • G2.Language.AlgDataTy
      • G2.Language.Approximation
      • G2.Language.ArbValueGen
      • G2.Language.CallGraph
      • G2.Language.Casts
      • G2.Language.CreateFuncs
      • G2.Language.Expr
      • G2.Language.ExprEnv
      • G2.Language.Ids
      • G2.Language.KnownValues
      • G2.Language.Located
      • G2.Language.Monad
        • G2.Language.Monad.AST
        • G2.Language.Monad.CreateFuncs
        • G2.Language.Monad.Expr
        • G2.Language.Monad.ExprEnv
        • G2.Language.Monad.Naming
        • G2.Language.Monad.Primitives
        • G2.Language.Monad.Support
        • G2.Language.Monad.TypeClasses
        • G2.Language.Monad.TypeEnv
        • G2.Language.Monad.Typing
      • G2.Language.Naming
      • G2.Language.PathConds
      • G2.Language.Primitives
      • G2.Language.Simplification
      • G2.Language.Stack
      • G2.Language.Support
      • G2.Language.Syntax
      • G2.Language.TypeClasses
        • G2.Language.TypeClasses.Extra
        • G2.Language.TypeClasses.TypeClasses
      • G2.Language.TypeEnv
      • G2.Language.Typing
    • Lib
      • G2.Lib.Printers
    • Liquid
      • G2.Liquid.AddCFBranch
      • G2.Liquid.AddLHTC
      • G2.Liquid.AddOrdToNum
      • G2.Liquid.AddTyVars
      • G2.Liquid.Annotations
      • G2.Liquid.Config
      • G2.Liquid.Conversion
      • G2.Liquid.ConvertCurrExpr
      • G2.Liquid.G2Calls
      • G2.Liquid.Helpers
      • Inference
        • G2.Liquid.Inference.Config
        • G2.Liquid.Inference.FuncConstraint
        • G2.Liquid.Inference.G2Calls
        • G2.Liquid.Inference.GeneratedSpecs
        • G2.Liquid.Inference.InfStack
        • G2.Liquid.Inference.Initalization
        • G2.Liquid.Inference.Interface
        • G2.Liquid.Inference.PolyRef
        • G2.Liquid.Inference.QualifGen
        • G2.Liquid.Inference.Sygus
          • G2.Liquid.Inference.Sygus.FCConverter
          • G2.Liquid.Inference.Sygus.LiaSynth
          • G2.Liquid.Inference.Sygus.RefSynth
          • G2.Liquid.Inference.Sygus.SimplifySygus
          • G2.Liquid.Inference.Sygus.SpecInfo
          • G2.Liquid.Inference.Sygus.Sygus
          • G2.Liquid.Inference.Sygus.UnsatCoreElim
        • G2.Liquid.Inference.UnionPoly
        • G2.Liquid.Inference.Verify
      • G2.Liquid.Interface
      • G2.Liquid.LHReducers
      • G2.Liquid.Measures
      • G2.Liquid.MkLHVals
      • G2.Liquid.Simplify
      • G2.Liquid.SpecialAsserts
      • G2.Liquid.TCGen
      • G2.Liquid.TCValues
      • G2.Liquid.TyVarBags
      • G2.Liquid.Types
    • G2.Nebula
    • Postprocessing
      • G2.Postprocessing.Interface
      • G2.Postprocessing.NameSwitcher
    • Preprocessing
      • G2.Preprocessing.AdjustTypes
      • G2.Preprocessing.Interface
      • G2.Preprocessing.NameCleaner
    • QuasiQuotes
      • G2.QuasiQuotes.FloodConsts
      • G2.QuasiQuotes.G2Rep
      • Internals
        • G2.QuasiQuotes.Internals.G2Rep
      • G2.QuasiQuotes.Parser
      • G2.QuasiQuotes.QuasiQuotes
      • G2.QuasiQuotes.Support
    • G2.Solver
      • G2.Solver.ADTNumericalSolver
      • G2.Solver.Converters
      • G2.Solver.Interface
      • G2.Solver.Language
      • G2.Solver.Maximize
      • G2.Solver.ParseSMT
      • G2.Solver.SMT2
      • G2.Solver.Simplifier
      • G2.Solver.Solver
    • G2.Translation
      • Cabal
        • G2.Translation.Cabal.Cabal
      • G2.Translation.GHC
      • G2.Translation.Haskell
      • G2.Translation.HaskellCheck
      • G2.Translation.InjectSpecials
      • G2.Translation.Interface
      • G2.Translation.PrimInject
      • G2.Translation.TransTypes

Flags

Automatic Flags
NameDescriptionDefault
support-lh

Build modules for reasoning about LiquidHaskell

Enabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.2.0.0
Dependencies array (>=0.5.1.1 && <=0.5.5.0), base (>=4.8 && <4.19), bimap (==0.3.3), bytestring (>=0.10.8.0 && <0.11.6), Cabal (>=2.0.1.0 && <3.11), clock (>=0.8 && <0.9), concurrent-extra (>=0.7 && <0.8), containers (>=0.5 && <0.7), deepseq (>=1.4 && <2), deferred-folds (<=0.9.18.3), Diff (==0.3.4), directory (>=1.3.0.2 && <=1.3.8.1), extra (>=1.6.14 && <1.7.13), filepath (>=1.4 && <=1.5), g2, ghc (>=8.2.2 && <8.4 || >=8.6 && <8.7 || >=8.10 && <9.7), ghc-paths (>=0.1 && <0.2), hashable (>=1.2.6.0 && <=1.4.2.0), HTTP (>=4000.3.0 && <4001.0), language-sygus (>=0.1.1.3 && <0.2), liquid-fixpoint, liquidhaskell, MissingH (>=1.4.0.0 && <1.7), mtl (>=2.2 && <2.4), optparse-applicative (>=0.15.0.0 && <0.18.0.0), parsec (>=3.1 && <3.2), pretty (>=1.1 && <1.4), process (>=1.6 && <1.7), random (>=1.1 && <1.3), reducers (>=3.12 && <3.13), regex-base (>=0.93 && <0.94.0.3), regex-compat (>=0.95 && <0.96), split (>=0.2.3 && <0.2.4), tasty-quickcheck (>=0.10.1.1 && <0.11), template-haskell (>=2.12.0.0 && <=2.20.0.0), temporary-rc (>=1.2 && <1.3), text (>=1.2.3.1 && <=2.1), text-builder (>=0.6.6.1 && <0.7), time (>=1.6 && <=1.13), unordered-containers (>=0.2.10.0 && <0.3) [details]
License BSD-3-Clause
Author William Hallahan, Anton Xue
Maintainer whallahan@binghamton.edu
Revised Revision 1 made by WilliamHallahan at 2024-04-01T17:53:38Z
Category Formal Methods, Symbolic Computation
Source repo head: git clone https://github.com/BillHallahan/G2.git
Uploaded by WilliamHallahan at 2024-03-22T21:17:26Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables Nebula, Inference, G2LH, G2
Downloads 959 total (9 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2024-03-22 [all 2 reports]

Readme for g2-0.2.0.0

[back to package description]

G2 Haskell Symbolic Execution Engine


About

G2 performs lazy symbolic execution of Haskell programs to detect state reachability. It is capable of generating assertion failure counterexamples and solving for higher-order functions.


Dependencies


Setup:

  1. Install GHC.
  2. Install Z3. Ensure Z3 is in your system's path.
  3. Pull the Custom Haskell Standard Library into ~/.g2 by running bash base_setup.sh.

Command line:

Reachability:

cabal run G2 ./tests/Samples/Peano.hs add

LiquidHaskell:

cabal run G2LH ./tests/Liquid/Peano.hs add

Arguments:
  • --n number of reduction steps to run
  • --max-outputs number of inputs/results to display
  • --smt Pass "z3" or "cvc4" to select a solver [Default: Z3]
  • --time Set a timeout in seconds