Simon J. Thompson

dblp:t/SimonJThompson · also Simon Thompson 0001 · DBLP profile ↗
← Back
53ranked-venue papers
12as first author
5since 2021 · last 2026
0000-0002-2350-301XORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 27 · 5 first-author · 2 since 2021Theory of computation · 10 · 4 first-author · 2 since 2021Artificial intelligence and machine learning · 4Databases, data management, data science and information retrieval · 3 · 1 first-authorSystems, architecture and hardware · 2Computer networks · 2Graphics, computer vision, multimedia, augmented reality and games · 2 · 1 first-authorHuman-computer interaction and ubiquitous computing · 1Applied, interdisciplinary, general and emerging computing · 1 · 1 first-author
YearPublicationVenuePosition
2026 Mixed Choice in Asynchronous Multiparty Session Types
abstract
We present a multiparty session type (MST) framework with asynchronous mixed choice (MC). We propose a core construct for MC that allows transient inconsistencies in protocol state between distributed participants, but ensures all participants can always eventually reach a mutually consistent state. We prove the correctness of our system by establishing a progress property and an operational correspondence between global types and distributed local type projections. Based on our theory, we implement a practical toolchain for specifying and validating asynchronous MST protocols featuring MC, and programming compliant gen_statem processes in Erlang/OTP. We test our framework by using our toolchain to specify and reimplement part of the amqp_client of the RabbitMQ broker for Erlang.
Laura Bocchi, Raymond Hu, Adriana Laura Voinea, Simon J. Thompson
Proc. ACM Program. Lang.4
2025 Abstract Subtyping for Asynchronous Multiparty Sessions
abstract
Session subtyping answers the question of whether a program in a communicating system can be safely substituted for another, when their communication behaviour is described by session types. Asynchronous session subtyping is undecidable, even for two participants, hence the interest in sound, but incomplete, subtyping algorithms. Asynchronous multiparty subtyping can be formulated by decomposing session types into single input and output types which preclude, respectively, external and internal choice. This paper shows how abstract interpretation can sit atop this approach and how it leads to an algorithm that can prove subtyping for intricate communication patterns.
Laura Bocchi, Andy King, Maurizio Murgia 0001, Simon J. Thompson
CONCUR4
2023 Program equivalence in an untyped, call-by-value functional language with uncurried functions
abstract
We aim to reason about the correctness of behaviour-preserving transformations of Erlang programs. Behaviour preservation is characterised by semantic equivalence. Based upon our existing formal semantics for Core Erlang, we investigate potential definitions of suitable equivalence relations. In particular we adapt a number of existing approaches of expression equivalence to a simple functional programming language that carries the main features of sequential Core Erlang; we then examine the properties of the equivalence relations and formally establish connections between them. The results presented in this paper, including all theorems and their proofs, have been machine checked using the Coq proof assistant.
Dániel Horpácsi, Péter Bereczky, Simon J. Thompson
J. Log. Algebraic Methods Program.3
2023 A model of actors and grey failures
abstract
Existing models for the analysis of concurrent processes tend to focus on fail-stop failures, where processes are either working or permanently stopped, and their state (working/stopped) is known. In fact, systems are often affected by grey failures: failures that are latent, possibly transient, and may affect the system in subtle ways that later lead to major issues (such as crashes, limited availability, overload). We introduce a model of actor-based systems with grey failures, based on two interlinked layers: an actor model, given as an asynchronous process calculus with discrete time, and a failure model that represents failure patterns to inject in the system. Our failure model captures not only fail-stop node and link failures, but also grey failures (e.g., partial, transient). We give a behavioural equivalence relation based on weak barbed bisimulation to compare systems on the basis of their ability to recover from failures, and on this basis we define some desirable properties of reliable systems. By doing so, we reduce the problem of checking reliability properties of systems to the problem of checking bisimulation.
Laura Bocchi, Julien Lange, Simon J. Thompson, Adriana Laura Voinea
Log. Methods Comput. Sci.3
2022 A Model of Actors and Grey Failures
Laura Bocchi, Julien Lange, Simon J. Thompson, Adriana Laura Voinea
COORDINATION3
2020 Efficient Static Analysis of Marlowe Contracts
Pablo Lamela Seijas, Simon J. Thompson
ISoLA (3)3
2019 Characterising renaming within OCaml's module system: theory and implementation
abstract
We present an abstract, set-theoretic denotational semantics for a significant subset of OCaml and its module system, allowing to reason about the correctness of renaming value bindings. Our semantics captures information about the binding structure of programs, as well as about which declarations are related by the use of different language constructs (e.g. functors, module types and module constraints). Correct renamings are precisely those that preserve this structure. We show that our abstract semantics is sound with respect to a (domain-theoretic) denotational model of the operational behaviour of programs, and that it allows us to prove various high-level, intuitive properties of renamings. This formal framework has been implemented in a prototype refactoring tool for OCaml that performs renaming.
Reuben N. S. Rowe, Hugo Férée, Simon J. Thompson, Scott Owens
PLDI3
2018 Marlowe: Financial Contracts on Blockchain
Pablo Lamela Seijas, Simon J. Thompson
ISoLA (4)2
2018 Model extraction and test generation from JUnit test suites
Pablo Lamela Seijas, Simon J. Thompson, Miguel Angel Francisco
Softw. Qual. J.2
2017 Scaling Reliably: Improving the Scalability of the Erlang Distributed Actor Platform
abstract
Distributed actor languages are an effective means of constructing scalable reliable systems, and the Erlang programming language has a well-established and influential model. While the Erlang model conceptually provides reliable scalability, it has some inherent scalability limits and these force developers to depart from the model at scale. This article establishes the scalability limits of Erlang systems and reports the work of the EU RELEASE project to improve the scalability and understandability of the Erlang reliable distributed actor model. We systematically study the scalability limits of Erlang and then address the issues at the virtual machine, language, and tool levels. More specifically: (1) We have evolved the Erlang virtual machine so that it can work effectively in large-scale single-host multicore and NUMA architectures. We have made important changes and architectural improvements to the widely used Erlang/OTP release. (2) We have designed and implemented Scalable Distributed (SD) Erlang libraries to address language-level scalability issues and provided and validated a set of semantics for the new language constructs. (3) To make large Erlang systems easier to deploy, monitor, and debug, we have developed and made open source releases of five complementary tools, some specific to SD Erlang. Throughout the article we use two case studies to investigate the capabilities of our new technologies and tools: a distributed hash table based Orbit calculation and Ant Colony Optimisation (ACO). Chaos Monkey experiments show that two versions of ACO survive random process failure and hence that SD Erlang preserves the Erlang reliability model. While we report measurements on a range of NUMA and cluster architectures, the key scalability experiments are conducted on the Athos cluster with 256 hosts (6,144 cores). Even for programs with no global recovery data to maintain, SD Erlang partitions the network to reduce network traffic and hence improves performance of the Orbit and ACO benchmarks above 80 hosts. ACO measurements show that maintaining global recovery data dramatically limits scalability; however, scalability is recovered by partitioning the recovery data. We exceed the established scalability limits of distributed Erlang, and do not reach the limits of SD Erlang for these benchmarks at this scale (256 hosts, 6,144 cores).
Philip W. Trinder, Natalia Chechina, Nikolaos S. Papaspyrou, Konstantinos Sagonas, Simon J. Thompson, Stephen Adams 0002, Stavros Aronis, Robert Baker 0001, Eva Bihari, Olivier Boudeville, Francesco Cesarini, Maurizio Di Stefano, Sverker Eriksson, Viktória Fördós, Amir Ghaffari, Aggelos Giantsios, Rickard Green, Csaba Hoch, David Klaftenegger, Huiqing Li, Kenneth Lundin, Kenneth MacKenzie, Katerina Roukounaki, Yiannis Tsiouris, Kjell Winblad
ACM Trans. Program. Lang. Syst.5
2017 Evaluating Scalable Distributed Erlang for Scalability and Reliability
abstract
Large scale servers with hundreds of hosts and tens of thousands of cores are becoming common. To exploit these platforms software must be both scalable and reliable, and distributed actor languages like Erlang are a proven technology in this area. While distributed Erlang conceptually supports the engineering of large scale reliable systems, in practice it has some scalability limits that force developers to depart from the standard language mechanisms at scale. In earlier work we have explored these scalability limitations, and addressed them by providing a Scalable Distributed (SD) Erlang library that partitions the network of Erlang Virtual Machines (VMs) into scalable groups (s_groups). This paper presents the first systematic evaluation of SD Erlang s_groups and associated tools, and how they can be used. We present a comprehensive evaluation of the scalability and reliability of SD Erlang using three typical benchmarks and a case study. We demonstrate that s_groups improve the scalability of reliable and unreliable Erlang applications on up to 256 hosts (6,144 cores). We show that SD Erlang preserves the class-leading distributed Erlang reliability model, but scales far better than the standard model. We present a novel, systematic, and tool-supported approach for refactoring distributed Erlang applications into SD Erlang. We outline the new and improved monitoring, debugging and deployment tools for large scale SD Erlang applications. We demonstrate the scaling characteristics of key tools on systems comprising up to 10 K Erlang VMs.
Natalia Chechina, Kenneth MacKenzie, Simon J. Thompson, Philip W. Trinder, Olivier Boudeville, Viktória Fördós, Csaba Hoch, Amir Ghaffari, Mario Moro Hernandez
IEEE Trans. Parallel Distributed Syst.3
2016 A task-based evaluation of combined set and network visualization
abstract
This paper addresses the problem of how best to visualize network data grouped into overlapping sets. We address it by evaluating various existing techniques alongside a new technique. Such data arise in many areas, including social network analysis, gene expression data, and crime analysis. We begin by investigating the strengths and weakness of four existing techniques, namely Bubble Sets, EulerView, KelpFusion, and LineSets, using principles from psychology and known layout guides. Using insights gained, we propose a new technique, SetNet, that may overcome limitations of earlier methods. We conducted a comparative crowdsourced user study to evaluate all five techniques based on tasks that require information from both the network and the sets. We established that EulerView and SetNet, both of which draw the sets first, yield significantly faster user responses than Bubble Sets, KelpFusion and LineSets, all of which draw the network first.
Peter Rodgers 0001, Gem Stapleton, Bilal Alsallakh, Luana Micallef, Robert Baker 0001, Simon J. Thompson
Inf. Sci.6
2016 Review of spreadsheet implementation technology: Basics and extensions, by Peter Sestoft , MIT Press, 2014, ISBN 978-0-262-52664-7
Simon J. Thompson
J. Funct. Program.1
2016 Improving the network scalability of Erlang
abstract
As the number of cores grows in commodity architectures so does the likelihood of failures. A distributed actor model potentially facilitates the development of reliable and scalable software on these architectures. Key components include lightweight processes which ‘share nothing’ and hence can fail independently. Erlang is not only increasingly widely used, but the underlying actor model has been a beacon for programming language design, influencing for example Scala, Clojure and Cloud Haskell. While the Erlang distributed actor model is inherently scalable, we demonstrate that it is limited by some pragmatic factors. We address two network scalability issues here: globally registered process names must be updated on every node (virtual machine) in the system, and any Erlang nodes that communicate maintain an active connection. That is, there is a fully connected O ( n 2 ) network of n nodes. We present the design, implementation, and initial evaluation of a conservative extension of Erlang — Scalable Distributed (SD) Erlang. SD Erlang partitions the global namespace and connection network using s_groups. An s_group is a set of nodes with its own process namespace and with a fully connected network within the s_group, but only individual connections outside it. As a node may belong to more than one s_group it is possible to construct arbitrary connection topologies like trees or rings. We present an operational semantics for the s_group functions, and outline the validation of conformance between the implementation and the semantics using the QuickCheck automatic testing tool. Our preliminary evaluation in comparison with distributed Erlang shows that SD Erlang dramatically improves network scalability even if the number of global operations is tiny (0.01%). Moreover, even in the absence of global operations the reduced connection maintenance overheads mean that SD Erlang scales better beyond 80 nodes (1920 cores).
Natalia Chechina, Huiqing Li, Amir Ghaffari, Simon J. Thompson, Philip W. Trinder
J. Parallel Distributed Comput.4
2015 Safe Concurrency Introduction through Slicing
abstract
Traditional refactoring is about modifying the structure of existing code without changing its behaviour, but with the aim of making code easier to understand, modify, or reuse. In this paper, we introduce three novel refactorings for retrofitting concurrency to Erlang applications, and demonstrate how the use of program slicing makes the automation of these refactorings possible.
Huiqing Li, Simon J. Thompson
PEPM2
2014 Automating property-based testing of evolving web services
abstract
Web services are the most widely used service technology that drives the Service-Oriented Computing~(SOC) paradigm. As a result, effective testing of web services is getting increasingly important. In this paper, we present a framework and toolset for testing web services and for evolving test code in sync with the evolution of web services. Our approach to testing web services is based on the Erlang programming language and QuviQ QuickCheck, a property-based testing tool written in Erlang, and our support for test code evolution is added to Wrangler, the Erlang refactoring tool.
Huiqing Li, Simon J. Thompson, Pablo Lamela Seijas, Miguel Angel Francisco
PEPM2
2013 Refactoring tools for functional languages
abstract
Abstract Refactoring is the process of changing the design of a program without changing what it does. Typical refactorings, such as function extraction and generalisation, are intended to make a program more amenable to extension, more comprehensible and so on. Refactorings differ from other sorts of program transformation in being applied to source code, rather than to a ‘core’ language within a compiler, and also in having an effect across a code base, rather than to a single function definition, say. Because of this, there is a need to give automated support to the process. This paper reflects on our experience of building tools to refactor functional programs written in Haskell (HaRe) and Erlang (Wrangler). We begin by discussing what refactoring means for functional programming languages, first in theory, and then in the context of a larger example. Next, we address system design and details of system implementation as well as contrasting the style of refactoring and tooling for Haskell and Erlang. Building both tools led to reflections about what particular refactorings mean, as well as requiring analyses of various kinds, and we discuss both of these. We also discuss various extensions to the core tools, including integrating the tools with test frameworks; facilities for detecting and eliminating code clones; and facilities to make the systems extensible by users. We then reflect on our work by drawing some general conclusions, some of which apply particularly to functional languages, while many others are of general value.
Simon J. Thompson, Huiqing Li
J. Funct. Program.1
2013 Programming errors in traversal programs over structured data
Ralf Lämmel, Simon J. Thompson, Markus Kaiser 0002
Sci. Comput. Program.2
2012 Evolving recursive programs using non-recursive scaffolding
abstract
Genetic programming has proven capable of evolving solutions to a wide variety of problems. However, the successes have largely been with programs without iteration or recursion; evolving recursive programs has turned out to be particularly challenging. The main obstacle to evolving recursive programs seems to be that they are particularly fragile to the application of search operators: a small change in a correct recursive program generally produces a completely wrong program. In this paper, we present a simple and general method that allows us to pass back and forth from a recursive program to an associated non-recursive program. Finding a recursive program can be reduced to evolving non-recursive programs followed by converting the optimum non-recursive program found to the associated optimum recursive program. This avoids the fragility problem above, as evolution does not search the space of recursive programs. We present promising experimental results on a test-bed of recursive problems.
Alberto Moraglio, Fernando E. B. Otero, Colin G. Johnson, Simon J. Thompson, Alex Alves Freitas
IEEE Congress on Evolutionary Computation4
2012 A Domain-Specific Language for Scripting Refactorings in Erlang
Huiqing Li, Simon J. Thompson
FASE2
2012 Automated API migration in a user-extensible refactoring tool for Erlang programs
abstract
Wrangler is a refactoring and code inspection tool for Erlang programs. Apart from providing a set of built-in refactorings and code inspection functionalities, Wrangler allows users to define refactorings, code inspections, and general program transformations for themselves to suit their particular needs. These are defined using a template- and rule-based program transformation and analysis framework built into Wrangler.
Huiqing Li, Simon J. Thompson
ASE2
2011 Incremental Clone Detection and Elimination for Erlang Programs
Huiqing Li, Simon J. Thompson
FASE2
2010 Fragments of Spider Diagrams of Order and Their Relative Expressiveness
Aidan J. Delaney, Gem Stapleton, John Taylor 0001, Simon J. Thompson
Diagrams4
2010 Similar Code Detection and Elimination for Erlang Programs
Huiqing Li, Simon J. Thompson
PADL2
2010 Clone detection and elimination for Haskell
abstract
Duplicated code is a well known problem in software maintenance and refactoring. Code clones tend to increase program size and several studies have shown that duplicated code makes maintenance and code understanding more complex and time consuming.
Christopher Brown 0002, Simon J. Thompson
PEPM2
2010 Refactoring Support for Modularity Maintenance in Erlang
abstract
Low coupling between modules and high cohesion inside each module are key features of good software architecture. Systems written in modern programming languages generally start with some reasonably well-designed module structure, however with continuous feature additions, modifications and bug fixes, software modularity gradually deteriorates. So, there is a need for incremental improvements to modularity to avoid the situation when the structure of the system becomes too complex to maintain. We demonstrate how Wrangler, a general-purpose refactoring tool for Erlang, can be used to maintain and improve the modularity of programs written in Erlang without dramatically changing the existing module structure. We identify a set of "modularity smells", and show how they can be detected by Wrangler and removed by way of a variety of refactorings implemented in Wrangler. Validation of the approach and usefulness of the tool are demonstrated by case studies.
Huiqing Li, Simon J. Thompson
SCAM2
2009 Clone detection and removal for Erlang/OTP within a refactoring environment
abstract
A well-known bad code smell in refactoring and software maintenance is duplicated code, or code clones. A code clone is a code fragment that is identical or similar to another. Unjustified code clones increase code size, make maintenance and comprehension more difficult, and also indicate design problems such as lack of encapsulation or abstraction.
Huiqing Li, Simon J. Thompson
PEPM2
2008 Spider Diagrams of Order and a Hierarchy of Star-Free Regular Languages
Aidan J. Delaney, John Taylor 0001, Simon J. Thompson
Diagrams3
2008 Tool support for refactoring functional programs
abstract
We demonstrate the Haskell Refactorer, HaRe, and the Erlang Refactorer, Wrangler, as examples of fully-functional refactoring tools for functional programming languages. HaRe and Wrangler are designed to handle multi-module projects in complete languages: Haskell 98 and Erlang/OTP. They are embedded in Emacs (and gVim) and respect programmer layout styles.
Huiqing Li, Simon J. Thompson
PEPM2
2008 Mechanical verification of refactorings
abstract
In this paper we describe the formal verification of refactorings for untyped and typed lambda-calculi. This verification is performed in the proof assistant Isabelle/HOL.
Nik Sultana, Simon J. Thompson
PEPM2
2007 Declarative extensions of XML languages
abstract
We present a set of XML language extensions that bring notions from functional programming to web authors, extending the power of declarative modelling for the web. Our previous work discussed expressions and user-defined events. In this paper, we discuss how one may extend XML by adding definitions and parameterization; complex data and data types; and reactivity, events and continuous "behaviours". We consider these extensions in the light of World Wide Web Consortium standards, and illustrate their utility by a variety of use cases.
Simon J. Thompson, Peter R. King, Patrick Schmitz
ACM Symposium on Document Engineering1
2007 A Power Management Architecture for Sensor Nodes
abstract
Wireless sensor nodes are a versatile, general-purpose technology capable of measuring, monitoring and controlling their environment. Even though sensor nodes are becoming ever smaller and more power efficient, there is one area that is not yet fully addressed; power supply units (PSUs). Standard solutions that are efficient enough for electronic devices with higher power consumption than sensor nodes, such as mobile phones or PDAs, may prove to be ill suited for the extreme low-power and size requirements often found on wireless sensor nodes. In this paper, a system-level design of power management architecture (PMA) is presented. The PMA is an integration of PSU hardware and various software components, and is capable of supplying a sensor node with energy from multiple sources, as well as providing status information from the PSU. The heart of the architecture is a context- and power-aware task manager, which controls when the nodes low-power modes are activated, and is highly integrated with PSU hardware as well as other software components in the system. Its main responsibility is to schedule when energy consuming tasks can be dispatched. Depending on the task priority and system configuration, a task can be dispatched, discarded or delayed. This approach ensures that only critical tasks will be allowed to use the battery, and that the system will be powered by renewable energy when performing other non-critical tasks.
Jens Eliasson, Per Lindgren, Jerker Delsing, Simon J. Thompson, Yi-Bing Cheng
WCNC4
2005 Modelling Reactive Multimedia: Design and Authoring
Simon J. Thompson, Peter R. King, Helen Cameron
Multim. Tools Appl.1
2004 What Can Spider Diagrams Say?
Gem Stapleton, John Howse, John Taylor 0001, Simon J. Thompson
Diagrams4
2004 Behavioral reactivity and real time programming in XML: functional programming meets SMIL animation
abstract
XML and its associated languages are emerging as powerful authoring tools for multimedia and hypermedia web content. Furthermore intelligent presentation generation engines have begun to appear as have models and platforms for adaptive presentations. However XML-based models are limited by their lack of expressiveness in presentation and animation. As a result authors of dynamic adaptive web content must often use considerable amounts of script or code. The use of such script or code has two serious drawbacks. First such code undermines the declarative description possible in the original presentation language and second the scripting/coding approach does not readily lend itself to authoring by non programmers. In this paper we describe a set of XML language extensions inspired by features from the functional programming world which are designed to widen the class of reactive systems which could be described in languages such as SMIL. The described features extend the power of declarative modeling for the web by allowing the introduction of web media items which may dynamically react to continuously varying inputs both in a continuous way and by triggering discrete user-defined events. The two extensions described herein are discussed in the context of SMIL Animation and SVG but could be applied to many XML-based languages.
Peter R. King, Patrick Schmitz, Simon J. Thompson
ACM Symposium on Document Engineering3
2004 The Expressiveness of Spider Diagrams Augmented with Constants
abstract
Spider diagrams are a visual language for expressing logical statements. Spiders represent the existence of elements and contours denote sets. Several sound and complete spider diagram systems have been developed and it is known that the spider diagram language is equivalent in expressive power to monadic first order logic with equality. However, these sound and complete spider diagram systems do not contain syntactic elements analogous to constants in first order predicate logic. We extend the spider diagram language to include constant spiders which represent specific individuals and give formal semantics for the extended diagram language. We then prove that this extended system is equivalent in expressive power to the language of spider diagrams without constants.
Gem Stapleton, John Howse, John Taylor 0001, Simon J. Thompson
VL/HCC4
2004 The Expressiveness of Spider Diagrams
abstract
Spider diagrams are a visual language for expressing logical statements. In this paper we identify a well-known fragment of first-order predicate logic that we call MFOL=, equivalent in expressive power to the spider diagram language. The language MFOL= is monadic and includes equality but has no constants or function symbols. To show this equivalence, in one direction, for each diagram we construct a sentence in MFOL= that expresses the same information. For the more challenging converse we prove that there exists a finite set of models for a sentence S that can be used to classify all the models for S. Using these classifying models we show that there is a diagram expressing the same information as S.
Gem Stapleton, John Howse, John Taylor 0001, Simon J. Thompson
J. Log. Comput.4
2003 Tool support for refactoring functional programs
Huiqing Li, Claus Reinke, Simon J. Thompson
Haskell3
2003 Mexitl: Multimedia in Executable Interval Temporal Logic
Howard Bowman, Helen Cameron, Peter R. King, Simon J. Thompson
Formal Methods Syst. Des.4
2003 A Decision Procedure and Complete Axiomatization of Finite Interval Temporal Logic with Projection
abstract
This paper presents a complete axiomatization for propositional interval temporal logic (PITL) with projection. The axiomatization is based on a tableau decision procedure for the logic, which in turn is founded upon a normal form for PITL formluae. The construction of the axiomatization provides a general mechanism for generating axiomatizations thus: given a normal form for a new connective, axioms can be generated for the connective from the tableau construction using that normal form. The paper concludes with a discussion of aspects of compositionality for PITL with projection.
Howard Bowman, Simon J. Thompson
J. Log. Comput.2
2003 Modeling Reactive Multimedia: Events and Behaviors
Helen Cameron, Peter R. King, Simon J. Thompson
Multim. Tools Appl.3
2000 A functional reactive animation of a lift using Fran
abstract
This paper uses the Fran system for functional reactive animation to give a simulation of a lift – or elevator – with many floors. The paper first introduces a two-floor version, and then indicates in detail how this is extended to give a simulation with an arbitrary number of floors and featuring more realistic animated graphics. The paper introduces those aspects of Fran relevant to the simulation, making it a self-contained tutorial on parts of Fran and how it is applied in practice. The full code for the system is available on the World Wide Web.
Simon J. Thompson
J. Funct. Program.1
1998 A Tableau Method for Interval Temporal Logic with Projection
Howard Bowman, Simon J. Thompson
TABLEAUX2
1995 Formal description techniques for object management
John Derrick, Peter F. Linington, Simon J. Thompson
Integrated Network Management3
1995 A Logic for Miranda, Revisited
abstract
Abstract This paper expands upon work begun in [Tho89], in building a logic for the Miranda functional programming language. After summarising the work in that paper, a translation of Miranda definitions into logical formulas is presented, and illustrated by means of examples. This work expands upon [Tho89] in giving a complete treatment of sequences of equations, and by examining how to translate the local definitions introduced by where clauses. The status of the logic is then examined, and it is argued that the logic extends a natural operational semantics of Miranda, given by the translations of definitions into conditional equations. Finally it is shown how the logic can be implemented in the Isabelle proof tool.
Simon J. Thompson
Formal Aspects Comput.1
1994 On the Equivalence Between CMC and TIM
abstract
Abstract In this paper we present an equivalence between TIM, a machine developed to implement non-strict functional programming languages, and the set of Categorical Multi-Combinators, a rewriting system developed with similar aims. These two models of computation at first appear to be quite different, but we show a direct equivalence between them, thereby adding some new structure to the ‘design-space’ of abstract machines for non-strict languages.
Rafael Dueire Lins, Simon J. Thompson, Simon L. Peyton Jones
J. Funct. Program.2
1993 Functional Programming in Education - Introduction
Simon J. Thompson, Philip Wadler
J. Funct. Program.1
1992 The Categorical Multi-Combinator Machine: CMCM
abstract
Implementations of functional programming languages can take a number of different forms, and many different machines have been developed for this purpose. This paper introduces another abstract machine, the Categorical Multi-Combinator Machine (CMCM). A thorough introduction to the machines is given, particularly as far as the discussion of the starting of computational information is concerned.
Simon J. Thompson, Rafael Dueire Lins
Comput. J.1
1990 Implementing SASL using Categorical Multi-combinators
Rafael Dueire Lins, Simon J. Thompson
Softw. Pract. Exp.2
1989 A Logic for Miranda
abstract
Abstract We formulate a logical description of the functional programming language Miranda. Distinctive features include a full treatment of pattern matching with repeated variables and the characterisation of various (sub-)domains, like the defined natural numbers and finite definite lists, by means of new quantifiers. These quantifiers are introduced by induction rules, and also carry elimination rules. We also discuss the rôle of fixed point induction and issues of modularisation and scale.
Simon J. Thompson
Formal Aspects Comput.1
1989 Lawful Functions and Program Verification in Miranda
Simon J. Thompson
Sci. Comput. Program.1
1985 Axiomatic Recursion Theory and the Continuous Functionals
abstract
Abstract We define, in the spirit of Fenstad [2], a higher type computation theory, and show that countable recursion over the continuous functionals forms such a theory. We also discuss Hyland's proposal from [4] for a scheme with which to supplement S1–S9, and show that this augmented set of schemes fails to generate countable recursion. We make another proposal to which the methods of this section do not apply.
Simon J. Thompson
J. Symb. Log.1
1985 Priority Arguments in the Continuous R. E. Degrees
abstract
Abstract We show that at each type κ ≥ 2, there exist c-irreducible functionals of c-r.e. degree, as defined in [Nor 1]. Our proofs are based on arguments due to Hinman, [Hin 1], and Dvornikov, [Dvo 1].
Simon J. Thompson
J. Symb. Log.1