Inter-procedural Two-Variable Herbrand Equalities
Stefan Schulze Frielinghaus, Michael Petter, Helmut Seidl

TL;DR
This paper presents a method for inter-procedural inference of Herbrand equalities in programs with certain assignment restrictions, using procedure summaries, unique factorization, and an effective fixpoint iteration.
Contribution
It introduces a novel approach combining procedure summaries, unique factorization, and an effective subsumption notion to infer all valid Herbrand equalities across procedures.
Findings
All valid Herbrand equalities can be inferred under the given conditions.
The approach ensures finite conjunctions of equalities through an effective subsumption.
Invariant verification with a constant number of variables is polynomial-time feasible.
Abstract
We prove that all valid Herbrand equalities can be inter-procedurally inferred for programs where all assignments whose right-hand sides depend on at most one variable are taken into account. The analysis is based on procedure summaries representing the weakest pre-conditions for finitely many generic post-conditions with template variables. In order to arrive at effective representations for all occurring weakest pre-conditions, we show for almost all values possibly computed at run-time, that they can be uniquely factorized into tree patterns and a ground term. Moreover, we introduce an approximate notion of subsumption which is effectively decidable and ensures that finite conjunctions of equalities may not grow infinitely. Based on these technical results, we realize an effective fixpoint iteration to infer all inter-procedurally valid Herbrand equalities for these programs. Finally…
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 · Logic, programming, and type systems · Software Engineering Research
