Datasets

All backends fully supported

Dataset declarations allow specifications to reference external data at scale, without having to replicate it manually in the specification.

Basics

Datasets are declared as follows using the @dataset annotation:

@dataset
myDataset : Tensor Real [28, 28]

Datasets can be any type t that can be constructed from the following grammar:

t ::= List r | Vector r n | Tensor s ns
s ::= Index n | Nat | Int | Real
r ::= t | s

where n is a known constant and ns is a list of known constants.

Once declared, datasets can be used as any other named List, Vector or Tensor would be, e.g.

forall x in myDataset . robustAround x

Supported formats

The actual implementation of the dataset is provided when using the specification during training or verification.

At the moment only the IDX format is supported. A full description of this format can be found at the bottom of this page.

There are numerous libraries for converting datasets into this format:

If you would be interested in other formats being supported, please get in touch.