CROWNNodeCert #
Per-node α-CROWN certificate checking (graph dialect).
This mirrors NN.Verification.IBPNodeCert, but for affine bounds produced by a CROWN/DeepPoly pass
with optional α-parameters for the ReLU lower relaxation (α-CROWN).
Certificate JSON format:
{
"ctx": { "inputId": 0, "inputDim": 2 },
"ibp": [ null | { "lo": [...], "hi": [...] }, ... ],
"crown": [
null |
{
"loA": [[...], ...], "loC": [...],
"hiA": [[...], ...], "hiC": [...]
},
...
],
"alpha": [ null | [...], ... ] // optional per-node ReLU α vector
}
Trust boundary notes:
- The certificate is untrusted; we accept it only if Lean recomputation matches (within a float tolerance due to JSON decimal serialization).
- Transcendental relaxations are checked only via structural recomputation, not via a formal "libm is correct" guarantee.
The helpers below are the JSON-facing boundary for the CROWN certificate checkers. They parse the artifact, compare decimal-serialized floats with an explicit tolerance, and check parent/shape requirements before invoking the semantic checker.
CROWNNodeCertificate is the in-memory representation of a node-wise CROWN certificate read from JSON.
This is part of the public surface of the checker because readCROWNNodeCertificate returns it,
and because the blueprint points to it as the “shape of the artifact” being checked.
Affine-propagation context, including the chosen input node and flattened input dimension.
- ibp : Array (Option (MLTheory.CROWN.FlatBox Float))
Optional per-node interval bounds used by nonlinear CROWN steps.
- crown : Array (Option (MLTheory.CROWN.Graph.FlatAffineBounds Float))
Optional per-node affine lower/upper bounds.
- alpha : Array (Option (MLTheory.CROWN.Graph.FlatVec Float))
Optional per-node α values for ReLU lower relaxations.
Instances For
Read a CROWN node certificate from JSON on disk.
Instances For
Check the local CROWN enclosure condition for one node against a certificate entry.
Instances For
Check a per-node α-CROWN certificate against Lean's propagation rules.
Returns true iff every node's certificate affine bounds agree (within tol) with what Lean
computes from the certificate parents + ParamStore.