737 research outputs found
Bounded Refinement Types
We present a notion of bounded quantification for refinement types and show
how it expands the expressiveness of refinement typing by using it to develop
typed combinators for: (1) relational algebra and safe database access, (2)
Floyd-Hoare logic within a state transformer monad equipped with combinators
for branching and looping, and (3) using the above to implement a refined IO
monad that tracks capabilities and resource usage. This leap in expressiveness
comes via a translation to "ghost" functions, which lets us retain the
automated and decidable SMT based checking and inference that makes refinement
typing effective in practice.Comment: 14 pages, International Conference on Functional Programming, ICFP
201
A Recipe for State-and-Effect Triangles
In the semantics of programming languages one can view programs as state
transformers, or as predicate transformers. Recently the author has introduced
state-and-effect triangles which capture this situation categorically,
involving an adjunction between state- and predicate-transformers. The current
paper exploits a classical result in category theory, part of Jon Beck's
monadicity theorem, to systematically construct such a state-and-effect
triangle from an adjunction. The power of this construction is illustrated in
many examples, covering many monads occurring in program semantics, including
(probabilistic) power domains
Proofs as stateful programs: A first-order logic with abstract Hoare triples, and an interpretation into an imperative language
We introduce an extension of first-order logic that comes equipped with
additional predicates for reasoning about an abstract state. Sequents in the
logic comprise a main formula together with pre- and postconditions in the
style of Hoare logic, and the axioms and rules of the logic ensure that the
assertions about the state compose in the correct way. The main result of the
paper is a realizability interpretation of our logic that extracts programs
into a mixed functional/imperative language. All programs expressible in this
language act on the state in a sequential manner, and we make this intuition
precise by interpreting them in a semantic metatheory using the state monad.
Our basic framework is very general, and our intention is that it can be
instantiated and extended in a variety of different ways. We outline in detail
one such extension: A monadic version of Heyting arithmetic with a wellfounded
while rule, and conclude by outlining several other directions for future work.Comment: 29 page
Healthiness from Duality
Healthiness is a good old question in program logics that dates back to
Dijkstra. It asks for an intrinsic characterization of those predicate
transformers which arise as the (backward) interpretation of a certain class of
programs. There are several results known for healthiness conditions: for
deterministic programs, nondeterministic ones, probabilistic ones, etc.
Building upon our previous works on so-called state-and-effect triangles, we
contribute a unified categorical framework for investigating healthiness
conditions. We find the framework to be centered around a dual adjunction
induced by a dualizing object, together with our notion of relative
Eilenberg-Moore algebra playing fundamental roles too. The latter notion seems
interesting in its own right in the context of monads, Lawvere theories and
enriched categories.Comment: 13 pages, Extended version with appendices of a paper accepted to
LICS 201
Bounded Refinement Types
Abstract We present a notion of bounded quantification for refinement types. We show how bounded quantification expands the expressiveness of refinement typing by (1) developing typed combinators for relational algebra and safe database access, (2) encoding Floyd-Hoare logic in a state transformer monad equipped with combinators for branching and looping, and (3) using the above to implement a refined IO monad that tracks capabilities and resource usage. Fortunately, we show that by translating bounds into "ghost" functions, the increased expressiveness comes while preserving the automated and decidable SMT based checking and inference that makes refinement typing effective in practice
On CSP and the Algebraic Theory of Effects
We consider CSP from the point of view of the algebraic theory of effects,
which classifies operations as effect constructors or effect deconstructors; it
also provides a link with functional programming, being a refinement of Moggi's
seminal monadic point of view. There is a natural algebraic theory of the
constructors whose free algebra functor is Moggi's monad; we illustrate this by
characterising free and initial algebras in terms of two versions of the stable
failures model of CSP, one more general than the other. Deconstructors are
dealt with as homomorphisms to (possibly non-free) algebras.
One can view CSP's action and choice operators as constructors and the rest,
such as concealment and concurrency, as deconstructors. Carrying this programme
out results in taking deterministic external choice as constructor rather than
general external choice. However, binary deconstructors, such as the CSP
concurrency operator, provide unresolved difficulties. We conclude by
presenting a combination of CSP with Moggi's computational {\lambda}-calculus,
in which the operators, including concurrency, are polymorphic. While the paper
mainly concerns CSP, it ought to be possible to carry over similar ideas to
other process calculi
- …