Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
This module provides various helper functionality for participating in the SV-COMP comptetion, including parsing comptetion set files, configuration data, reporting results, etc.
Synopsis
- data SVCOMPOptions (f :: Type -> Type) = SVCOMPOptions {
- svcompBlacklist :: [FilePath]
- svcompArch :: f Arch
- svcompSpec :: f FilePath
- svcompWitnessOutput :: FilePath
- data Arch
- archSpec :: ValueSpec Arch
- parseArch :: (Arch -> opts -> opts) -> String -> OptSetter opts
- processSVCOMPOptions :: SVCOMPOptions Maybe -> IO (SVCOMPOptions Identity)
- svcompOptions :: Config (SVCOMPOptions Maybe)
- propertyVerdict :: VerificationTask -> Maybe Bool
- data ComputedVerdict
- data BenchmarkSet = BenchmarkSet {}
- data SVCompProperty
- data SVCompLanguage
- = C CDataModel
- | Java
- data CDataModel
- data VerificationTask = VerificationTask {}
- checkParse :: Parser SVCompProperty
- coverParse :: Parser SVCompProperty
- bracketedText :: Parser Text
- propParse :: Parser SVCompProperty
- loadVerificationTask :: FilePath -> IO VerificationTask
- compilePats :: [Text] -> [Pattern]
- loadSVCOMPBenchmarks :: CruxOptions -> IO [BenchmarkSet]
- loadBenchmarkSet :: FilePath -> IO BenchmarkSet
- type TaskMap = Map VerificationTask [BenchmarkSet]
- deduplicateTasks :: [BenchmarkSet] -> TaskMap
Documentation
data SVCOMPOptions (f :: Type -> Type) Source #
SVCOMPOptions | |
|
processSVCOMPOptions :: SVCOMPOptions Maybe -> IO (SVCOMPOptions Identity) Source #
We cannot verify an SV-COMP program without knowing the architecture and the specification. Unfortunately, Crux's command-line argument parser makes it somewhat awkward to require certain arguments (without defaults). As a hacky workaround, we parse the command-line arguments for the architecture/specification as if they were optional and later check here to see if they were actually provided, throwing an error if they were not provided.
data ComputedVerdict Source #
Instances
data BenchmarkSet Source #
Instances
Show BenchmarkSet Source # | |
Defined in Crux.SVCOMP showsPrec :: Int -> BenchmarkSet -> ShowS # show :: BenchmarkSet -> String # showList :: [BenchmarkSet] -> ShowS # | |
Eq BenchmarkSet Source # | |
Defined in Crux.SVCOMP (==) :: BenchmarkSet -> BenchmarkSet -> Bool # (/=) :: BenchmarkSet -> BenchmarkSet -> Bool # | |
Ord BenchmarkSet Source # | |
Defined in Crux.SVCOMP compare :: BenchmarkSet -> BenchmarkSet -> Ordering # (<) :: BenchmarkSet -> BenchmarkSet -> Bool # (<=) :: BenchmarkSet -> BenchmarkSet -> Bool # (>) :: BenchmarkSet -> BenchmarkSet -> Bool # (>=) :: BenchmarkSet -> BenchmarkSet -> Bool # max :: BenchmarkSet -> BenchmarkSet -> BenchmarkSet # min :: BenchmarkSet -> BenchmarkSet -> BenchmarkSet # |
data SVCompProperty Source #
CheckNoError Text | |
CheckValidFree | |
CheckValidDeref | |
CheckValidMemtrack | |
CheckValidMemCleanup | |
CheckDefBehavior | |
CheckNoOverflow | |
CheckTerminates | |
CoverageFQL Text |
Instances
data SVCompLanguage Source #
Instances
Show SVCompLanguage Source # | |
Defined in Crux.SVCOMP showsPrec :: Int -> SVCompLanguage -> ShowS # show :: SVCompLanguage -> String # showList :: [SVCompLanguage] -> ShowS # | |
Eq SVCompLanguage Source # | |
Defined in Crux.SVCOMP (==) :: SVCompLanguage -> SVCompLanguage -> Bool # (/=) :: SVCompLanguage -> SVCompLanguage -> Bool # | |
Ord SVCompLanguage Source # | |
Defined in Crux.SVCOMP compare :: SVCompLanguage -> SVCompLanguage -> Ordering # (<) :: SVCompLanguage -> SVCompLanguage -> Bool # (<=) :: SVCompLanguage -> SVCompLanguage -> Bool # (>) :: SVCompLanguage -> SVCompLanguage -> Bool # (>=) :: SVCompLanguage -> SVCompLanguage -> Bool # max :: SVCompLanguage -> SVCompLanguage -> SVCompLanguage # min :: SVCompLanguage -> SVCompLanguage -> SVCompLanguage # |
data CDataModel Source #
Instances
Show CDataModel Source # | |
Defined in Crux.SVCOMP showsPrec :: Int -> CDataModel -> ShowS # show :: CDataModel -> String # showList :: [CDataModel] -> ShowS # | |
Eq CDataModel Source # | |
Defined in Crux.SVCOMP (==) :: CDataModel -> CDataModel -> Bool # (/=) :: CDataModel -> CDataModel -> Bool # | |
Ord CDataModel Source # | |
Defined in Crux.SVCOMP compare :: CDataModel -> CDataModel -> Ordering # (<) :: CDataModel -> CDataModel -> Bool # (<=) :: CDataModel -> CDataModel -> Bool # (>) :: CDataModel -> CDataModel -> Bool # (>=) :: CDataModel -> CDataModel -> Bool # max :: CDataModel -> CDataModel -> CDataModel # min :: CDataModel -> CDataModel -> CDataModel # |
data VerificationTask Source #
Instances
Show VerificationTask Source # | |
Defined in Crux.SVCOMP showsPrec :: Int -> VerificationTask -> ShowS # show :: VerificationTask -> String # showList :: [VerificationTask] -> ShowS # | |
Eq VerificationTask Source # | |
Defined in Crux.SVCOMP (==) :: VerificationTask -> VerificationTask -> Bool # (/=) :: VerificationTask -> VerificationTask -> Bool # | |
Ord VerificationTask Source # | |
Defined in Crux.SVCOMP compare :: VerificationTask -> VerificationTask -> Ordering # (<) :: VerificationTask -> VerificationTask -> Bool # (<=) :: VerificationTask -> VerificationTask -> Bool # (>) :: VerificationTask -> VerificationTask -> Bool # (>=) :: VerificationTask -> VerificationTask -> Bool # max :: VerificationTask -> VerificationTask -> VerificationTask # min :: VerificationTask -> VerificationTask -> VerificationTask # |
compilePats :: [Text] -> [Pattern] Source #
loadSVCOMPBenchmarks :: CruxOptions -> IO [BenchmarkSet] Source #
type TaskMap = Map VerificationTask [BenchmarkSet] Source #
deduplicateTasks :: [BenchmarkSet] -> TaskMap Source #
There is significant overlap between the various verification tasks found in different benchmark sets in the SV-COMP repository. This operation collects together all the potentially duplicated tasks found in a collection of benchmark sets and places them in a map, ensuring there is at most one reference to each one. The tasks are the keys of the map; the benchmark set(s) that referenced a given task are stored in the elements the map.