Predicate transformer semantics
David Schmidt · Science of Computer Programming · 1995
Cited by 0
Read the abstract, see who wrote it and who cites it, and get the citation in APA, MLA, Chicago or Harvard.
About 80 papers for “Predicate transformer semantics”
David Schmidt · Science of Computer Programming · 1995
Cited by 0
Christa Jenkins, Mark Moir, Harold Carr · arXiv (Cornell University) · 2022
We present a lightweight, open source Agda framework for manually verifying effectful programs using predicate transformer semantics. We represent the abstract syntax trees (AST) of effectful programs with a generalized algebraic datatype (GADT) AST, whose generality enables even complex operations to be primitive AST nodes. Users can then assign bespoke predicate transformers to such operations to aid the proof effort, for example by automatically decomposing proof obligations for branching code. Our framework codifies and generalizes a proof engineering methodology used by the authors to reason about a prototype implementation of LibraBFT, a Byzantine fault tolerant consensus protocol in which code executed by participants may have effects such as updating state and sending messages. Successful use of our framework in this context demonstrates its practical applicability.
Cited by 0Open access
Wim H. Hesselink · Acta Informatica · 1989
Cited by 16
Mingsheng Ying, Runyao Duan, Yuan Feng et al. · Cambridge University Press eBooks · 2009
This chapter presents a systematic exposition of predicate transformer semantics for quantum programs. It is divided into two parts: The first part reviews the state transformer (forward) semantics of quantum programs according to Selinger's suggestion of representing quantum programs by superoperators and elucidates D'Hondt-Panangaden's theory of quantum weakest preconditions in detail. In the second part, we develop a quite complete predicate transformer semantics of quantum programs based on Birkhoff-von Neumann quantum logic by considering only quantum predicates expressed by projection operators. In particular, the universal conjunctivity and termination law of quantum programs are proved, and Hoare's induction rule is established in the quantum setting.
Cited by 31
Wouter Swierstra, Tim Baanen · Proceedings of the ACM on Programming Languages · 2019
Reasoning about programs that use effects can be much harder than reasoning about their pure counterparts. This paper presents a predicate transformer semantics for a variety of effects, including exceptions, state, non-determinism, and general recursion. The predicate transformer semantics gives rise to a refinement relation that can be used to relate a program to its specification, or even calculate effectful programs that are correct by construction.
Cited by 17Open access
Bart Jacobs, Fabio Zanasi · Electronic Notes in Theoretical Computer Science · 2016
This paper establishes a link between Bayesian inference (learning) and predicate and state transformer operations from programming semantics and logic. Specifically, a very general definition of backward inference is given via first applying a predicate transformer and then conditioning. Analogously, forward inference involves first conditioning and then applying a state transformer. These definitions are illustrated in many examples in discrete and continuous probability theory and also in quantum theory.
Cited by 28Open access
Charanjit S. Jutla, Edgar Knapp, J. R. Rao · 1989
We present an extensional semantics for parallel programs based on predicate transformers.
Cited by 30Open access
David A. Naumann · 1998
Using a set-theoretic model of predicate transformers and ordered data types, we give a total-correctness semantics for a typed higher-order imperative programming language that includes record extension, local variables, and proceduretype variables and parameters. The language includes infeasible speci cation constructs, for a calculus of re nement. Procedures may have global variables, subject to mild syntactic restrictions to avoid the semantic complications of Algol-like languages. The semantics is used to validate simple proof rules for non-interference, type extension, and calls of procedure variables and constants.
Cited by 0
Ana Cavalcanti, Jim Woodcock · 2002
Circus is a combination of Z and CSP; its chief distinguishing feature is the inclusion of the ideas of the refinement calculus. Our main objective is the definition of refinement methods for concurrent programs. The original semantic model for Circus is Hoare and He’s unifying theories of programming. In this paper, we present an equivalent semantics based on predicate transformers. With this new model, we provide a more adequate basis for the formalisation of refinement and verificationcondition generation rules. Furthermore, this new framework makes it possible to include logical variables and angelic nondeterminism in Circus. The consistency of the relational and predicate transformer models gives us confidence in their accuracy.
Cited by 0
Martin, Alain J · Caltech Library · 1983
Given a general definition of the procedure call based on the substitution rule for assignment, a general proof rule is derived for procedures with unrestricted value, result, and value- result parameters, and global variables in the body of the procedure. It is then extended for recursive procedures. Assuming that it has been proved that the body establishes a certain postcondition I, the "intention," for a certain precondition J, the proof rule permitting to determine under which conditions a certain procedure call establishes the post condition E, the "extension", is based on finding an "adaptation" A , a s weak as possible, such that A ~ I -- E ( E ' is derived from E by some substitution of parameter variables.) It is preferable, but not essential, that the body be "transparent " for the value parameters, i.e . , that the value parameters are not changed by the body.
Cited by 0Open access
David A. Naumann · Science of Computer Programming · 2001
Cited by 27
Cristian, F. (IBM Research Div., San Jose, CA (USA)), Best, E., Gesellschaft fuer Mathematik und Datenverarbeitung m.b.H. Bonn, St. Augustin (Germany, F.R.). Inst. fuer Informationssystemforschung · OpenGrey (Institut de l'Information Scientifique et Technique) · 1983
Cited by 1
Klaus Keimel, A. Rosenbusch, Thomas Streicher · Theoretical Computer Science · 2010
Cited by 6
Klaus Keimel, A. Rosenbusch, Thomas Streicher · Annals of Pure and Applied Logic · 2008
Cited by 5
Federico Flaviani · 2018
Dijkstra recursively defined the predicate transformer wp. Then Gries for each expression Exp of the language, defined domain(Exp), which is a predicate that indicates the states in which Exp is defined. This predicate Gries added it to the recursive formula that defines wp for assignment, and subsequently other authors added it to the rule that recursively defines wp for IF, so that in the bibliography there are several versions of the definition of wp, with and without occurrence of domain. The present work shows an inference of the definition of wp, demonstrating that the occurrence of domain is necessary for wp in assignement, IF and DO. This inference is done through the GCL denotational semantics over the set theory ZF, showing that the classical formulas of Dijkstra to define wp in GCL using domain, are valid if the language of set theory is used to write the assertions.
Cited by 0
Chris Brink, Ingrid Rewitzky · 2001
This book provides a synthesis of four versions of programme semantics - relational semantics, predicate transformer semantics, information systems, and domain theory - showing that it is possible to do back-and-forth translation from any of these versions of programme semantics into any of the others.
Cited by 23
Karl Lermer, Colin Fidge, Ian J. Hayes · Electronic Notes in Theoretical Computer Science · 2003
This paper provides the syntax and semantics for a systematic approach to the problem of analysing control-flow paths in computer programs. We give an abstract syntax and a partial correctness semantics for program control-flow paths as a generic model for path analysis and constraint derivation. This approach is formally based on a predicate transformer semantics over a boolean-valued predicate space and an abstract command language. The notions of a command, dead commands, the entry and exit conditions of a command and the inverse of a command are formally defined and investigated on the base of the semantics. A notion of command refinement is introduced capturing the abstraction process in program development from specification to implementation with partial correctness. Furthermore, command-reduction theorems and characterisations for command refinement are derived using the underlying semantics. Finally we verify the equivalence of weakest liberal precondition and strongest postcondition semantics for program commands in terms of the ordering relation they define on the command language. The approach is generic in that it is applicable to any program language that can be supplied with a predicate transformer semantics.
Cited by 6Open access
Ingrid Rewitzky, Chris Brink · Formal Aspects of Computing · 1995
Abstract In predicate transformer semantics, a program is represented as a mapping from predicates to predicates. In relational semantics, a program is represented as an (input-output) binary relation over some state space. We show how each of these approaches can be obtained from the other by using the power construction .
Cited by 7
Brendan P. Mahony · 1994
The refinement calculus, based on predicate transformer semantics, is proving useful in the construction of sequential programs. It is argued that the refinement calculus provides a suitable development formalism for (possibly real-time) dataflow-like processes. Conventional precondition and postcondition specifications of sequential programs are generalised to assumption and effect specifications of processes. Such specifications may be given predicate transformer semantics and then formally refined to implementations in much the same way as precondition and postcondition specifications of sequential programs. A minimal collection of dataflow-process operators and associated refinement laws is considered. Small examples of dataflow-process development are presented to demonstrate the utility of the approach. The compositionality of the approach is considered in detail.
Cited by 0
Prakash Panangaden · 2006
We develop a notion of predicate transformer and, in particular, the weakest precondition, appropriate for quantum computation. We show that there is a Stone-type duality between the usual state-transformer semantics and the weakest precondition semantics. Rather than trying to reduce quantum computation to probabilistic programming we develop a notion that is directly taken from concepts used in quantum computation. The proof that weakest preconditions exist for completely positive maps follows from the Kraus representation theorem. As an example we give the semantics of Selinger’s language in terms of our weakest preconditions. 1
Cited by 0