packages feed

copilot-verifier-4.1: copilot-verifier.cabal

Cabal-version: 2.2
Name:          copilot-verifier
Version:       4.1
Author:        Galois Inc.
Maintainer:    rscott@galois.com
Copyright:     (c) Galois, Inc 2021-2024
License:       BSD-3-Clause
License-file:  LICENSE
Build-type:    Simple
Category:      Language
Synopsis:      System for verifying the correctness of generated Copilot programs
Description:
  @copilot-verifier@ is an add-on to the [Copilot Stream
  DSL](https://copilot-language.github.io) for verifying the correctness of C
  code generated by the @copilot-c99@ package.
  .
  @copilot-verifier@ uses the [Crucible symbolic
  simulator](https://github.com/galoisinc/crucible) to interpret the semantics
  of the generated C program and and to produce verification conditions
  sufficient to guarantee that the meaning of the generated program corresponds
  in a precise way to the meaning of the original stream specification. The
  generated verification conditions are then dispatched to SMT solvers to be
  automatically solved.
extra-doc-files: CHANGELOG, README.md

source-repository head
  type:     git
  location: https://github.com/GaloisInc/copilot-verifier
  subdir:   copilot-verifier

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
  default-extensions:
     NondecreasingIndentation
  build-depends:
    aeson >= 1.5 && < 2.3,
    base >= 4.8 && < 4.20,
    bv-sized >= 1.0.0 && < 1.1,
    bytestring,
    containers >= 0.5.9.0,
    copilot-c99 >= 4.1 && < 4.2,
    copilot-core >= 4.1 && < 4.2,
    copilot-theorem >= 4.1 && < 4.2,
    crucible >= 0.7.1 && < 0.8,
    crucible-llvm >= 0.7 && < 0.8,
    crux >= 0.7.1 && < 0.8,
    crux-llvm >= 0.9 && < 0.10,
    filepath,
    lens,
    llvm-pretty >= 0.12.1.0 && < 0.13,
    mtl,
    panic >= 0.3,
    parameterized-utils >= 2.1.4 && < 2.2,
    prettyprinter >= 1.7.0,
    text,
    transformers,
    vector,
    what4 >= 1.6.1 && < 1.7

library
  import: bldflags

  hs-source-dirs: src
  exposed-modules:
    Copilot.Verifier
    Copilot.Verifier.Log

library copilot-verifier-examples
  import: bldflags

  hs-source-dirs: examples
  build-depends:
    case-insensitive,
    copilot >= 4.1 && < 4.2,
    copilot-language >= 4.1 && < 4.2,
    copilot-prettyprinter >= 4.1 && < 4.2,
    copilot-verifier
  exposed-modules:
    Copilot.Verifier.Examples

    Copilot.Verifier.Examples.ShouldFail.Partial.AbsIntMin
    Copilot.Verifier.Examples.ShouldFail.Partial.AddSignedWrap
    Copilot.Verifier.Examples.ShouldFail.Partial.DivByZero
    Copilot.Verifier.Examples.ShouldFail.Partial.IndexOutOfBounds
    Copilot.Verifier.Examples.ShouldFail.Partial.ModByZero
    Copilot.Verifier.Examples.ShouldFail.Partial.MulSignedWrap
    Copilot.Verifier.Examples.ShouldFail.Partial.ShiftLTooLarge
    Copilot.Verifier.Examples.ShouldFail.Partial.ShiftRTooLarge
    Copilot.Verifier.Examples.ShouldFail.Partial.SubSignedWrap

    Copilot.Verifier.Examples.ShouldPass.Array
    Copilot.Verifier.Examples.ShouldPass.ArrayGen
    Copilot.Verifier.Examples.ShouldPass.ArrayOfStructs
    Copilot.Verifier.Examples.ShouldPass.ArrayTriggerArgument
    Copilot.Verifier.Examples.ShouldPass.Arith
    Copilot.Verifier.Examples.ShouldPass.Clock
    Copilot.Verifier.Examples.ShouldPass.Counter
    Copilot.Verifier.Examples.ShouldPass.Engine
    Copilot.Verifier.Examples.ShouldPass.FPOps
    Copilot.Verifier.Examples.ShouldPass.Heater
    Copilot.Verifier.Examples.ShouldPass.IntOps
    Copilot.Verifier.Examples.ShouldPass.Partial.AbsIntMin
    Copilot.Verifier.Examples.ShouldPass.Partial.AddSignedWrap
    Copilot.Verifier.Examples.ShouldPass.Partial.DivByZero
    Copilot.Verifier.Examples.ShouldPass.Partial.IndexOutOfBounds
    Copilot.Verifier.Examples.ShouldPass.Partial.ModByZero
    Copilot.Verifier.Examples.ShouldPass.Partial.MulSignedWrap
    Copilot.Verifier.Examples.ShouldPass.Partial.ShiftLTooLarge
    Copilot.Verifier.Examples.ShouldPass.Partial.ShiftRTooLarge
    Copilot.Verifier.Examples.ShouldPass.Partial.SubSignedWrap
    Copilot.Verifier.Examples.ShouldPass.Structs
    Copilot.Verifier.Examples.ShouldPass.UpdateArray
    Copilot.Verifier.Examples.ShouldPass.UpdateStruct
    Copilot.Verifier.Examples.ShouldPass.Voting
    Copilot.Verifier.Examples.ShouldPass.WCV

executable verify-examples
  import: bldflags

  hs-source-dirs: exe
  main-is: VerifyExamples.hs
  build-depends:
    case-insensitive,
    copilot-verifier,
    copilot-verifier-examples,
    optparse-applicative

test-suite copilot-verifier-test
  import: bldflags

  type: exitcode-stdio-1.0
  hs-source-dirs: test
  build-depends:
    case-insensitive,
    copilot-verifier,
    copilot-verifier-examples,
    silently >= 1.2,
    tasty >= 0.10,
    tasty-expected-failure >= 0.12,
    tasty-hunit >= 0.10
  main-is: Test.hs