Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Jeremy Gibbons is active.

Publication


Featured researches published by Jeremy Gibbons.


mathematics of program construction | 2012

Notions of Bidirectional Computation and Entangled State Monads

Faris Abou-Saleh; James Cheney; Jeremy Gibbons; James McKinna; Perdita Stevens

Bidirectional transformations (bx) support principled consistency maintenance between data sources. Each data source corresponds to one perspective on a composite system, manifested by operations to ‘get’ and ‘set’ a view of the whole from that particular perspective. Bx are important in a wide range of settings, including databases, interactive applications, and model-driven development. We show that bx are naturally modelled in terms of mutable state; in particular, the ‘set’ operations are stateful functions. This leads naturally to considering bx that exploit other computational effects too, such as I/O, nondeterminism, and failure, all largely ignored in the bx literature to date. We present a semantic foundation for symmetric bidirectional transformations with effects. We build on the mature theory of monadic encapsulation of effects in functional programming, develop the equational theory and important combinators for effectful bx, and provide a prototype implementation in Haskell along with several illustrative examples.


formal methods | 2008

A Process Semantics for BPMN

Peter Y. H. Wong; Jeremy Gibbons

Business Process Modelling Notation (BPMN), developed by the Business Process Management Initiative (BPMI), intends to bridge the gap between business process design and implementation. However, the specification of the notation does not include a formal semantics. This paper shows how a subset of the BPMN can be given a process semantics in Communicating Sequential Processes. Such a semantics allows developers to formally analyse and compare BPMN diagrams. A simple example of a business process is included to demonstrate the application of the semantics; some theoretical results about the semantics are briefly discussed.


SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming | 2006

Datatype-generic programming

Jeremy Gibbons

Generic programming aims to increase the flexibility of programming languages, by expanding the possibilities for parametrization -- ideally, without also expanding the possibilities for uncaught errors. The term means different things to different people: parametric polymorphism, data abstraction, meta-programming, and so on. We use it to mean polytypism, that is, parametrization by the shape of data structures rather than their contents. To avoid confusion with other uses, we have coined the qualified term datatype-generic programming for this purpose. In these lecture notes, we expand on the definition of datatype-generic programming, and present some examples of datatype-generic programs. We also explore the connection with design patterns in object-oriented programming; in particular, we argue that certain design patterns are just higher-order datatype-generic programs.


symposium on principles of programming languages | 2006

Fast and loose reasoning is morally correct

Nils Anders Danielsson; John Hughes; Patrik Jansson; Jeremy Gibbons

Functional programmers often reason about programs as if they were written in a total language, expecting the results to carry over to non-total (partial) languages. We justify such reasoning.Two languages are defined, one total and one partial, with identical syntax. The semantics of the partial language includes partial and infinite values, and all types are lifted, including the function spaces. A partial equivalence relation (PER) is then defined, the domain of which is the total subset of the partial language. For types not containing function spaces the PER relates equal values, and functions are related if they map related values to related values.It is proved that if two closed terms have the same semantics in the total language, then they have related semantics in the partial language. It is also shown that the PER gives rise to a bicartesian closed category which can be used to reason about values in the domain of the relation.


mathematics of program construction | 2002

Calculating Functional Programs

Jeremy Gibbons

Functional programs are merely equations; they may be manipulated by straightforward equational reasoning. In particular, one can use this style of reasoning to calculate programs, in the same way that one calculates numeric values in arithmetic. Many useful theorems for such reasoning derive from an algebraic view of programs, built around datatypes and their operations. Traditional algebraic methods concentrate on initial algebras, constructors, and values; dual co-algebraic methods concentrate on final co-algebras, destructors, and processes. Both methods are elegant and powerful; they deserve to be combined.


Journal of Functional Programming | 1996

The Third Homomorphism Theorem

Jeremy Gibbons

The Third Homomorphism Theorem is a folk theorem of the constructive algorithmics community. It states that a function on lists that can be computed both from left to right and from right to left is necessarily a list homomorphism – it can be computed according to any parenthesization of the list. We formalize and prove the theorem, and use it to improve an O ( n 2 ) sorting algorithm to O ( n log n ).


Soft Computing | 2007

A process-algebraic approach to workflow specification and refinement

Peter Y. H. Wong; Jeremy Gibbons

This paper describes a process-algebraic approach to specification and refinement of workflow processes. In particular, we model both specification and implementation of workflows as CSP processes. CSPs behavioural models and their respective refinement relations not only enable us to prove correctness properties of an individual workflow process against its behavioural specification but also allows us to design and develop workflow processes compositionally. Moreover, coupled with CSP is an industrial strength automated model checker FDR, which allows behavioural properties of workflow models to be proved automatically. This paper details some CSP models of van der Aalst et al.s control flow workflow patterns, and illustrates behavioural specification and refinement of workflow systems with a business process scenario.


Archive | 2002

Algebraic and coalgebraic methods in the mathematics of program construction

Roland Carl Backhouse; Roy L. Crole; Jeremy Gibbons

Ordered Sets and Complete Lattices.- Algebras and Coalgebras.- Galois Connections and Fixed Point Calculus.- Calculating Functional Programs.- Algebra of Program Termination.- Exercises in Coalgebraic Specification.- Algebraic Methods for Optimization Problems.- Temporal Algebra.


Journal of Functional Programming | 2009

The essence of the iterator pattern

Jeremy Gibbons; Bruno C. d. S. Oliveira

The ITERATOR pattern gives a clean interface for element-by-element access to a collection. Imperative iterations using the pattern have two simultaneous aspects: mapping and accumulating. Various existing functional iterations model one or other of these, but not both simultaneously. We argue that McBride and Patersons idioms, and in particular the corresponding traverse operator, do exactly this, and therefore capture the essence of the ITERATOR pattern. We present some axioms for traversal, and illustrate with a simple example, the repmin problem.


Archive | 2003

The Fun of Programming

Jeremy Gibbons; Oege de Moor

Preface Fun with Binary Heap Trees C.Okasaki Specification-based Testing with QuickCheck K.Claessen & J.Hughes Origami Programming J.Gibbons Describing and Interpreting Music in Haskell P.Hudak Mechanising Fusion G.Sittampalam & O.de Moor How to Write a Financial Contract S.Peyton Jones & J-M.Eber Functional Images C.Elliott Functional Hardware Description in Lava K.Claessen, M.Sheeran & S.Singh Combinators for Logic Programming M.Spivey & S.Seres Arrows and Computation R.Paterson A Prettier Printer P.Wadler Fun with Phantom Types R.Hinze Bibliography Index

Collaboration


Dive into the Jeremy Gibbons's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

James McKinna

University of St Andrews

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

James Cheney

University of Edinburgh

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge