packages feed

qute-symex-0.1.0: qute-symex.cabal

cabal-version:      3.4
name:               qute-symex
version:            0.1.0
synopsis:           A symbolic execution engine for the QBE intermediate language.
description:
  Based on the formal semantics of the [Qute](https://hackage.haskell.org/package/qute) package,
  this library provides a [symbolic execution](https://en.wikipedia.org/wiki/Symbolic_execution)
  engine for the QBE intermediate language. Thereby, it enables formal reasoning about a software
  under test using [SMT solvers](https://en.wikipedia.org/wiki/Satisfiability_modulo_theories).

  The underlying vision behind Qute's symbolic execution engine is further described in a
  [separate paper](https://www.ibr.cs.tu-bs.de/vss/Publications/2026/tempel_26_qute.pdf).
license:            GPL-3.0-only AND MIT
-- license-file:
author:             Sören Tempel
maintainer:         soeren+hackage@soeren-tempel.net
-- copyright:
category:           Language
build-type:         Simple
homepage:           https://git.8pit.net/qute
bug-reports:        https://github.com/nmeum/qute/issues

source-repository head
    type: git
    location: https://git.8pit.net/qute.git

common warnings
    -- -Wall-missed-specializations can be useful too
    ghc-options: -Wall

common opts
    ghc-options: -fspecialise-aggressively

library
    import:           warnings, opts
    -- other-modules:
    hs-source-dirs:   src
    default-language: GHC2021

    build-depends:
      base >= 4.16.4.0 && < 4.23,
      deepseq >= 1.4.6.1 && < 1.6,
      mtl >= 2.2.2 && < 2.4,
      directory >= 1.3.6.2 && < 1.4,
      containers >= 0.6.5.1 && < 0.9,
      exceptions >= 0.10.4 && < 0.11,
      random >= 1.2.1.1 && < 1.4,
      qute == 0.1.*,
      qute-syntax == 0.1.*,
      simple-smt >= 0.9.8 && < 0.10

    exposed-modules:
      SimpleBV,
      Language.QBE.Backend,
      Language.QBE.Backend.Model,
      Language.QBE.Backend.Store,
      Language.QBE.Backend.ExecTree,
      Language.QBE.Backend.DFS,
      Language.QBE.Backend.Tracer,
      Language.QBE.Simulator.Explorer,
      Language.QBE.Simulator.Symbolic.Expression,
      Language.QBE.Simulator.Concolic.State,
      Language.QBE.Simulator.Concolic.Expression

benchmark qute-symex
    import:           warnings, opts
    default-language: GHC2021
    type:             exitcode-stdio-1.0
    hs-source-dirs:   bench
    main-is:          Main.hs

    other-modules:
      SMTUnwind,
      SMT,
      Exec

    build-depends:
      base,
      criterion ^>= 1.6.4.0,
      mtl,
      simple-smt,
      process,
      filepath,
      qute,
      qute-syntax,
      qute-symex

test-suite qute-symex-test
    import:           warnings
    default-language: GHC2021
    type:             exitcode-stdio-1.0
    hs-source-dirs:   test
    main-is:          Main.hs

    other-modules:
      Util,
      Golden,
      Backend,
      Explorer,
      Symbolic,
      Concolic,
      BV

    build-depends:
        base,
        filepath,
        containers,
        random,
        qute,
        qute-syntax,
        qute-symex,
        simple-smt,
        tasty            >=1.4.3,
        tasty-hunit      >=0.10,
        tasty-golden     >=2.3.5,
        tasty-quickcheck >=0.10.2