DrNLA: Extending Verification to Non-linear Programs through Dual Re-writing
Yuandong Cyrus Liu, Ton-Chanh Le, Timos Antonopoulos, Eric Koskinen,, ThanhVu Nguyen

TL;DR
This paper introduces DrNLA, a method to convert non-linear integer arithmetic programs into linear ones using dual rewriting, enabling existing linear verification tools to analyze more complex programs.
Contribution
The paper presents dual rewriting, a novel technique for transforming NLA expressions into LIA, expanding verification capabilities for non-linear programs.
Findings
DrNLA successfully rewrites NLA programs into LIA equivalents.
Enabled verification of 42 previously unverified NLA programs.
Created the first benchmark set for branching-time verification of NLA programs.
Abstract
For many decades, advances in static verification have focused on linear integer arithmetic (LIA) programs. Many real-world programs are, however, written with non-linear integer arithmetic (NLA) expressions, such as programs that model physical events, control systems, or nonlinear activation functions in neural networks. While there are some approaches to reasoning about such NLA programs, still many verification tools fall short when trying to analyze them. To expand the scope of existing tools, we introduce a new method of converting programs with NLA expressions into semantically equivalent LIA programs via a technique we call dual rewriting. Dual rewriting discovers a linear replacement for an NLA Boolean expression (e.g. as found in conditional branching), simultaneously exploring both the positive and negative side of the condition, and using a combination of static validation…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsFormal Methods in Verification · Adversarial Robustness in Machine Learning · Software Testing and Debugging Techniques
