sbv-11.4: SMT Based Verification: Symbolic Haskell theorem prover using SMT solving.
Copyright(c) Levent Erkok
LicenseBSD3
Maintainererkokl@gmail.com
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Data.SBV.Tools.BMC

Description

Bounded model checking interface. See Documentation.SBV.Examples.ProofTools.BMC for an example use case.

Synopsis

Documentation

bmcRefute Source #

Arguments

:: (Queriable IO st, res ~ QueryResult st) 
=> Maybe Int

Optional bound

-> Bool

Verbose: prints iteration count

-> Symbolic ()

Setup code, if necessary. (Typically used for setOption calls. Pass return () if not needed.)

-> (st -> SBool)

Initial condition

-> (st -> st -> SBool)

Transition relation

-> (st -> SBool)

Goal to cover, i.e., we find a set of transitions that satisfy this predicate.

-> IO (Either String (Int, [res]))

Either a result, or a satisfying path of given length and intermediate observations.

Refutation using bounded model checking, using the default solver. This version tries to refute the goal in a depth-first fashion. Note that this method can find a refutation, but will never find a "proof." If it finds a refutation, it will be the shortest, though not necessarily unique.

bmcRefuteWith Source #

Arguments

:: (Queriable IO st, res ~ QueryResult st) 
=> SMTConfig

Solver to use

-> Maybe Int

Optional bound

-> Bool

Verbose: prints iteration count

-> Symbolic ()

Setup code, if necessary. (Typically used for setOption calls. Pass return () if not needed.)

-> (st -> SBool)

Initial condition

-> (st -> st -> SBool)

Transition relation

-> (st -> SBool)

Goal to cover, i.e., we find a set of transitions that satisfy this predicate.

-> IO (Either String (Int, [res]))

Either a result, or a satisfying path of given length and intermediate observations.

Refutation using a given solver.

bmcCover Source #

Arguments

:: (Queriable IO st, res ~ QueryResult st) 
=> Maybe Int

Optional bound

-> Bool

Verbose: prints iteration count

-> Symbolic ()

Setup code, if necessary. (Typically used for setOption calls. Pass return () if not needed.)

-> (st -> SBool)

Initial condition

-> (st -> st -> SBool)

Transition relation

-> (st -> SBool)

Goal to cover, i.e., we find a set of transitions that satisfy this predicate.

-> IO (Either String (Int, [res]))

Either a result, or a satisfying path of given length and intermediate observations.

Covers using bounded model checking, using the default solver. This version tries to cover the goal in a depth-first fashion. Note that this method can find a cover, but will never find determine that a goal is not coverable. If it finds a cover, it will be the shortest, though not necessarily unique.

bmcCoverWith Source #

Arguments

:: (Queriable IO st, res ~ QueryResult st) 
=> SMTConfig

Solver to use

-> Maybe Int

Optional bound

-> Bool

Verbose: prints iteration count

-> Symbolic ()

Setup code, if necessary. (Typically used for setOption calls. Pass return () if not needed.)

-> (st -> SBool)

Initial condition

-> (st -> st -> SBool)

Transition relation

-> (st -> SBool)

Goal to cover, i.e., we find a set of transitions that satisfy this predicate.

-> IO (Either String (Int, [res]))

Either a result, or a satisfying path of given length and intermediate observations.

Cover using a given solver.