From Polynomial Invariants to Linear Loops
George Kenison, Laura Kov\'acs, Anton Varonka

TL;DR
This paper introduces a novel approach to program loop synthesis by generating loops from polynomial invariants, using algebraic geometry techniques to produce linear loops with complex polynomial invariants, thus enabling new optimization strategies.
Contribution
It proposes a method to synthesize loops from polynomial invariants, transforming the invariant generation problem into a symbolic computation challenge using algebraic geometry.
Findings
Loops with polynomial invariants can be synthesized as linear loops.
The approach leverages algebraic geometry to generate loops with specified polynomial invariants.
The method enables new avenues for program optimization.
Abstract
Loop invariants are software properties that hold before and after every iteration of a loop. As such, invariants provide inductive arguments that are key in automating the verification of program loops. The problem of generating loop invariants; in particular, invariants described by polynomial relations (so called polynomial invariants), is therefore one of the hardest problems in software verification. In this paper we advocate an alternative solution to invariant generation. Rather than inferring invariants from loops, we synthesise loops from invariants. As such, we generate loops that satisfy a given set of polynomials; in other words, our synthesised loops are correct by construction. Our work turns the problem of loop synthesis into a symbolic computation challenge. We employ techniques from algebraic geometry to synthesise loops whose polynomial invariants are described by…
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
TopicsLogic, programming, and type systems · Formal Methods in Verification · Software Testing and Debugging Techniques
