Neural Network Verification is a Programming Language Challenge
Lucas C. Cordeiro, Matthew L. Daggitt, Julien Girard-Satabin, Omri Isac, Taylor T. Johnson, Guy Katz, Ekaterina Komendantskaya, Augustin Lemesle, Edoardo Manino, Artjoms Šinkarovs, Haoze Wu
TL;DR
This work reframes neural network verification as a programming-language challenge, arguing that robust properties cannot be guaranteed without language-level specifications and integrated backends. It surveys the current state, including ONNX-based representations and VNN-LIB-style queries, and highlights critical gaps: the Embedding Gap between problem-space and embedding-space, and the Implementation Gap arising from architecture translation, numerical types, non-determinism, and quantisation. The authors discuss prototypes like CAISAR and Vehicle that advance higher-level specification languages and emphasize the need for a unified dependently-typed language and formal interfaces to connect ML pipelines with verification tooling. The paper envisions a future where a single expressive language can encode training, specification, and verification, with proof-carrying modules and certified checkers, significantly impacting safety-critical ML systems and cyber-physical systems through rigorous, machine-checked guarantees.
Abstract
Neural network verification is a new and rapidly developing field of research. So far, the main priority has been establishing efficient verification algorithms and tools, while proper support from the programming language perspective has been considered secondary or unimportant. Yet, there is mounting evidence that insights from the programming language community may make a difference in the future development of this domain. In this paper, we formulate neural network verification challenges as programming language challenges and suggest possible future solutions.
