Type: array

Each item of this array must be:


Type: object

Loop invariants are important building blocks in software verification. Many verification approaches use loop invariants as lemmata to construct proofs of correctness.


Example:

entry_type: loop_invariant
metadata:
  format_version: 0.1
  uuid: 91023a0f-9f45-4385-88c4-1152ade45537
  creation_time: '2021-05-05T13:18:43.000Z'
  producer:
    name: CPAchecker
    version: 2.0.1-svn
    configuration: svcomp21--04-kInduction
  task:
    input_files:
    - multivar_1-1.c
    input_file_hashes:
      multivar_1-1.c: 511f45a8d763ef520f6d92e4135c8572805994a66531c6216b17157d0dde2f9c
    specification: CHECK( init(main()), LTL(G ! call(reach_error())) )
    data_model: ILP32
    language: C
location:
  file_name: multivar_1-1.c
  file_hash: 511f45a8d763ef520f6d92e4135c8572805994a66531c6216b17157d0dde2f9c
  line: 22
  column: 0
  function: main
loop_invariant:
  string: (x >= 1024U) && (x <= 4294967295U) && (y == x)
  type: assertion
  format: C

Type: const
Specific value: "loop_invariant"

Type: object

Information that identifies the entry and describes the context of its production.

Type: const

Version of the format of the entry.

Specific value: "0.1"

Type: string

Unique identifier of the entry (RFC4122 defines the UUID format).

Type: stringFormat: date-time

Date and time in ISO8601 format when the entry (not the file) was created.

Type: object

Producer of the entry.

Type: string

Name of the producer.

Type: string

Version of the producer.

Type: string

Configuration of the producer. Should be used to distinguish different configurations of the same version of the producer.

Type: string

Additional description about the producer. Could be used for any information that does not fit into any of the other producer properties.

Type: string

Bash-compliant command line used to produce the entry. Should be used to improve reproducibility.

Type: object

Verification task for which the entry was produced.

Type: array of string

Files belonging to the verification task that were given as input to the producer.

Each item of this array must be:

Type: string

Bash-compliant file name pattern, which must represent exactly one file.

Type: object

SHA-256 hashes of each file in input_files. Every file name pattern listed in input_files must appear as a key.

Each additional property must conform to the following schema

Type: string

SHA-256 hash.

Must match regular expression: [0-9a-fA-F]{64}

Type: string

Specification in SV-COMP format against which the verification is done.

Type: enum (of string)

Data model to be assumed for the task.

Must be one of:

  • "ILP32"
  • "LP64"

Type: string

Source language of the input files.


Examples:

C
Java

Type: object

Location in the source code where the loop invariant holds.

Type: string

Name of the file. Must be present in task.input_files.

Type: string

SHA-256 hash of the file.

Must match regular expression: [0-9a-fA-F]{64}

Type: integer

Line in the file (starting with 1).

Value must be greater or equal to 1

Type: integer

Column in the file (starting with 0). Column 0 refers to the very beginning of the line (before any characters).

Value must be greater or equal to 0

Type: string

Name of the surrounding function.

Type: object

The loop invariant description.

Type: string

The invariant itself.

Type: enum (of string)

Interpretation of string. The following values are supported:

  • assertion: Assertion, e.g. assert(<string>) in C, inserted at the specified location. The insertion is hypothetical and doesn't affect other locations.

Must be one of:

  • "assertion"

Type: enum (of string)

Format of string. The following values are supported:

  • C: Expression in C language.

Must be one of:

  • "C"
Type: object

Loop invariant certificates document validation attempts of loop invariants, for example by trying to use the target loop invariant in a proof of correctness.

Certificates document correctness and trustworthiness of invariants.


Example:

entry_type: loop_invariant_certificate
metadata:
  format_version: 0.1
  uuid: 954affa9-32e4-4b35-85ae-888da3a6a53b
  creation_time: '2021-05-05T13:18:43.000Z'
  producer:
    name: CPAchecker
    version: 2.0.1-svn
    configuration: svcomp21--04-kInduction
target:
  uuid: 91023a0f-9f45-4385-88c4-1152ade45537
  type: loop-invariant
  file_hash: 511f45a8d763ef520f6d92e4135c8572805994a66531c6216b17157d0dde2f9c
certification:
  string: confirmed
  type: verdict
  format: confirmed | rejected

Type: const
Specific value: "loop_invariant_certificate"

Type: object

Information that identifies the certificate entry and describes the context of its production.

Type: const

Version of the format of the certificate entry.

Specific value: "0.1"

Type: string

Unique identifier of the entry (RFC4122 defines the UUID format).

Type: stringFormat: date-time

Date and time in ISO8601 format when the certificate entry (not the file or target entry) was created.

Type: object

Producer of the certificate entry.

Type: string

Name of the producer.

Type: string

Version of the producer.

Type: string

Configuration of the producer. Should be used to distinguish different configurations of the same version of the producer.

Type: string

Additional description about the producer. Could be used for any information that does not fit into any of the other producer properties.

Type: string

Bash-compliant command line used to produce the entry. Should be used to improve reproducibility.

Type: object

Target entry of type loop_invariant which is being certified.

Type: string

Unique identifier of the target entry.

Type: string

entry_type of the target entry.

Type: string

SHA-256 hash of the target file.

Must match regular expression: [0-9a-fA-F]{64}

Type: object

The loop invariant certification result description.

Type: string

The certification result itself.

Type: enum (of string)

Interpretation of string. The following values are supported:

  • verdict: Verdict about the targeted entry.

Must be one of:

  • "verdict"

Type: enum (of string)

Format of string. The following values are supported:

  • confirmed | rejected: Either "confirmed" or "rejected".

Must be one of:

  • "confirmed | rejected"