{"OA_type":"hybrid","abstract":[{"lang":"eng","text":"Program logics have proven a successful strategy for verification of complex programs. By providing local reasoning and means of abstraction and composition, they allow reasoning principles for individual components of a program to be combined to prove guarantees about a whole program. Crucially, these components and their proofs can be reused. However, this reuse is only available once the program logic has been defined. It is a frustrating fact of the status quo that whoever defines a new program logic must establish every part, both semantics and proof rules, from scratch. In spite of programming languages and program logics typically sharing many core features, reuse is generally not available across languages. Even inside one language, if the same underlying operation appears in multiple language primitives, reuse is typically not possible when establishing proof rules for the program logic.\r\nTo enable reuse across and inside languages when defining complex program logics (and proving them sound), we serve program logics à la carte by combining program logic fragments for the various effects of the language. Among other language features, the menu includes shared state, concurrency, and non-determinism as reusable, composable blocks that can be combined to define a program logic modularly. Our theory builds on ITrees as a framework to express language semantics and Iris as the underlying separation logic; the work has been mechanized in the Coq proof assistant."}],"OA_place":"publisher","date_published":"2025-01-09T00:00:00Z","status":"public","quality_controlled":"1","oa":1,"title":"Program logics à la Carte","month":"01","language":[{"iso":"eng"}],"_id":"21052","page":"300-331","main_file_link":[{"open_access":"1"}],"tmp":{"name":"Creative Commons Attribution 4.0 International Public License (CC-BY 4.0)","image":"/images/cc_by.png","short":"CC BY (4.0)","legal_code_url":"https://creativecommons.org/licenses/by/4.0/legalcode"},"citation":{"mla":"Vistrup, Max, et al. “Program Logics à La Carte.” Proceedings of the ACM on Programming Languages, vol. 9, no. POPL, Association for Computing Machinery, 2025, pp. 300–31, doi:10.1145/3704847.","ama":"Vistrup M, Sammler MJ, Jung R. Program logics à la Carte. Proceedings of the ACM on Programming Languages. 2025;9(POPL):300-331. doi:10.1145/3704847","short":"M. Vistrup, M.J. Sammler, R. Jung, Proceedings of the ACM on Programming Languages 9 (2025) 300–331.","chicago":"Vistrup, Max, Michael Joachim Sammler, and Ralf Jung. “Program Logics à La Carte.” Proceedings of the ACM on Programming Languages. Association for Computing Machinery, 2025. https://doi.org/10.1145/3704847.","apa":"Vistrup, M., Sammler, M. J., & Jung, R. (2025). Program logics à la Carte. Proceedings of the ACM on Programming Languages. Association for Computing Machinery. https://doi.org/10.1145/3704847","ieee":"M. Vistrup, M. J. Sammler, and R. Jung, “Program logics à la Carte,” Proceedings of the ACM on Programming Languages, vol. 9, no. POPL. Association for Computing Machinery, pp. 300–331, 2025.","ista":"Vistrup M, Sammler MJ, Jung R. 2025. Program logics à la Carte. Proceedings of the ACM on Programming Languages. 9(POPL), 300–331."},"issue":"POPL","PlanS_conform":"1","oa_version":"Published Version","publisher":"Association for Computing Machinery","has_accepted_license":"1","year":"2025","article_processing_charge":"No","type":"journal_article","doi":"10.1145/3704847","publication":"Proceedings of the ACM on Programming Languages","extern":"1","day":"09","author":[{"first_name":"Max","last_name":"Vistrup","full_name":"Vistrup, Max"},{"full_name":"Sammler, Michael Joachim","id":"510d3901-2a03-11ee-914d-d9ae9011f0a7","last_name":"Sammler","first_name":"Michael Joachim"},{"first_name":"Ralf","last_name":"Jung","full_name":"Jung, Ralf"}],"user_id":"2DF688A6-F248-11E8-B48F-1D18A9856A87","intvolume":" 9","publication_identifier":{"issn":["2475-1421"]},"scopus_import":"1","article_type":"original","publication_status":"published","date_updated":"2026-02-09T06:19:36Z","volume":9,"date_created":"2026-01-28T06:35:47Z"}