A theoretical basis for stepwise refinement and the programming calculus
Science of Computer Programming
Information and Computation - Semantics of Data Types
Programming from specifications
Programming from specifications
Mechanizing programming logics in higher order logic
Current trends in hardware verification and automated theorem proving
Notions of computation and monads
Information and Computation
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Guarded commands, nondeterminacy and formal derivation of programs
Communications of the ACM
Refinement Calculus: A Systematic Introduction
Refinement Calculus: A Systematic Introduction
Modular Denotational Semantics for Compiler Construction
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
Inductive Definitions in the system Coq - Rules and Properties
TLCA '93 Proceedings of the International Conference on Typed Lambda Calculi and Applications
Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures
Verification of non-functional programs using interpretations in type theory
Journal of Functional Programming
An Observationally Complete Program Logic for Imperative Higher-Order Frame Rules
LICS '05 Proceedings of the 20th Annual IEEE Symposium on Logic in Computer Science
Polymorphism and separation in hoare type theory
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Monad-independent Hoare logic in HasCasl
FASE'03 Proceedings of the 6th international conference on Fundamental approaches to software engineering
Ynot: dependent types for imperative programs
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Refinement calculi are program logics which formalize the "top-down" methodology of software development promoted by Dijkstra and Wirth in the early days of structured programming. I present here the shallow embedding of a refinement calculus into Coq constructive type theory. This embedding involves monad transformers and the computational reflexion of weakest-preconditions, using a continuation passing style. It should allow to reason about many ML programs combining non-functional features (state, exceptions, etc) with purely functional ones (higher-order functions, structural recursion, etc).