For a number of programming languages, among them Eiffel, C, Java, and Ruby, Hoare-style logics
and dynamic logics have been developed. In these logics, pre- and postconditions are typically formulated
using potentially effectful programs. In order to ensure that these pre- and postconditions behave like logical
formulae (that is, enjoy some kind of referential transparency), a notion of purity is needed. Here, we introduce a
generic framework for reasoning about purity and effects. Effects are modelled abstractly and axiomatically, using
Moggi’s idea of encapsulation of effects as monads.We introduce a dynamic logic (from which, as usual, a Hoare
logic can be derived) whose logical formulae are pure programs in a strong sense. We formulate a set of proof
rules for this logic, and prove it to be complete with respect to a categorical semantics. Using dynamic logic, we
then develop a relaxed notion of purity which allows for observationally neutral effects such writing on newly
allocated memory.
%0 Journal Article
%1 MossakowskiEA09
%A Mossakowski, Till
%A Schröder, Lutz
%A Goncharov, Sergey
%D 2010
%J Formal Aspects of Computing
%K completeness logic monad purity side-effect soundness
%N 3-4
%P 363-384
%T A Generic Complete Dynamic Logic for Reasoning about Purity and Effects
%U http://dx.doi.org/10.1007/s00165-010-0153-4
%V 22
%X For a number of programming languages, among them Eiffel, C, Java, and Ruby, Hoare-style logics
and dynamic logics have been developed. In these logics, pre- and postconditions are typically formulated
using potentially effectful programs. In order to ensure that these pre- and postconditions behave like logical
formulae (that is, enjoy some kind of referential transparency), a notion of purity is needed. Here, we introduce a
generic framework for reasoning about purity and effects. Effects are modelled abstractly and axiomatically, using
Moggi’s idea of encapsulation of effects as monads.We introduce a dynamic logic (from which, as usual, a Hoare
logic can be derived) whose logical formulae are pure programs in a strong sense. We formulate a set of proof
rules for this logic, and prove it to be complete with respect to a categorical semantics. Using dynamic logic, we
then develop a relaxed notion of purity which allows for observationally neutral effects such writing on newly
allocated memory.
@article{MossakowskiEA09,
abstract = {For a number of programming languages, among them Eiffel, C, Java, and Ruby, Hoare-style logics
and dynamic logics have been developed. In these logics, pre- and postconditions are typically formulated
using potentially effectful programs. In order to ensure that these pre- and postconditions behave like logical
formulae (that is, enjoy some kind of referential transparency), a notion of purity is needed. Here, we introduce a
generic framework for reasoning about purity and effects. Effects are modelled abstractly and axiomatically, using
Moggi’s idea of encapsulation of effects as monads.We introduce a dynamic logic (from which, as usual, a Hoare
logic can be derived) whose logical formulae are pure programs in a strong sense. We formulate a set of proof
rules for this logic, and prove it to be complete with respect to a categorical semantics. Using dynamic logic, we
then develop a relaxed notion of purity which allows for observationally neutral effects such writing on newly
allocated memory.},
added-at = {2016-08-05T15:59:03.000+0200},
author = {Mossakowski, Till and Schr{\"o}der, Lutz and Goncharov, Sergey},
biburl = {https://www.bibsonomy.org/bibtex/2ee6e70722b94d12746fc4150a25cbad4/tillmo},
interhash = {35ea22a396d1ccb1ebdb1926c94a6671},
intrahash = {ee6e70722b94d12746fc4150a25cbad4},
issn = {0934-5043},
journal = {Formal Aspects of Computing},
keywords = {completeness logic monad purity side-effect soundness},
number = {3-4},
pages = {363-384},
pdfurl = {http://www.informatik.uni-bremen.de/~lschrode/papers/mdl-compl.pdf},
status = {Reviewed},
timestamp = {2016-08-05T15:59:03.000+0200},
title = {A Generic Complete Dynamic Logic for Reasoning about Purity and Effects},
url = {http://dx.doi.org/10.1007/s00165-010-0153-4},
volume = 22,
year = 2010
}