Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

Outcome Separation Logic: Local Reasoning for Correctness and Incorrectness with Computational Effects

Published: 29 April 2024 Publication History

Abstract

Separation logic’s compositionality and local reasoning properties have led to significant advances in scalable static analysis. But program analysis has new challenges—many programs display computational effects and, orthogonally, static analyzers must handle incorrectness too. We present Outcome Separation Logic (OSL), a program logic that is sound for both correctness and incorrectness reasoning in programs with varying effects. OSL has a frame rule—just like separation logic—but uses different underlying assumptions that open up local reasoning to a larger class of properties than can be handled by any single existing logic.
Building on this foundational theory, we also define symbolic execution algorithms that use bi-abduction to derive specifications for programs with effects. This involves a new tri-abduction procedure to analyze programs whose execution branches due to effects such as nondeterministic or probabilistic choice. This work furthers the compositionality promised by separation logic by opening up the possibility for greater reuse of analysis tools across two dimensions: bug-finding vs verification in programs with varying effects.

References

[1]
Flavio Ascari, Roberto Bruni, Roberta Gori, and Francesco Logozzo. 2023. Sufficient Incorrectness Logic: SIL and Separation SIL. arxiv:2310.18156.
[2]
Murat Baktiev. 2006. Permutation Semantics of Separation Logic. Master’s thesis. Saarland University. https://www.ps.uni-saarland.de/Publications/documents/baktiev2006.pdf
[3]
Jialu Bao, Simon Docherty, Justin Hsu, and Alexandra Silva. 2021. A Bunched Logic for Conditional Independence. In Proceedings of the 36th Annual ACM/IEEE Symposium on Logic in Computer Science (LICS ’21). Association for Computing Machinery, New York, NY, USA. Article 13, 14 pages. isbn:9781665448956 https://doi.org/10.1109/LICS52264.2021.9470712
[4]
Jialu Bao, Marco Gaboardi, Justin Hsu, and Joseph Tassarotti. 2022. A Separation Logic for Negative Dependence. Proc. ACM Program. Lang., 6, POPL (2022), Article 57, jan, 29 pages. https://doi.org/10.1145/3498719
[5]
Gilles Barthe, Thomas Espitau, Benjamin Grégoire, Justin Hsu, Léo Stefanesco, and Pierre-Yves Strub. 2015. Relational Reasoning via Probabilistic Coupling. In Logic for Programming, Artificial Intelligence, and Reasoning, Martin Davis, Ansgar Fehnker, Annabelle McIver, and Andrei Voronkov (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 387–401. isbn:978-3-662-48899-7 https://doi.org/10.1007/978-3-662-48899-7_27
[6]
Gilles Barthe, Justin Hsu, and Kevin Liao. 2019. A Probabilistic Separation Logic. Proc. ACM Program. Lang., 4, POPL (2019), Article 55, Dec., 30 pages. https://doi.org/10.1145/3371123
[7]
Kevin Batz, Adrian Gallus, Benjamin Lucien Kaminski, Joost-Pieter Katoen, and Tobias Winkler. 2022. Weighted Programming: A Programming Paradigm for Specifying Mathematical Models. Proc. ACM Program. Lang., 6, OOPSLA1 (2022), Article 66, apr, 30 pages. https://doi.org/10.1145/3527310
[8]
Kevin Batz, Benjamin Lucien Kaminski, Joost-Pieter Katoen, Christoph Matheja, and Thomas Noll. 2019. Quantitative Separation Logic: A Logic for Reasoning about Probabilistic Pointer Programs. Proc. ACM Program. Lang., 3, POPL (2019), Article 34, Jan, 29 pages. https://doi.org/10.1145/3290347
[9]
Josh Berdine, Cristiano Calcagno, Byron Cook, Dino Distefano, Peter W. O’Hearn, Thomas Wies, and Hongseok Yang. 2007. Shape Analysis for Composite Data Structures. In Computer Aided Verification, Werner Damm and Holger Hermanns (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 178–192. isbn:978-3-540-73368-3
[10]
Josh Berdine, Cristiano Calcagno, and Peter W. O’Hearn. 2005. A Decidable Fragment of Separation Logic. In FSTTCS 2004: Foundations of Software Technology and Theoretical Computer Science, Kamal Lodaya and Meena Mahajan (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 97–109. isbn:978-3-540-30538-5 https://doi.org/10.1007/978-3-540-30538-5_9
[11]
Josh Berdine, Cristiano Calcagno, and Peter W. O’Hearn. 2005. Symbolic Execution with Separation Logic. In Programming Languages and Systems, Kwangkeun Yi (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 52–68. isbn:978-3-540-32247-4 https://doi.org/10.1007/11575467_5
[12]
Lars Birkedal, Bernhard Reus, Jan Schwinghammer, and Hongseok Yang. 2008. A Simple Model of Separation Logic for Higher-Order Store. In Automata, Languages and Programming, Luca Aceto, Ivan Damgård, Leslie Ann Goldberg, Magnús M. Halldórsson, Anna Ingólfsdóttir, and Igor Walukiewicz (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 348–360. isbn:978-3-540-70583-3 https://doi.org/10.1007/978-3-540-70583-3_29
[13]
Lars Birkedal and Hongseok Yang. 2007. Relational Parametricity and Separation Logic. In Foundations of Software Science and Computational Structures, Helmut Seidl (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 93–107. isbn:978-3-540-71389-0 https://doi.org/10.1007/978-3-540-71389-0_8
[14]
Roberto Bruni, Roberto Giacobazzi, Roberta Gori, and Francesco Ranzato. 2021. A Logic for Locally Complete Abstract Interpretations. In 2021 36th Annual ACM/IEEE Symposium on Logic in Computer Science (LICS). 1–13. https://doi.org/10.1109/LICS52264.2021.9470608
[15]
Roberto Bruni, Roberto Giacobazzi, Roberta Gori, and Francesco Ranzato. 2023. A Correctness and Incorrectness Program Logic. J. ACM, 70, 2 (2023), Article 15, mar, 45 pages. issn:0004-5411 https://doi.org/10.1145/3582267
[16]
Cristiano Calcagno, Dino Distefano, Jeremy Dubreil, Dominik Gabi, Pieter Hooimeijer, Martino Luca, Peter O’Hearn, Irene Papakonstantinou, Jim Purbrick, and Dulma Rodriguez. 2015. Moving Fast with Software Verification. In NASA Formal Methods, Klaus Havelund, Gerard Holzmann, and Rajeev Joshi (Eds.). Springer International Publishing, Cham. 3–11. https://doi.org/10.1007/978-3-319-17524-9_1
[17]
Cristiano Calcagno, Dino Distefano, Peter O’Hearn, and Hongseok Yang. 2009. Compositional Shape Analysis by Means of Bi-Abduction. In Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’09). Association for Computing Machinery, New York, NY, USA. 289–300. https://doi.org/10.1145/1480881.1480917
[18]
Cristiano Calcagno, Dino Distefano, Peter W. O’Hearn, and Hongseok Yang. 2011. Compositional Shape Analysis by Means of Bi-Abduction. J. ACM, 58, 6 (2011), Article 26, Dec, 66 pages. issn:0004-5411 https://doi.org/10.1145/2049697.2049700
[19]
Cristiano Calcagno, Peter W. O’Hearn, and Hongseok Yang. 2007. Local Action and Abstract Separation Logic. In 22nd Annual IEEE Symposium on Logic in Computer Science (LICS 2007). 366–378. https://doi.org/10.1109/LICS.2007.30
[20]
Corina Cîrstea. 2013. From Branching to Linear Time, Coalgebraically. In Proceedings Workshop on Fixed Points in Computer Science, FICS 2013, Turino, Italy, September 1st, 2013, David Baelde and Arnaud Carayol (Eds.) (EPTCS, Vol. 126). 11–27. https://doi.org/10.4204/EPTCS.126.2
[21]
Corina Cîrstea. 2014. A Coalgebraic Approach to Linear-Time Logics. In Foundations of Software Science and Computation Structures, Anca Muscholl (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 426–440. isbn:978-3-642-54830-7 https://doi.org/10.1007/978-3-642-54830-7_28
[22]
Patrick Cousot and Radhia Cousot. 1977. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints. In Proceedings of the 4th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages (POPL ’77). Association for Computing Machinery, New York, NY, USA. 238–252. isbn:9781450373500 https://doi.org/10.1145/512950.512973
[23]
Thibault Dardinier and Peter Müller. 2023. Hyper Hoare Logic: (Dis-)Proving Program Hyperproperties (extended version). https://doi.org/10.48550/ARXIV.2301.10037
[24]
Benjamin Delaware, Bruno C. d. S. Oliveira, and Tom Schrijvers. 2013. Meta-Theory à La Carte. In Proceedings of the 40th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’13). Association for Computing Machinery, New York, NY, USA. 207–218. isbn:9781450318327 https://doi.org/10.1145/2429069.2429094
[25]
Benjamin Delaware, Steven Keuchel, Tom Schrijvers, and Bruno C.d.S. Oliveira. 2013. Modular Monadic Meta-Theory. In Proceedings of the 18th ACM SIGPLAN International Conference on Functional Programming (ICFP ’13). Association for Computing Machinery, New York, NY, USA. 319–330. isbn:9781450323260 https://doi.org/10.1145/2500365.2500587
[26]
Edsger W. Dijkstra. 1975. Guarded Commands, Nondeterminacy and Formal Derivation of Programs. Commun. ACM, 18, 8 (1975), Aug, 453–457. issn:0001-0782 https://doi.org/10.1145/360933.360975
[27]
Dino Distefano, Manuel Fähndrich, Francesco Logozzo, and Peter W. O’Hearn. 2019. Scaling Static Analyses at Facebook. Commun. ACM, 62, 8 (2019), jul, 62–70. issn:0001-0782 https://doi.org/10.1145/3338112
[28]
Ira Fesefeldt, Joost-Pieter Katoen, and Thomas Noll. 2022. Towards Concurrent Quantitative Separation Logic. In 33rd International Conference on Concurrency Theory (CONCUR 2022), Bartek Klin, Sł awomir Lasota, and Anca Muscholl (Eds.) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 243). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany. 25:1–25:24. isbn:978-3-95977-246-4 issn:1868-8969 https://doi.org/10.4230/LIPIcs.CONCUR.2022.25
[29]
José Fragoso Santos, Petar Maksimović, Sacha-Élie Ayoun, and Philippa Gardner. 2020. Gillian, Part i: A Multi-Language Platform for Symbolic Execution. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020). Association for Computing Machinery, New York, NY, USA. 927–942. isbn:9781450376136 https://doi.org/10.1145/3385412.3386014
[30]
Michèle Giry. 1982. A categorical approach to probability theory. In Categorical Aspects of Topology and Analysis, B. Banaschewski (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 68–85. isbn:978-3-540-39041-1 https://doi.org/10.1007/BFb0092872
[31]
C. A. R. Hoare. 1969. An Axiomatic Basis for Computer Programming. Commun. ACM, 12, 10 (1969), Oct., 576–580. issn:0001-0782 https://doi.org/10.1145/363235.363259
[32]
Ralf Jung, David Swasey, Filip Sieczkowski, Kasper Svendsen, Aaron Turon, Lars Birkedal, and Derek Dreyer. 2015. Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Reasoning. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’15). Association for Computing Machinery, New York, NY, USA. 637–650. isbn:9781450333009 https://doi.org/10.1145/2676726.2676980
[33]
Alexander Kurz and Jiří Velebil. 2016. Relation lifting, a survey. Journal of Logical and Algebraic Methods in Programming, 85, 4 (2016), 475–499. issn:2352-2208 https://doi.org/10.1016/j.jlamp.2015.08.002 Relational and algebraic methods in computer science.
[34]
Quang Loc Le, Azalea Raad, Jules Villard, Josh Berdine, Derek Dreyer, and Peter W. O’Hearn. 2022. Finding Real Bugs in Big Programs with Incorrectness Logic. Proc. ACM Program. Lang., 6, OOPSLA1 (2022), Article 81, Apr, 27 pages. https://doi.org/10.1145/3527325
[35]
John M. Li, Amal Ahmed, and Steven Holtzen. 2023. Lilac: a Modal Separation Logic for Conditional Probability. arxiv:2304.01339.
[36]
Sheng Liang, Paul Hudak, and Mark Jones. 1995. Monad Transformers and Modular Interpreters. In Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’95). Association for Computing Machinery, New York, NY, USA. 333–343. isbn:0897916921 https://doi.org/10.1145/199448.199528
[37]
Petar Maksimović, Caroline Cronjäger, Andreas Lööw, Julian Sutherland, and Philippa Gardner. 2023. Exact Separation Logic: Towards Bridging the Gap Between Verification and Bug-Finding. In 37th European Conference on Object-Oriented Programming (ECOOP 2023), Karim Ali and Guido Salvaneschi (Eds.) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 263). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany. 19:1–19:27. isbn:978-3-95977-281-5 issn:1868-8969 https://doi.org/10.4230/LIPIcs.ECOOP.2023.19
[38]
Eugenio Moggi. 1991. Notions of computation and monads. Information and Computation, 93, 1 (1991), 55–92. issn:0890-5401 https://doi.org/10.1016/0890-5401(91)90052-4
[39]
Carroll Morgan, Annabelle McIver, and Karen Seidel. 1996. Probabilistic Predicate Transformers. ACM Trans. Program. Lang. Syst., 18, 3 (1996), may, 325–353. issn:0164-0925 https://doi.org/10.1145/229542.229547
[40]
Peter W. O’Hearn. 2004. Resources, Concurrency and Local Reasoning. In CONCUR 2004 - Concurrency Theory, Philippa Gardner and Nobuko Yoshida (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 49–67. isbn:978-3-540-28644-8 https://doi.org/10.1016/j.tcs.2006.12.035
[41]
Peter W. O’Hearn. 2020. Incorrectness Logic. Proc. ACM Program. Lang., 4, POPL (2020), Article 10, Jan., 32 pages. https://doi.org/10.1145/3371078
[42]
Peter W. O’Hearn, John C. Reynolds, and Hongseok Yang. 2001. Local Reasoning about Programs That Alter Data Structures. In Proceedings of the 15th International Workshop on Computer Science Logic (CSL ’01). Springer-Verlag, Berlin, Heidelberg. 1–19. isbn:3540425543 https://doi.org/10.1007/3-540-44802-0_1
[43]
Azalea Raad, Josh Berdine, Hoang-Hai Dang, Derek Dreyer, Peter O’Hearn, and Jules Villard. 2020. Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic. In Computer Aided Verification, Shuvendu K. Lahiri and Chao Wang (Eds.). Springer International Publishing, Cham. 225–252. isbn:978-3-030-53291-8 https://doi.org/10.1007/978-3-030-53291-8_14
[44]
Azalea Raad, Josh Berdine, Derek Dreyer, and Peter W. O’Hearn. 2022. Concurrent Incorrectness Separation Logic. Proc. ACM Program. Lang., 6, POPL (2022), Article 34, Jan, 29 pages. https://doi.org/10.1145/3498695
[45]
Azalea Raad, Julien Vanegue, and Peter O’Hearn. 2023. Compositional Non-Termination Proving. https://www.soundandcomplete.org/papers/Unter.pdf
[46]
J.C. Reynolds. 2002. Separation logic: a logic for shared mutable data structures. In Proceedings 17th Annual IEEE Symposium on Logic in Computer Science. 55–74. https://doi.org/10.1109/LICS.2002.1029817
[47]
Noam Rinetzky and Mooly Sagiv. 2001. Interprocedural Shape Analysis for Recursive Programs. In Compiler Construction, Reinhard Wilhelm (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 133–149. isbn:978-3-540-45306-2
[48]
Florian Sextl, Adam Rogalewicz, Tomáš Vojnar, and Florian Zuleger. 2023. Sound One-Phase Shape Analysis with Biabduction. arxiv:2307.06346.
[49]
Joseph Tassarotti and Robert Harper. 2019. A Separation Logic for Concurrent Randomized Programs. Proc. ACM Program. Lang., 3, POPL (2019), Article 64, Jan, 30 pages. https://doi.org/10.1145/3290377
[50]
Makoto Tatsuta, Wei-Ngan Chin, and Mahmudul Faisal Al Ameen. 2009. Completeness of Pointer Program Verification by Separation Logic. In 2009 Seventh IEEE International Conference on Software Engineering and Formal Methods. 179–188. https://doi.org/10.1109/SEFM.2009.33
[51]
Hongseok Yang and Peter O’Hearn. 2002. A Semantic Basis for Local Reasoning. In Foundations of Software Science and Computation Structures, Mogens Nielsen and Uffe Engberg (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 402–416. isbn:978-3-540-45931-6 https://doi.org/10.1007/3-540-45931-6_28
[52]
Noam Zilberstein. 2024. A Relatively Complete Program Logic for Effectful Branching. arxiv:2401.04594.
[53]
Noam Zilberstein, Derek Dreyer, and Alexandra Silva. 2023. Outcome Logic: A Unifying Foundation for Correctness and Incorrectness Reasoning. Proc. ACM Program. Lang., 7, OOPSLA1 (2023), Article 93, Apr, 29 pages. https://doi.org/10.1145/3586045
[54]
Noam Zilberstein, Angelina Saliling, and Alexandra Silva. 2024. Outcome Separation Logic: Local Reasoning for Correctness and Incorrectness with Computational Effects (Extended Version). arxiv:2305.04842.

Cited By

View all
  • (2025)A Demonic Outcome Logic for Randomized NondeterminismProceedings of the ACM on Programming Languages10.1145/37048559:POPL(539-568)Online publication date: 9-Jan-2025
  • (2025)On Extending Incorrectness Logic with Backwards ReasoningProceedings of the ACM on Programming Languages10.1145/37048509:POPL(391-415)Online publication date: 9-Jan-2025
  • (2024)Quantitative Weakest Hyper Pre: Unifying Correctness and Incorrectness Hyperproperties via Predicate TransformersProceedings of the ACM on Programming Languages10.1145/36897408:OOPSLA2(817-845)Online publication date: 8-Oct-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Proceedings of the ACM on Programming Languages
Proceedings of the ACM on Programming Languages  Volume 8, Issue OOPSLA1
April 2024
1492 pages
EISSN:2475-1421
DOI:10.1145/3554316
Issue’s Table of Contents
This work is licensed under a Creative Commons Attribution International 4.0 License.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 29 April 2024
Published in PACMPL Volume 8, Issue OOPSLA1

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Incorrectness
  2. Outcome Logic
  3. Separation Logic

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)343
  • Downloads (Last 6 weeks)53
Reflects downloads up to 20 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2025)A Demonic Outcome Logic for Randomized NondeterminismProceedings of the ACM on Programming Languages10.1145/37048559:POPL(539-568)Online publication date: 9-Jan-2025
  • (2025)On Extending Incorrectness Logic with Backwards ReasoningProceedings of the ACM on Programming Languages10.1145/37048509:POPL(391-415)Online publication date: 9-Jan-2025
  • (2024)Quantitative Weakest Hyper Pre: Unifying Correctness and Incorrectness Hyperproperties via Predicate TransformersProceedings of the ACM on Programming Languages10.1145/36897408:OOPSLA2(817-845)Online publication date: 8-Oct-2024
  • (2024)Non-termination Proving at ScaleProceedings of the ACM on Programming Languages10.1145/36897208:OOPSLA2(246-274)Online publication date: 8-Oct-2024
  • (2024)Unified Analysis Techniques for Programs with OutcomesCompanion Proceedings of the 2024 ACM SIGPLAN International Conference on Systems, Programming, Languages, and Applications: Software for Humanity10.1145/3689491.3691814(4-6)Online publication date: 20-Oct-2024
  • (2024)Relative Completeness of Incorrectness Separation LogicProgramming Languages and Systems10.1007/978-981-97-8943-6_13(264-282)Online publication date: 23-Oct-2024

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Full Access

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media