Side effects and aliasing can have simple axiomatic descriptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Notions of computation and monads
Information and Computation
Eiffel: the language
An axiomatic basis for computer programming
Communications of the ACM
Lisaac: the power of simplicity at work for operating system
CRPIT '02 Proceedings of the Fortieth International Conference on Tools Pacific: Objects for internet, mobile and embedded applications
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Dr. Dobb's Journal - Programming languages
Coalgebras and monads in the semantics of java
Theoretical Computer Science - Special issue: Algebraic methodology and software technology
The LOOP Compiler for Java and JML
TACAS 2001 Proceedings of the 7th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Monad-independent Dynamic Logic in HasCasl
Journal of Logic and Computation
Observational purity and encapsulation
Theoretical Computer Science
Semantical consideration on floyo-hoare logic
SFCS '76 Proceedings of the 17th Annual Symposium on Foundations of Computer Science
Monad-independent Hoare logic in HasCasl
FASE'03 Proceedings of the 6th international conference on Fundamental approaches to software engineering
ESC/Java2: uniting ESC/Java and JML
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Completeness of global evaluation logic
MFCS'06 Proceedings of the 31st international conference on Mathematical Foundations of Computer Science
CALCO'05 Proceedings of the First international conference on Algebra and Coalgebra in Computer Science
A Semantics For Evaluation Logic
Fundamenta Informaticae
Secure Microkernels, State Monads and Scalable Refinement
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Kleene monads: handling iteration in a framework of generic effects
CALCO'09 Proceedings of the 3rd international conference on Algebra and coalgebra in computer science
Hi-index | 0.00 |
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 modeled 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.