,
Luko van der Maas
,
Enrico Tassi
Creative Commons Attribution 4.0 International license
Inductive predicates play a key role in program verification using separation logic. There are many methods for defining such predicates in separation logic, which all have different conditions and thus support different classes of predicates. The most common methods are: (1) through a structurally-recursive definition (commonly used to define representation predicates for the verification of data structures), and (2) through step-indexing (commonly used to give a semantics of Hoare triples for partial program correctness). A lesser-known method is to define such inductive predicates internally in higher-order separation logic through a least fixpoint of a monotone function. The contributions of this paper are fourfold. First, we present the folklore result (from the Iris library) that one can define least (and greatest) fixpoints internally in separation logic by extending the standard second-order impredicative encoding with some modalities. Second, we show that these fixpoints are useful to define representation predicates where the mathematical and in-memory data structures do not correspond. Third, we show that these fixpoints can be used to define Hoare triples and weakest preconditions for total program correctness in Iris. Fourth, we present a prototype command (akin to Rocq’s Inductive), written in Rocq-Elpi, to generate the least fixpoint and its reasoning principles (constructors and induction principles) from a high-level specification.
@InProceedings{krebbers_et_al:LIPIcs.ITP.2025.27,
author = {Krebbers, Robbert and van der Maas, Luko and Tassi, Enrico},
title = {{Inductive Predicates via Least Fixpoints in Higher-Order Separation Logic}},
booktitle = {16th International Conference on Interactive Theorem Proving (ITP 2025)},
pages = {27:1--27:21},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-396-6},
ISSN = {1868-8969},
year = {2025},
volume = {352},
editor = {Forster, Yannick and Keller, Chantal},
publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik},
address = {Dagstuhl, Germany},
URL = {https://drops.dagstuhl.de/entities/document/10.4230/LIPIcs.ITP.2025.27},
URN = {urn:nbn:de:0030-drops-246258},
doi = {10.4230/LIPIcs.ITP.2025.27},
annote = {Keywords: Separation Logic, Program Verification, Data Structures, Iris, Rocq prover}
}