This repository is the official Agda library for interacting with the VNN-LIB standard. It includes:
ONNX.Syntax: abstract interface for the syntax of ONNXONNX.Semantics: abstract interface for the semantics of ONNXONNX.Parser: very minimal abstract interface for parsing ONNX constantsVNNLIB.Syntax: intrinsically-typed syntax for VNNLIB queriesVNNLIB.Parser: ability to parse/type-check a string into VNNLIB queries.VNNLIB.Semantics: semantics for VNNLIB queriesVNNLIB.Theories: orthogonal subsets of the query syntaxVNNLIB.Logics: overall subsets of the query syntaxVNNLIB.Solver: an interface for solvers of VNNLIB queriesVNNLIB.Example: some simple examples of how to use the library.
- Does not yet cover all the logics and theories in VNNLIB 2.0.
| VNNLIB-Agda version | VNNLIB version |
|---|---|
| v1.0.0 - v1.1.1 | v2.0 |
- Agda Standard Library v2.3
- BNFC Parser v2.9.5
Later versions of these tools may work but are not tested.
Agda does not yet have a good story for distributing libraries. Please follow the following instructions:
-
Install the Agda standard library
-
Clone this repository with submodules and navigate into it:
git clone --recurse-submodules https://github.com/VNNLIB/VNNLIB-Agda.git cd VNNLIB-Agda -
Generate the BNFC parser from the official VNNLIB BNFC grammar:
bnfc -d --agda VNNLIB-Standard/grammar.cf -o src -p VNNLIB
See the VNNLIB.Examples file for:
-
An example of how to represent a simple VNNLIB query natively in Agda
-
How to prove the soundness of a simple, example compiler pass.