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

Fuente: arXiv
Enregistré dans:
Détails bibliographiques
Auteurs principaux: Zilberstein, Noam, Saliling, Angelina, Silva, Alexandra
Format: Preprint
Publié: 2023
Sujets:
Accès en ligne:
Tags: Ajouter un tag
Pas de tags, Soyez le premier à ajouter un tag!
_version_ 1866910366439571456
author Zilberstein, Noam
Saliling, Angelina
Silva, Alexandra
author_facet Zilberstein, Noam
Saliling, Angelina
Silva, Alexandra
contents 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.
format Preprint
id arxiv_https___arxiv_org_abs_2305_04842
institution arXiv
publishDate 2023
record_format arxiv
spellingShingle Outcome Separation Logic: Local Reasoning for Correctness and Incorrectness with Computational Effects
Zilberstein, Noam
Saliling, Angelina
Silva, Alexandra
Logic in Computer Science
Programming Languages
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.
title Outcome Separation Logic: Local Reasoning for Correctness and Incorrectness with Computational Effects
topic Logic in Computer Science
Programming Languages
url https://arxiv.org/abs/2305.04842