FM Tools Data Schema

Type: object

The schema for fm-tools/data

Type: string

The name of the competition tool.

Type: string

A description of the tool.

Type: array of string

The supported input languages of the tool.

Each item of this array must be:

Type: stringFormat: uri

The URL of the project associated with the tool.

Type: stringFormat: uri

The URL of the tool's repository.

Type: string

The SPDX license identifier of the tool.

Type: string

Tool-info module name of benchexec in the format benchexec.tools..

Type: string

The version of the fm-tools/data format.

Type: array of string

Maintainers of the tool.

Each item of this array must be:

Type: array of object

Information about the maintainers of the tool.

Each item of this array must be:

Type: object

Type: string
Must match regular expression: ^[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{3}[0-9X]$

Type: string or nullFormat: uri

Type: array of object

Information about different versions of the tool.

Each item of this array must be:


Type: object

The following properties are required:

  • version
  • benchexec_toolinfo_options
  • required_ubuntu_packages
  • doi
Type: object

The following properties are required:

  • version
  • benchexec_toolinfo_options
  • required_ubuntu_packages
  • url

Type: string

Type: string or null
Must match regular expression: 10\.5281/zenodo\.[0-9]+$

Type: string or nullFormat: uri

Type: array of string

Each item of this array must be:

Type: array of object

Information about the tool's participation in competitions.

Each item of this array must be:

Type: object

Type: string
Must match regular expression: (SV-COMP|Test-Comp) 20[1-9][0-9]$

Type: enum (of string)

Must be one of:

  • "Validation of Correctness Witnesses 1.0"
  • "Validation of Correctness Witnesses 2.0"
  • "Validation of Violation Witnesses 1.0"
  • "Validation of Violation Witnesses 2.0"
  • "Verification"
  • "Test Generation"
  • "Validation of Test Suites"

Type: array of string

Techniques used by the tool.

Each item of this array must be:


Type: const

CounterExample-Guided Abstraction Refinement is a model-checking technique
that iteratively refines the abstract model of the transition system by
analyzing spurious counterexamples and learning a more precise abstraction.

Literature:

Specific value: "CEGAR"
Type: const

Predicate Abstraction is an abstract domain
in which abstract states represent a set of concrete states using predicated from a given set of predicates (called the precision).
The set of predicates is fixed for one abstraction computation, but can chance from location to location.
There are two kinds of predicate abstraction: cartesian predicate abstraction and boolean predicate abstraction.

Literature:

Specific value: "Predicate Abstraction"
Type: const

Symbolic Execution is model-checking technique
in which a symbolic store assigns values to variables,
where the symbolic values can be constrained by a set of path constraints.

Literature:

Specific value: "Symbolic Execution"
Type: const

Bounded Model Checking (BMC) is a model-checking technique
that unrolls the transition system a finite number of times.

Literature:

Specific value: "Bounded Model Checking"
Type: const

k-Induction generalizes 1-induction.
1-Induction uses as premise that the property holds for the (one) previous object, while
k-induction generalizes it to using as premise that the property holds for the k previous objects.

Literature:

Specific value: "k-Induction"
Type: const

Property-Directed Reachability is a model-checking technique
that constructs a sequence of invariants (also called frames)
that describe the reachable states after a number of transitions,
by continuously refining the invariants directed by paths that
reach a target state.

Literature:

Specific value: "Property-Directed Reachability"
Type: const

Explicit-Value Analysis is a model-checking technique
that stores explicit values for program variables,
with similarities to constant-propagation data-flow analyses
and explicit-state model checking.

Literature:

Specific value: "Explicit-Value Analysis"
Type: const

Numeric Interval Analysis is a data-flow analysis
that is based on the abstract domain of intervals,
in which each program variable is mapped to an interval of values.

Literature:

Specific value: "Numeric Interval Analysis"
Type: const

Shape Analysis

Specific value: "Shape Analysis"
Type: const

Separation Logic provides reasoning about the heap,
which makes is particularly useful for verifying memory safety
and other properties that require the analysis of the program heap.

Literature:

Specific value: "Separation Logic"
Type: const

Bit-Precise Analysis is a technique in which the
abstract domain for tracking values treats variables of type int
as bit vectors, instead of approximating them as (unbounded) integers.

Specific value: "Bit-Precise Analysis"
Type: const

ARG-Based Analysis is a model-checking technique
that stores successor relations in the set of reached abstract states,
which is particularly useful for constructing error paths
once a violation of the specification is found.

Literature:

Specific value: "ARG-Based Analysis"
Type: const

Lazy Abstraction is a technique from software model checking
that lazily refines the abstract model only when and where needed,
resulting in abstract models (ARGs) that can have different precisions
on different paths and on different locations on a path.

Literature:

Specific value: "Lazy Abstraction"
Type: const

Interpolation is a technique from model checking
that computes for a two formulas A and C, for which A → C holds,
a new formula B such that A → B → C
and B contains only symbols that occur in A and C.

Literature:

Specific value: "Interpolation"
Type: const

Automata-Based Analysis is a technique from software model checking
in which automata are used in the analysis algorithm,
either to represent the abstract state space or the specification.

Literature:

Specific value: "Automata-Based Analysis"
Type: const

Concurrency Support comprises techniques
that make it possible to verify concurrent programs,
which use more than one execution thread and shared memory.

Specific value: "Concurrency Support"
Type: const

Ranking Functions are used to prove the termination of loops.
A ranking function maps the program's state to a well-founded set,
often the natural numbers, such that every loop iteration of the program
strictly decreases the value of the function.
If a ranking function for a loop can be found,
it guarantees that the loop terminates.

Literature:

Specific value: "Ranking Functions"
Type: const

Evolutionary Algorithms are heuristic optimization algorithms
that are inspired by biological evolution.
They use mechanisms such as mutation, crossover, and selection
to evolve a population of candidate solutions
towards an optimal or near-optimal solution.

Literature:

Specific value: "Evolutionary Algorithms"
Type: const

Algorithm Selection is a technique that
inspects the input and based on information from the input
(for example, by extracting a feature vector) selects one
algorithm (that seems suited for the input)
from a set of given algorithms.

Literature:

Specific value: "Algorithm Selection"
Type: const

Portfolio is a technique from economics
in which the risk is spread over several targets.
Algorithmic portfolios run several algorithms
in parallel or in sequence (while sharing resources),
in the hope that one of the algorithms finds the solution.

Literature:

Specific value: "Portfolio"
Type: const

Interpolation-Based Model Checking is a model-checking algorithm from 2003
that uses interpolants to over-approximate sets of reachable states.

Literature:

Specific value: "Interpolation-Based Model Checking"
Type: const

Logic Synthesis

Literature:

Specific value: "Logic Synthesis"
Type: const

Task Translation is a technique
that translates a verification task t into another verification task t'
such that an existing verification technique for t' can be used to derive
a verification result for t.

Literature:

Specific value: "Task Translation"
Type: const

Floating-Point Arithmetics provides
precise reasoning about floating-point numbers in programs.
For example, expressions in the program can be translated
to SMT formulas using the theory of floating-point arithmetics.

Literature:

Specific value: "Floating-Point Arithmetics"
Type: const

Guidance by Coverage Measures is a technique
that uses coverage measures to guide the process of verification or test generation.

Specific value: "Guidance by Coverage Measures"
Type: const

Random Execution is a technique for black-box testing
in which input values are randomly generated to construct
a test suite for the system under test.

Specific value: "Random Execution"
Type: const

Targeted Input Generation is a technique for software testing
that focuses on generating input values
that are likely to trigger specific behaviors or execution paths in the system.

Specific value: "Targeted Input Generation"

Type: array of string

Frameworks or solvers used by the tool.

Each item of this array must be:


Type: const

CPAchecker

Specific value: "CPAchecker"
Type: const

CProver

Specific value: "CProver"
Type: const

ESBMC

Specific value: "ESBMC"
Type: const

JPF

Specific value: "JPF"
Type: const

Ultimate

Specific value: "Ultimate"
Type: const

JavaSMT

Specific value: "JavaSMT"
Type: const

MathSAT

Specific value: "MathSAT"
Type: const

CVC

Specific value: "CVC"
Type: const

SMTinterpol

Specific value: "SMTinterpol"
Type: const

Z3

Specific value: "Z3"
Type: const

MiniSAT

Specific value: "MiniSAT"
Type: const

Apron

Specific value: "Apron"

Type: array of object

Actors/components that are used by the tool.

Each item of this array must be:

Type: object

Type: array of object

Relevant literature references for the tool.

Each item of this array must be:

Type: object

Type: string
Must match regular expression: 10\.[0-9]{4,9}\/.*

Type: string

Type: integer

Type: array of object

Custom licenses used by the tool (applicable if no matching SPDX identifier exists).

Each item of this array must be:

Type: object

Type: string

Type: string