Steel is a language for developing and proving concurrent programs embedded in Fg, a dependently typed programming language and proof assistant. Based on SteelCore, a concurrent separation logic (CSL) formalized in Fg, our work focuses on exposing the proof rules of the logic in a form that enables programs and proofs to be effectively co-developed. Our main contributions include a new formulation of a Hoare logic of quintuples involving both separation logic and first-order logic, enabling efficient verification condition (VC) generation and proof discharge using a combination of tactics and SMT solving. We relate the VCs produced by our quintuple system to solving a system of associativity-commutativity (AC) unification constraints and develop tactics to (partially) solve these constraints using AC-matching modulo SMT-dischargeable equations. Our system is fully mechanized and implemented in Fg. We evaluate it by developing several verified programs and libraries, including various sequential and concurrent linked data structures, proof libraries, and a library for 2-party session types. Our experience leads us to conclude that our system enables a mixture of automated and interactive proof, making it productive to build programs foundationally verified against a highly expressive, state-of-the-art CSL.
CITATION STYLE
Fromherz, A., Rastogi, A., Swamy, N., Gibson, S., Martínez, G., Merigoux, D., & Ramananandro, T. (2021). Steel: proof-oriented programming in a dependently typed concurrent separation logic. In Proceedings of the ACM on Programming Languages (Vol. 5). Association for Computing Machinery. https://doi.org/10.1145/3473590
Mendeley helps you to discover research relevant for your work.