Results 1  10
of
26
The derivative of a regular type is its type of onehole contexts (extended abstract), 2001. Unpublished manuscript, available via http://strictlypositive.org/diff.pdf. Conor McBride and Ross Paterson. Applicative programming with effects
"... Polymorphic regular types are treelike datatypes generated by polynomial type expressions over a set of free variables and closed under least fixed point. The ‘equality types ’ of Core ML can be expressed in this form. Given such a type expression with free, this paper shows a way to represent the ..."
Abstract

Cited by 42 (8 self)
 Add to MetaCart
Polymorphic regular types are treelike datatypes generated by polynomial type expressions over a set of free variables and closed under least fixed point. The ‘equality types ’ of Core ML can be expressed in this form. Given such a type expression with free, this paper shows a way to represent the onehole contexts for elements of within elements of, together with an operation which will plug an element of into the hole of such a context. Onehole contexts are given as inhabitants of a regular type, computed generically from the syntactic structure of by a mechanism better known as partial differentiation. The relevant notion of containment is shown to be appropriately characterized in terms of derivatives and plugging in. The technology is then exploited to give the onehole contexts for subelements of recursive types in a manner similar to Huet’s ‘zippers’[Hue97]. 1
Towards the Principled Design of Software Engineering Diagrams
, 2000
"... Diagrammatic specification, modelling and programming languages are increasingly prevalent in software engineering and, it is often claimed, provide natural representations which permit of intuitive reasoning. A desirable goal of software engineering is the rigorous justification of such reasoning, ..."
Abstract

Cited by 16 (3 self)
 Add to MetaCart
Diagrammatic specification, modelling and programming languages are increasingly prevalent in software engineering and, it is often claimed, provide natural representations which permit of intuitive reasoning. A desirable goal of software engineering is the rigorous justification of such reasoning, yet many formal accounts of diagrammatic languages confuse or destroy any natural reading of the diagrams. Hence they cannot be said to be intuitive. The answer, we feel, is to examine seriously the meaning and accuracy of the terms "natural" and "intuitive" in this context. This paper highlights, and illustrates by means of examples taken from industrial practice, an ongoing research theme of the authors. We take a deeper and more cognitively informed consideration of diagrams which leads us to a more natural formal underpinning that permits (i) the formal justification of informal intuitive arguments, without placing the onus of formality upon the engineer constructing the argument; and (i...
Hiproofs: A hierarchical notion of proof tree
"... Motivated by the concerns of theoremproving, we generalise the notion of proof tree to that of hierarchical proof tree. Hierarchical trees extend ordinary trees by adding partial order structure to the set of nodes: that allows us to visualise a node as a rectangle in the plane rather than as a poi ..."
Abstract
 Add to MetaCart
Motivated by the concerns of theoremproving, we generalise the notion of proof tree to that of hierarchical proof tree. Hierarchical trees extend ordinary trees by adding partial order structure to the set of nodes: that allows us to visualise a node as a rectangle in the plane rather than as a point, letting us use the containment relation to express structure additional to that given by a tree. A hierarchical proof tree, or hiproof for short, is a hierarchical tree with nodes labelled by tactics. We motivate the details of our definition by reference to the behaviour of tactics in tactical theorem proving. We characterise the construction of the ordinary proof tree underlying a hierarchical proof tree as a left adjoint. We then analyse the notion of proof refinement with respect to hierarchy, and we give a characterisation of hiproofs that is more directly suited to implementation. Key words: proof tree, hierarchical proof tree, skeleton, adjoint, refinement, tactical theorem proving 1
An Algebraic Foundation for Graphbased Diagrams in Computing
"... We develop an algebraic foundation for some of the graphbased structures underlying a variety of popular diagrammatic notations for the specification, modelling and programming of computing systems. Using hypergraphs and higraphs as leading examples, a locally ordered category Graph(C) of graphs in ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
We develop an algebraic foundation for some of the graphbased structures underlying a variety of popular diagrammatic notations for the specification, modelling and programming of computing systems. Using hypergraphs and higraphs as leading examples, a locally ordered category Graph(C) of graphs in a locally ordered category C is dened and endowed with symmetric monoidal closed structure. Two other operations on higraphs and variants, selected for relevance to computing applications, are generalised in this setting.
Design for Proof: An Approach to the Design of DomainSpecific Languages
 THE PROCEEDINGS OF THE THIRD FMICS WORKSHOP
, 1998
"... We propose that the domain of a domain specific language (DSL) can be characterised by the class of properties a programmer might want to prove of programs in the domain. This suggests that a major factor in the design of DSLs should be ease of proof for those properties. We develop these ideas i ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
We propose that the domain of a domain specific language (DSL) can be characterised by the class of properties a programmer might want to prove of programs in the domain. This suggests that a major factor in the design of DSLs should be ease of proof for those properties. We develop these ideas in the context of industrial computing systems by presenting a semantics and proof system for a language based on IEC 11313, the international standard programming language for programmable controllers.
An assessment of the IEC 11313 standard on languages for programmable controllers
, 1997
"... Programmable Logic Controllers (PLCs) are playing an increasing role in the construction of safety critical systems. The standard IEC 11313 defines a number of interrelated languages for the expression of PLC programs. Here we consider a subset of the IEC 11313 languages, that of function blocks, a ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Programmable Logic Controllers (PLCs) are playing an increasing role in the construction of safety critical systems. The standard IEC 11313 defines a number of interrelated languages for the expression of PLC programs. Here we consider a subset of the IEC 11313 languages, that of function blocks, and present an assessment of the standard from the viewpoint of providing a formal semantics to that subset. In doing so, we also provide justification for our decisions in resolving ambiguities in the standard. Finally, we comment on the overall structure of the standard and, particularly, on how it relates function blocks to the other programming elements.
www.elsevier.com/locate/entcs Hiproofs: A Hierarchical Notion of Proof Tree
"... Motivated by the concerns of theoremproving, we generalise the notion of proof tree to that of hierarchical proof tree. Hierarchical trees extend ordinary trees by adding partial order structure to the set of nodes: that allows us to visualise a node as a rectangle in the plane rather than as a poi ..."
Abstract
 Add to MetaCart
Motivated by the concerns of theoremproving, we generalise the notion of proof tree to that of hierarchical proof tree. Hierarchical trees extend ordinary trees by adding partial order structure to the set of nodes: that allows us to visualise a node as a rectangle in the plane rather than as a point, letting us use the containment relation to express structure additional to that given by a tree. A hierarchical proof tree, or hiproof for short, is a hierarchical tree with nodes labelled by tactics. We motivate the details of our definition by reference to the behaviour of tactics in tactical theorem proving. We characterise the construction of the ordinary proof tree underlying a hierarchical proof tree as a left adjoint. We then analyse the notion of proof refinement with respect to hierarchy, and we give a characterisation of hiproofs that is more directly suited to implementation. Keywords: proving proof tree, hierarchical proof tree, skeleton, adjoint, refinement, tactical theorem 1
Formalising Pragmatic Features of Graphbased Notations
 In 15th IEEE Symposium on Visual Languages (VL'99
, 1999
"... Graphbased notations form a significant subclass of visual languages. Studies of the use of such notations in practice have shown that users often employ pragmatic aspects, such as layout, to capture important domain information. Moreover this pragmatic information can support and guide reasoning o ..."
Abstract

Cited by 3 (2 self)
 Add to MetaCart
Graphbased notations form a significant subclass of visual languages. Studies of the use of such notations in practice have shown that users often employ pragmatic aspects, such as layout, to capture important domain information. Moreover this pragmatic information can support and guide reasoning over such representations. However, typical formalisations of graphbased notations often pay scant regard to such pragmatic considerations. This paper highlights an algebraic account of graphbased notations which is sensitive to relevant layout information. We illustrate, with examples taken from software engineering practice, how this algebra both captures pragmatic aspects of graphs and supports direct reasoning over their structure. Keywords: graphs, pragmatics, algebra, visual notations, software engineering Graphbased notations form a significant subclass of visual languages, particularly in computer science and many engineering domains. Typical formalisations of such notations ofte...
The Structure of CallbyValue
, 2000
"... To my parents Understanding procedure calls is crucial in computer science and everyday programming. Among the most common strategies for passing procedure arguments (‘evaluation strategies’) are ‘callbyname’, ‘callbyneed’, and ‘callbyvalue’, where the latter is the most commonly used. While ..."
Abstract

Cited by 12 (3 self)
 Add to MetaCart
To my parents Understanding procedure calls is crucial in computer science and everyday programming. Among the most common strategies for passing procedure arguments (‘evaluation strategies’) are ‘callbyname’, ‘callbyneed’, and ‘callbyvalue’, where the latter is the most commonly used. While reasoning about procedure calls is simple for callbyname, problems arise for callbyneed and callbyvalue, because it matters how often and in which order the arguments of a procedure are evaluated. We shall classify these problems and see that all of them occur for callbyvalue, some occur for callbyneed, and none occur for callbyname. In that sense, callbyvalue is the ‘greatest common denominator ’ of the three evaluation strategies. Reasoning about callbyvalue programs has been tackled by Eugenio Moggi’s ‘computational lambdacalculus’, which is based on a distinction between ‘values’
Results 1  10
of
26