Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Lindsay Groves

dblp:35/5781 · also Lindsay J. Groves · DBLP profile ↗
← Back
32ranked-venue papers
4as first author
2since 2021 · last 2022
0000-0002-9179-3602ORCID · verified

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

Software engineering, systems software and programming languages · 22 · 3 first-authorTheory of computation · 5 · 1 first-authorArtificial intelligence and machine learning · 4 · 1 since 2021Computer networks · 4 · 1 since 2021Systems, architecture and hardware · 1Databases, data management, data science and information retrieval · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
3 papers
Programming languages and type systems · 84% Concurrent programming · 7% Software maintenance and evolution · 6%

Topics — the 7 heaviest of 8, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › type systems › subtyping
decidable subtyping
0.412020
Decidable subtyping for path dependent types · Proc. ACM Program. Lang. 2020
Programming languages and type systems › type theory › dependent types
path-dependent types
0.412020
Decidable subtyping for path dependent types · Proc. ACM Program. Lang. 2020
Programming languages and type systems
type systems
0.412020
Decidable subtyping for path dependent types · Proc. ACM Program. Lang. 2020
Software maintenance and evolution
refactoring
0.112009
Towards Automating Class-Splitting Using Betweenness Clustering · ASE 2009
Concurrent programming
concurrent data structures
0.112006
Formal Verification of a Lazy Concurrent List-Based Set Algorithm · CAV 2006
Program verification › concurrent program verification
concurrent data structure verification
0.112006
Formal Verification of a Lazy Concurrent List-Based Set Algorithm · CAV 2006
Concurrent programming › atomicity
linearizability
0.112006
Formal Verification of a Lazy Concurrent List-Based Set Algorithm · CAV 2006

Methods — techniques the papers use, named apart from their topics

machine-checked proof · 0.4betweenness clustering · 0.1rely-guarantee reasoning · 0.1refinement proof · 0.1
YearPublicationVenuePosition
2022 Verifying Whiley Programs with Boogie
abstract
Abstract The quest to develop increasingly sophisticated verification systems continues unabated. Tools such as Dafny, Spec#, ESC/Java, SPARK Ada and Whiley attempt to seamlessly integrate specification and verification into a programming language, in a similar way to type checking. A common integration approach is to generate verification conditions that are handed off to an automated theorem prover. This provides a nice separation of concerns and allows different theorem provers to be used interchangeably. However, generating verification conditions is still a difficult undertaking and the use of more “high-level” intermediate verification languages has become commonplace. In particular, Boogie provides a widely used and understood intermediate verification language. A common difficulty is the potential for an impedance mismatch between the source language and the intermediate verification language. In this paper, we explore the use of Boogie as an intermediate verification language for verifying programs in Whiley. This is noteworthy because the Whiley language has (amongst other things) a rich type system with considerable potential for an impedance mismatch. We provide a comprehensive account of translating Whiley to Boogie which demonstrates that it is possible to model most aspects of the Whiley language. Key challenges posed by the Whiley language included: the encoding of Whiley’s expressive type system and support for flow typing and generics; the implicit assumption that expressions in specifications are well defined; the ability to invoke methods from within expressions; the ability to return multiple values from a function or method; the presence of unrestricted lambda functions; and the limited syntax for framing. We demonstrate that the resulting verification tool can verify significantly more programs than the native Whiley verifier which was custom-built for Whiley verification. Furthermore, our work provides evidence that Boogie is (for the most part) sufficiently general to act as an intermediate language for a wide range of source languages.
David J. Pearce 0001, Mark Utting, Lindsay Groves
J. Autom. Reason.3
2021 A survey on network forwarding in Software-Defined Networking
Bryan C. K. Ng, Winston Khoon Guan Seah, Lindsay Groves
J. Netw. Comput. Appl.4
2020 Syntactically Restricting Bounded Polymorphism for Decidable Subtyping
Julian Mackay, Alex Potanin, Jonathan Aldrich, Lindsay Groves
APLAS4
2020 A Relaxed Balanced Lock-Free Binary Search Tree
Lindsay Groves, Alex Potanin
PDCAT2
2020 Decidable subtyping for path dependent types
abstract
Path dependent types have long served as an expressive component of the Scala programming language. They allow for the modelling of both bounded polymorphism and a degree of nominal subtyping. Nominality in turn provides the ability to capture first class modules. Thus a single language feature gives rise to a rich array of expressiveness. Recent work has proven path dependent types sound in the presence of both intersection and recursive types, but unfortunately typing remains undecidable, posing problems for programmers who rely on the results of type checkers. The Wyvern programming language is an object oriented language with path dependent types, recursive types and first class modules. In this paper we define two variants of Wyvern that feature decidable typing, along with machine checked proofs of decidability. Despite the restrictions, our approaches retain the ability to encode the parameteric polymorphism of Java generics along with many idioms of the Scala module system.
Julian Mackay, Alex Potanin, Jonathan Aldrich, Lindsay Groves
Proc. ACM Program. Lang.4
2018 Capabilities: Effects for Free
Aaron Craig, Alex Potanin, Lindsay Groves, Jonathan Aldrich
ICFEM3
2017 Making Whiley Boogie!
Mark Utting, David J. Pearce 0001, Lindsay Groves
IFM3
2017 Equivalent forwarding set evaluation in software defined networking
abstract
Network devices rely on forwarding rules to forward packets. With the latest OpenFlow standard (the de-facto software defined network standard), the rules that make up a forwarding set may be expressed in the form of a single table or multiple linked tables. This raises the question of how to reconcile the forwarding behaviour of different flow tables? In this paper we propose two approaches to convert various forwarding sets into a canonical form called equivalent forwarding set and formalise the process of evaluating equivalence between two forwarding sets in terms of networking function.
Bryan C. K. Ng, Winston Khoon Guan Seah, Lindsay Groves
IM4
2017 Deterministic Confidence Interval Estimation of Networking Traffic in SDN
abstract
Software Defined Networking (SDN) enables a centralised entity - the controller - to monitor the network's status by collecting traffic statistics such as packets, bytes, etc. Each statistic is associated with a forwarding table entry (FTE) in a switch whose structure and format is specified by the OpenFlow standard (de-facto SDN standard). For a flow with a FTE, its statistic is easily acquired by an inquiry from a controller to the switch on this flow's corresponding FTE. If a flow has no matching FTE, its statistic is not known until a new FTE is installed for the purpose of monitoring it. However, the time to install these FTEs and the potential conflicts between them and the existing FTEs jeopardise the feasibility of this approach. To avoid these drawbacks, this paper proposes a traffic estimation approach based on the existing FTE's statistics. With the help of boolean algebra, the deterministic confidence interval of any given flowset can be estimated. This approach avoids the FTE installation time and also saves the FTE storage space.
Bryan C. K. Ng, Winston Khoon Guan Seah, Lindsay Groves
LCN4
2016 Contextual Trace Refinement for Concurrent Objects: Safety and Progress
Brijesh Dongol, Lindsay Groves
ICFEM2
2015 Defining Correctness Conditions for Concurrent Objects in Multicore Architectures
abstract
Correctness of concurrent objects is defined in terms of conditions that determine allowable relationships between histories of a concurrent object and those of the corresponding sequential object. Numerous correctness conditions have been proposed over the years, and more have been proposed recently as the algorithms implementing concurrent objects have been adapted to cope with multicore processors with relaxed memory architectures. We present a formal framework for defining correctness conditions for multicore architectures, covering both standard conditions for totally ordered memory and newer conditions for relaxed memory, which allows them to be expressed in uniform manner, simplifying comparison. Our framework distinguishes between order and commitment properties, which in turn enables a hierarchy of correctness conditions to be established. We consider the Total Store Order (TSO) memory model in detail, formalise known conditions for TSO using our framework, and develop sequentially consistent variations of these. We present a work-stealing deque for TSO memory that is not linearizable, but is correct with respect to these new conditions. Using our framework, we identify a new non-blocking compositional condition, fence consistency, which lies between known conditions for TSO, and aims to capture the intention of a programmer-specified fence.
Brijesh Dongol, John Derrick, Lindsay Groves, Graeme Smith 0001
ECOOP3
2015 Designing a verifying compiler: Lessons learned from developing Whiley
David J. Pearce 0001, Lindsay Groves
Sci. Comput. Program.2
2013 True small-step reduction for imperative object oriented languages
abstract
Traditionally, formal semantic models of Java-like languages use an explicit model of the store which mimics pointers and ram. These low level models hamper understanding of the semantics, and development of proofs about ownerships and other encapsulation properties, since the real (graph) structure of the data is obscured by the encoding. Such models are also inadequate for didactic purposes since they rely on run-time structures that do not exist in the source program --- in order to understand the meaning of an expression in the middle of the execution one is required to visualize the memory structure which is hard to relate to the abstract program state.
Marco Servetto, Lindsay Groves
FTfJP@ECOOP2
2013 Whiley: A Platform for Research in Software Verification
David J. Pearce 0001, Lindsay Groves
SLE2
2013 Towards formally specifying and verifying transactional memory
abstract
Abstract Over the last decade, great progress has been made in developing practical transactional memory (TM) implementations, but relatively little attention has been paid to precisely specifying what it means for them to be correct, or formally proving that they are. In this paper, we present TMS1 (Transactional Memory Specification 1), a precise specification of correct behaviour of a TM runtime library. TMS1 targets TM runtimes used to implement transactional features in an unmanaged programming language such as C or C++. In such contexts, even transactions that ultimately abort must observe consistent states of memory; otherwise, unrecoverable errors such as divide-by-zero may occur before a transaction aborts, even in a correct program in which the error would not be possible if transactions were executed atomically. We specify TMS1 precisely using an I/O automaton (IOA). This approach enables us to also model TM implementations using IOAs and to construct fully formal and machine-checked correctness proofs for them using well established proof techniques and tools. We outline key requirements for a TM system. To avoid precluding any implementation that satisfies these requirements, we specify TMS1 to be as general as we can, consistent with these requirements. The cost of such generality is that the condition does not map closely to intuition about common TM implementation techniques, and thus it is difficult to prove that such implementations satisfy the condition. To address this concern, we present TMS2, a more restrictive condition that more closely reflects intuition about common TM implementation techniques. We present a simulation proof that TMS2 implements TMS1, thus showing that to prove that an implementation satisfies TMS1, it suffices to prove that it satisfies TMS2. We have formalised and verified this proof using the PVS specification and verification system.
Simon Doherty, Lindsay Groves, Victor Luchangco, Mark Moir
Formal Aspects Comput.2
2012 Encoding Featherweight Java with assignment and immutability using the Coq proof assistant
abstract
We develop a mechanized proof of Featherweight Java with Assignment and Immutability in the Coq proof assistant. This is a step towards more machine-checked proofs of a non-trivial type system. We used object immutability close to that of IGJ [9]. We describe the challenges of the mechanisation and the encoding we used inside of Coq.
Julian Mackay, Hannes Mehnert, Alex Potanin, Lindsay Groves, Nicholas Cameron 0001
FTfJP@ECOOP4
2011 A Dual Clustering Approach to the Extract Class Refactoring
Keith Cassell, Peter Andreae, Lindsay Groves
SEKE3
2010 Theorem prover approach to semistructured data design
Scott Uk-Jin Lee, Gillian Dobbie, Jing Sun 0002, Lindsay Groves
Formal Methods Syst. Des.4
2009 Towards Automating Class-Splitting Using Betweenness Clustering
abstract
Large, unwieldy classes are a significant maintenance problem. Programmers dislike them because the fundamental logic is often obscured, making them hard to understand and modify. This paper proposes a solution - a semi-automatic technique for splitting large classes into smaller, more cohesive ones. The core of the technique is the use of betweenness clustering to identify the best way of partitioning a class. This turned a tedious manual process into a quick and simple semi-automated one in roughly one third of the cases we examined.
Keith Cassell, Peter Andreae, Lindsay Groves, James Noble 0001
ASE3
2009 Trace-based derivation of a scalable lock-free stack algorithm
abstract
Abstract We show how a sophisticated, lock-free concurrent stack implementation can be derived from an abstract specification in a series of verifiable steps. The algorithm is based on the scalable stack algorithm of Hendler et al. (Proceedings of the sixteenth annual ACM symposium on parallel algorithms, 27–30 June 2004, Barcelona, Spain, pp 206–215), which allows push and pop operations to be paired off and eliminated without affecting the central stack, thus reducing contention on the stack, and allowing multiple pairs of push and pop operations to be performed in parallel. Our algorithm uses a simpler data structure than Hendler, Shavit and Yerushalmi’s, and avoids an ABA problem. We first derive a simple lock-free stack algorithm using a linked-list implementation, and discuss issues related to memory management and the ABA problem. We then add an abstract model of the elimination process, from which we derive our elimination algorithm. This allows the basic algorithmic ideas to be separated from implementation details, and provides a basis for explaining and comparing different variants of the algorithm. We show that the elimination stack algorithm is linearisable by showing that any execution of the implementation can be transformed into an equivalent execution of an abstract model of a linearisable stack. Each step in the derivation is either a data refinement which preserves the level of atomicity, an operational refinement which may alter the level of atomicity, or a refactoring step which alters the structure of the system resulting from the preceding derivation. We verify our refinements using an extension of Lipton’s reduction method, allowing concurrent and non-concurrent aspects to be considered separately.
Lindsay Groves, Robert Colvin
Formal Aspects Comput.1
2008 Verifying Semistructured Data Normalization Using PVS
abstract
The dramatic expansion of semistructured data has led to the development of database systems for manipulating the data. Despite its huge potential, there is still a lack of formality and verification support in the design of good semistructured databases. Like traditional database systems, developed semistructured database systems should contain minimal redundancies and update anomalies, in order to store and manage the data effectively. Several normalization algorithms have been proposed to satisfy these needs, by transforming the schema of the semistructured data into a better form. It is essential to ensure that the normalized schema remains semantically equivalent to its original form. In this paper, we present tool support for reasoning about the correctness of semistructured data normalization. The proposed approach uses the ORA-SS data modeling notation and defines its correctness criteria and rules in the PVS formal language. It further utilizes the PVS theorem prover to perform automated checking on the normalized schema, checking that functional dependencies are preserved, no data is lost and no spurious data is created. In summary, our approach not only investigates the characteristics of semistructured data normalization, but also provides a scalable and automated first step towards reasoning about the correctness of normalization algorithms on semistructured data.
Scott Uk-Jin Lee, Jing Sun 0002, Gillian Dobbie, Lindsay Groves
ICECCS4
2007 Reasoning about Nonblocking Concurrency using Reduction
abstract
Reduction methods developed by Lipton, Lamport, Cohen, and others, allow one to reason about concurrent programs at various levels of atomicity. An action which is considered to be atomic at one level may be implemented by more complex code at the next level. We can show that certain properties of the program are preserved by first showing that the property holds when the expanded code is executed sequentially, and then showing that any execution in which this code is executed concurrently with other processes is equivalent to an execution in which the expanded code is executed without interruption. Existing reduction methods are aimed at traditional approaches to concurrency which prevent interference between concurrent processes using mechanisms such as locks or semaphores. In this paper, we show that these reduction methods can be adapted to reason about nonblocking algorithms, which are designed to operate correctly in the presence of interference, rather than to avoid interference. These algorithms typically use strong synchronisation primitives, such as Load Linked/Store Conditional or Compare and Swap, to detect that interference has occurred and in that case retry their operations. We show that reduction can be used with such algorithms, and illustrate this approach with examples based on shared counters and stacks.
Lindsay Groves
ICECCS1
2007 A Scalable Lock-Free Stack Algorithm and its Verification
abstract
The design of efficient software supporting concurrent access to shared data is a challenging task. Often such programs will have at their core algorithms which utilise conceptual locks to restrict access to the data, and which are significantly more complex than their sequential (non-concurrent) counterparts. Lock-free algorithms, which have been developed to avoid problems such as priority inversion and deadlock, are more complex still due to the larger scope for interference between processes. These algorithms become even more complex when further mechanisms are added to achieve good performance under a wide range of workloads. In this paper we present a lock-free algorithm that efficiently manages interference on a shared stack, by allowing complementary stack operations to be eliminated without altering the stack. The algorithm we present is based on a published algorithm due to Hendler, Shavit and Yerushalmi (2004), and incorporates simplifications and improvements that we discovered while attempting to verify the original algorithm. We present a high-level view of the formal verification of our algorithm, which was machine-checked using the PVS theorem prover.
Robert Colvin, Lindsay Groves
SEFM2
2006 Formal Verification of a Lazy Concurrent List-Based Set Algorithm
Robert Colvin, Lindsay Groves, Victor Luchangco, Mark Moir
CAV2
2006 A PVS Approach to Verifying ORA-SS Data Models
Scott Uk-Jin Lee, Gillian Dobbie, Jing Sun 0002, Lindsay Groves
SEKE4
2005 Formal Verification of an Array-Based Nonblocking Queue
abstract
We describe an array-based nonblocking implementation of a concurrent bounded queue, due to Shann, Huang and Chen (2000), and explain how we detected errors in the algorithm while attempting a formal verification. We explain how we first corrected the errors, and then modified the algorithm to obtain nonblocking behaviour in the boundary cases. Both the corrected and modified versions of the algorithm were verified using the PVS theorem proven. We describe the verification of the modified algorithm, which subsumes the proof of the corrected version.
Robert Colvin, Lindsay Groves
ICECCS2
2004 Formal Verification of a Practical Lock-Free Queue Algorithm
Simon Doherty, Lindsay Groves, Victor Luchangco, Mark Moir
FORTE2
2004 DCAS is not a silver bullet for nonblocking algorithm design
abstract
Despite years of research, the design of efficient nonblocking algorithms remains difficult. A key reason is that current shared-memory multiprocessor architectures support only single-location synchronisation primitives such as compare-and-swap (CAS) and load-linked/store-conditional (LL/SC). Recently researchers have investigated the utility of double-compare-and-swap (DCAS)--a generalisation of CAS that supports atomic access to two memory locations -- in overcoming these problems. We summarise recent research in this direction and present a detailed case study concerning a previously published nonblocking DCAS-based double-ended queue implementation. Our summary and case study clearly show that DCAS does not provide a silver bullet for nonblocking synchronisation. That is, it does not make the design and verification of even mundane nonblocking data structures with desirable properties easy. Therefore, our position is that while slightly more powerful synchronisation primitives can ave a profound effect on ease of algorithm design and verification, DCAS does not provide sufficient additional power over CAS to justify supporting it in hardware.
Simon Doherty, David Detlefs, Lindsay Groves, Christine H. Flood, Victor Luchangco, Paul Alan Martin, Mark Moir, Nir Shavit, Guy L. Steele Jr.
SPAA3
2000 A formal approach to program modification
abstract
This paper presents a systematic approach to implementing certain kinds of program modifications, in which (conceptually at least) the modification is implemented as a separate program and then integrated with the original program using semantically based transformations. This approach allows us to ensure that the required modification is implemented correctly and also allows us to explore different ways of implementing a given modification. The approach is illustrated informally using an example where the modification can be implemented in two distinct ways, and then formalised within the refinement calculus by defining a program conjunction operator whose properties justify the transformations required in the example.
Lindsay Groves
APSEC1
1995 Deriving Programs by Combining and Adapting Refinement Scripts
abstract
Although program refinement is usually presented as a top-down process, real programs are usually constructed by extending, adapting and combining existing programs. We show how this kind of program development can be performed within the refinement calculus using editable refinement scripts, which can be extended, adapted and combined in this way. Our approach is illustrated by a sequence of examples, beginning with a list insertion algorithm and culminating in a stable sorting algorithm.
Lindsay Groves
APSEC1
1994 Viewpoint specification and Z
Mike Ainsworth, A. H. Cruickshank, Peter J. L. Wallis, Lindsay Groves
Inf. Softw. Technol.4
1988 Sets and Uncertainty in Relational Databases
Zbigniew Michalewicz, Lindsay Groves
IPMU2