Skip to main content

Verification Condition Generator

Project description

Verification Condition Generator

PyVCG is a utility library to generate VCs directly for CVC5 or standard-compliant SMTLIB2. The interface is deliberately generic and it should be easy to add API support for other solvers in the future.

This is pretty limited for now as the initial target is the expression language of TRLC.

Features

This library provides a wrapper around SMTLIB with some additional features:

  • SMTLIB Scripts
  • Automatic (minimal) logic discovery
  • Basic sorts: Bool, Int, Real, and String
  • Parametric sorts: Sequences
  • Datatype sorts: Enumerations and Records
  • Uninterpreted functions
  • Quantifiers
  • Boolean expressions: not, and, or, xor, implication
  • If-then-else expressions
  • Comparisons: =, <, >, <=, >=
  • Int -> Real conversion
  • Real -> Int conversion (smtlib rounding (round-to-negative) and arithmetic rounding (round-nearest-away))
  • Unary arithmetic: -, abs
  • Binary Int arithmetic: +, -, *, smtlib div, smtlib mod, python div, ada remainder
  • Binary Real arithmetic: +, -, *, /
  • String operations: length, contains, prefix, suffix, concatenation
  • Sequence operations: length, contains, access, concatenation
  • Record operations: access

In addition this library provides a graph to build VCs with multiple paths; and generating VCs for all paths. FastWP and higher-level modelling for language features (e.g. ite, loops) are planned later.

Drivers

Current support for outputs:

  • SMTLIB (for writing and debugging)
  • CVC5 API (for solving)

Dependencies

Run-time

  • Python >= 3.9
  • cvc5

Development

Copyright & License

The sole copyright holder is Florian Schanda.

This library is licensed under the GNU GPL version 3 (or later).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyVCG-1.0.3.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

PyVCG-1.0.3-py3-none-any.whl (30.7 kB view details)

Uploaded Python 3

File details

Details for the file PyVCG-1.0.3.tar.gz.

File metadata

  • Download URL: PyVCG-1.0.3.tar.gz
  • Upload date:
  • Size: 32.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.2

File hashes

Hashes for PyVCG-1.0.3.tar.gz
Algorithm Hash digest
SHA256 e3140d4fbf53144fe31cb249bc950a941cf2cbda1dfbaf45005da4d0c5d90df6
MD5 5e464abea5e0bac97c3916d24de81749
BLAKE2b-256 55d38f3af7983cae1ce44e5531f89f991d93d57552e2188258c95653a4cfe7dd

See more details on using hashes here.

File details

Details for the file PyVCG-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: PyVCG-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 30.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.2

File hashes

Hashes for PyVCG-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1ffaa76655cb0a517d7e0bfd8f2b3d2e31499065a0400dc51de514f2763ba0bf
MD5 bd1cfe9ca959b13e6332dde71e623252
BLAKE2b-256 088034f021bb1f311a002e5a9bd7372fa96ef06d2939916ade6d4ded64e89e1e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page