Abstract
This paper presents a theory of non-linear integer/real arithmetic and algorithms for reasoning about this theory. The theory can be conceived of as an extension of linear integer/real arithmetic with a weakly-axiomatized multiplication symbol, which retains many of the desirable algorithmic properties of linear arithmetic. In particular, we show that the conjunctive fragment of the theory can be effectively manipulated (analogously to the usual operations on convex polyhedra, the conjunctive fragment of linear arithmetic). As a result, we can solve the following consequence-finding problem: given a ground formula F, find the strongest conjunctive formula that is entailed by F. As an application of consequence-finding, we give a loop invariant generation algorithm that is monotone with respect to the theory and (in a sense) complete. Experiments show that the invariants generated from the consequences are effective for proving safety properties of programs that require non-linear reasoning.
Original language | English (US) |
---|---|
Pages (from-to) | 1275-1307 |
Number of pages | 33 |
Journal | Proceedings of the ACM on Programming Languages |
Volume | 7 |
Issue number | POPL |
DOIs | |
State | Published - Jan 9 2023 |
All Science Journal Classification (ASJC) codes
- Software
- Safety, Risk, Reliability and Quality
Keywords
- Convex polyhedra
- Decision procedures
- Nonlinear invariant generation
- Polynomial ideals
- Program analysis
- Theory of arithmetic