Higher-order Program Verification as Satisfiability Modulo Theories with Algebraic Data-types
Nikolaj Bjorner, Ken McMillan, Andrey Rybalchenko

TL;DR
This paper presents a novel approach to higher-order program verification by encoding programs as first-order SMT problems over Horn clauses, utilizing algebraic data-types to handle closures effectively.
Contribution
It introduces a method that encodes higher-order programs as SMT problems with algebraic data-types, enabling the use of existing solvers for verification.
Findings
Encoding closures with algebraic data-types is effective.
The approach leverages existing SMT solvers supporting algebraic data-types.
Preliminary examples demonstrate viability for higher-order program verification.
Abstract
We report on work in progress on automatic procedures for proving properties of programs written in higher-order functional languages. Our approach encodes higher-order programs directly as first-order SMT problems over Horn clauses. It is straight-forward to reduce Hoare-style verification of first-order programs into satisfiability of Horn clauses. The presence of closures offers several challenges: relatively complete proof systems have to account for closures; and in practice, the effectiveness of search procedures depend on encoding strategies and capabilities of underlying solvers. We here use algebraic data-types to encode closures and rely on solvers that support algebraic data-types. The viability of the approach is examined using examples from the literature on higher-order program verification.
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 Engineering Research
