Outcome Logic: A Unified Approach to the Metatheory of Program Logics with Branching Effects (2401.04594v2)
Abstract: Starting with Hoare Logic over 50 years ago, numerous program logics have been devised to reason about the diverse programs encountered in the real world. This includes reasoning about computational effects, particularly those effects that cause the program execution to branch into multiple paths due to, .e.g nondeterministic or probabilistic choice. The recently introduced Outcome Logic reimagines Hoare Logic with branching at its core, using an algebraic representation of choice to capture programs that branch into many outcomes. In this article, we expand on prior Outcome Logic papers in order to give a more authoritative and comprehensive account of the metatheory. This includes a relatively complete proof system for Outcome Logic with the ability to reason about general purpose looping. We also show that this proof system applies to programs with various types of branching and that it facilitates the reuse of proof fragments across different kinds of specifications.
- Krzysztof R. Apt. 1981. Ten Years of Hoare’s Logic: A Survey–Part I. ACM Trans. Program. Lang. Syst. 3, 4 (oct 1981), 431–483. https://doi.org/10.1145/357146.357150
- Sufficient Incorrectness Logic: SIL and Separation SIL. arXiv:2310.18156 [cs.LO]
- An Assertion-Based Program Logic for Probabilistic Programs. In Programming Languages and Systems. Springer International Publishing, Cham, 117–144. https://doi.org/10.1007/978-3-319-89884-1_5
- Weighted Programming: A Programming Paradigm for Specifying Mathematical Models. Proc. ACM Program. Lang. 6, OOPSLA1, Article 66 (apr 2022), 30 pages. https://doi.org/10.1145/3527310
- Quantitative Separation Logic: A Logic for Reasoning about Probabilistic Pointer Programs. Proc. ACM Program. Lang. 3, POPL, Article 34 (Jan 2019), 29 pages. https://doi.org/10.1145/3290347
- Automatic Termination Proofs for Programs with Shape-Shifting Heaps. In Computer Aided Verification. Springer Berlin Heidelberg, Berlin, Heidelberg, 386–400. https://doi.org/10.1007/11817963_35
- Better Termination Proving through Cooperation. In Computer Aided Verification. Springer Berlin Heidelberg, Berlin, Heidelberg, 413–429. https://doi.org/10.1007/978-3-642-39799-8_28
- Manfred Broy and Martin Wirsing. 1981. On the Algebraic Specification of Nondeterministic Programming Languages. In Proceedings of the 6th Colloquium on Trees in Algebra and Programming (CAAP ’81). Springer-Verlag, Berlin, Heidelberg, 162–179. https://doi.org/10.5555/648216.750907
- 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
- A Correctness and Incorrectness Program Logic. J. ACM 70, 2, Article 15 (mar 2023), 45 pages. https://doi.org/10.1145/3582267
- 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
- Disproving Termination with Overapproximation. In Proceedings of the 14th Conference on Formal Methods in Computer-Aided Design (Lausanne, Switzerland) (FMCAD ’14). FMCAD Inc, Austin, Texas, 67–74. https://doi.org/10.1109/FMCAD.2014.6987597
- Termination Proofs for Systems Code. SIGPLAN Not. 41, 6 (jun 2006), 415–426. https://doi.org/10.1145/1133255.1134029
- Termination Proofs for Systems Code. In Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation (Ottawa, Ontario, Canada) (PLDI ’06). Association for Computing Machinery, New York, NY, USA, 415–426. https://doi.org/10.1145/1133981.1134029
- Stephen A. Cook. 1978. Soundness and Completeness of an Axiom System for Program Verification. SIAM J. Comput. 7, 1 (feb 1978), 70–90. https://doi.org/10.1137/0207005
- An Abstract Interpretation Framework for Refactoring with Application to Extract Methods with Contracts. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications (Tucson, Arizona, USA) (OOPSLA ’12). Association for Computing Machinery, New York, NY, USA, 213–232. https://doi.org/10.1145/2384616.2384633
- Thibault Dardinier and Peter Müller. 2023. Hyper Hoare Logic: (Dis-)Proving Program Hyperproperties (extended version). https://doi.org/10.48550/ARXIV.2301.10037
- Edsko de Vries and Vasileios Koutavas. 2011. Reverse Hoare Logic. In Software Engineering and Formal Methods. Springer Berlin Heidelberg, Berlin, Heidelberg, 155–171. https://doi.org/10.1007/978-3-642-24690-6_12
- Jerry den Hartog. 2002. Probabilistic Extensions of Semantical Models. Ph.D. Dissertation. Vrije Universiteit Amsterdam. https://core.ac.uk/reader/15452110
- J. I. den Hartog. 1999. Verifying Probabilistic Programs Using a Hoare like Logic. In Advances in Computing Science — ASIAN’99, P. S. Thiagarajan and Roland Yap (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 113–125.
- Edsger W. Dijkstra. 1975. Guarded Commands, Nondeterminacy and Formal Derivation of Programs. Commun. ACM 18, 8 (Aug 1975), 453–457. https://doi.org/10.1145/360933.360975
- Edsger W. Dijkstra. 1976. A Discipline of Programming. Prentice-Hall. I–XVII, 1–217 pages.
- Edsger W. Dijkstra and Carel S. Schölten. 1990. The strongest postcondition. Springer New York, New York, NY, 209–215. https://doi.org/10.1007/978-1-4612-3228-5_12
- Scaling Static Analyses at Facebook. Commun. ACM 62, 8 (jul 2019), 62–70. https://doi.org/10.1145/3338112
- Simon Docherty. 2019. Bunched logics: a uniform approach. Ph.D. Dissertation. University College London. https://discovery.ucl.ac.uk/id/eprint/10073115/
- Robert W. Floyd. 1967a. Assigning Meanings to Programs. In Mathematical Aspects of Computer Science (Proceedings of Symposia in Applied Mathematics, Vol. 19). American Mathematical Society, Providence, Rhode Island, 19–32.
- Robert W. Floyd. 1967b. Nondeterministic Algorithms. J. ACM 14, 4 (oct 1967), 636–644. https://doi.org/10.1145/321420.321422
- Jonathan S. Golan. 2003. Semirings and Affine Equations over Them. Springer Dordrecht. https://doi.org/10.1007/978-94-017-0383-3
- C. A. R. Hoare. 1969. An Axiomatic Basis for Computer Programming. Commun. ACM 12, 10 (Oct. 1969), 576–580. https://doi.org/10.1145/363235.363259
- C. A. R. Hoare. 1978. Some Properties of Predicate Transformers. J. ACM 25, 3 (Jul 1978), 461–480. https://doi.org/10.1145/322077.322088
- Iris from the ground up: A modular foundation for higher-order concurrent separation logic. Journal of Functional Programming 28 (2018). https://doi.org/10.1017/S0956796818000151
- 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 (Mumbai, India) (POPL ’15). Association for Computing Machinery, New York, NY, USA, 637–650. https://doi.org/10.1145/2676726.2676980
- Benjamin Lucien Kaminski. 2019. Advanced weakest precondition calculi for probabilistic programs. Dissertation. RWTH Aachen University, Aachen. https://doi.org/10.18154/RWTH-2019-01829
- Georg Karner. 2004. Continuous monoids and semirings. Theoretical Computer Science 318, 3 (2004), 355–372. https://doi.org/10.1016/j.tcs.2004.01.020
- Dexter Kozen. 1979. Semantics of probabilistic programs. In 20th Annual Symposium on Foundations of Computer Science (SFCS ’79). 101–114. https://doi.org/10.1109/SFCS.1979.38
- Dexter Kozen. 1983. A Probabilistic PDL. In Proceedings of the Fifteenth Annual ACM Symposium on Theory of Computing (STOC ’83). Association for Computing Machinery, New York, NY, USA, 291–297. https://doi.org/10.1145/800061.808758
- Dexter Kozen. 1997. Kleene Algebra with Tests. ACM Trans. Program. Lang. Syst. 19, 3 (May 1997), 427–443. https://doi.org/10.1145/256167.256195
- Dexter Kozen and Jerzy Tiuryn. 2001. On the completeness of propositional Hoare logic. Information Sciences 139, 3 (2001), 187–195. https://doi.org/10.1016/S0020-0255(01)00164-5 Relational Methods in Computer Science.
- Finding Real Bugs in Big Programs with Incorrectness Logic. Proc. ACM Program. Lang. 6, OOPSLA1, Article 81 (Apr 2022), 27 pages. https://doi.org/10.1145/3527325
- Richard J. Lipton. 1977. A necessary and sufficient condition for the existence of hoare logics. In 18th Annual Symposium on Foundations of Computer Science (sfcs 1977). 1–6. https://doi.org/10.1109/SFCS.1977.1
- Exact Separation Logic: Towards Bridging the Gap Between Verification and Bug-Finding. In 37th European Conference on Object-Oriented Programming (ECOOP 2023) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 263). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany, 19:1–19:27. https://doi.org/10.4230/LIPIcs.ECOOP.2023.19
- Ernest G. Manes. 1976. Algebraic Theories. Springer New York. https://doi.org/10.1007/978-1-4612-9860-1
- Zohar Manna and Amir Pnueli. 1974. Axiomatic Approach to Total Correctness of Programs. Acta Inf. 3, 3 (sep 1974), 243–263. https://doi.org/10.1007/BF00288637
- Eugenio Moggi. 1991. Notions of computation and monads. Information and Computation 93, 1 (1991), 55–92. https://doi.org/10.1016/0890-5401(91)90052-4
- On Algebra of Program Correctness and & Incorrectness. In Relational and Algebraic Methods in Computer Science: 19th International Conference, RAMiCS 2021, Marseille, France, November 2–5, 2021, Proceedings (Marseille, France). Springer-Verlag, Berlin, Heidelberg, 325–343. https://doi.org/10.1007/978-3-030-88701-8_20
- Probabilistic Predicate Transformers. ACM Trans. Program. Lang. Syst. 18, 3 (may 1996), 325–353. https://doi.org/10.1145/229542.229547
- Peter W. O’Hearn. 2019. Incorrectness Logic. Proc. ACM Program. Lang. 4, POPL, Article 10 (Dec. 2019), 32 pages. https://doi.org/10.1145/3371078
- Peter W. O’Hearn and David J. Pym. 1999. The Logic of Bunched Implications. The Bulletin of Symbolic Logic 5, 2 (1999), 215–244.
- Vaughan R. Pratt. 1976. Semantical Considerations on Floyd-Hoare Logic. In 17th Annual Symposium on Foundations of Computer Science (sfcs 1976). 109–121. https://doi.org/10.1109/SFCS.1976.27
- Local Reasoning About the Presence of Bugs: Incorrectness Separation Logic. In Computer Aided Verification. Springer International Publishing, Cham, 225–252. https://doi.org/10.1007/978-3-030-53291-8_14
- Concurrent Incorrectness Separation Logic. Proc. ACM Program. Lang. 6, POPL, Article 34 (Jan 2022), 29 pages. https://doi.org/10.1145/3498695
- Compositional Non-Termination Proving. https://www.soundandcomplete.org/papers/Unter.pdf
- Robert Rand and Steve Zdancewic. 2015. VPHL: A Verified Partial-Correctness Logic for Probabilistic Programs. In Electronic Notes in Theoretical Computer Science, Vol. 319. 351–367. https://doi.org/10.1016/j.entcs.2015.12.021 The 31st Conference on the Mathematical Foundations of Programming Semantics (MFPS XXXI).
- Probabilistic Guarded KAT Modulo Bisimilarity: Completeness and Complexity. In 50th International Colloquium on Automata, Languages, and Programming (ICALP 2023) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 261). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany, 136:1–136:20. https://doi.org/10.4230/LIPIcs.ICALP.2023.136
- Hongseok Yang. 2001. Local Reasoning for Stateful Programs. Ph.D. Dissertation. USA. Advisor(s) Reddy, Uday S. https://doi.org/10.5555/933728
- Linpeng Zhang and Benjamin Lucien Kaminski. 2022. Quantitative Strongest Post: A Calculus for Reasoning about the Flow of Quantitative Information. Proc. ACM Program. Lang. 6, OOPSLA1, Article 87 (apr 2022), 29 pages. https://doi.org/10.1145/3527331
- Outcome Logic: A Unifying Foundation for Correctness and Incorrectness Reasoning. Proc. ACM Program. Lang. 7, OOPSLA1, Article 93 (Apr 2023), 29 pages. https://doi.org/10.1145/3586045
- Outcome Separation Logic: Local Reasoning for Correctness and Incorrectness with Computational Effects. (2023). https://doi.org/10.48550/arXiv.2305.04842 arXiv:2305.04842 [cs.LO]