Philippa Gardner

dblp:g/PhilippaGardner · DBLP profile ↗
← Back
68ranked-venue papers
17as first author
13since 2021 · last 2026
0000-0002-4187-0585ORCID · verified

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

Software engineering, systems software and programming languages · 45 · 4 first-author · 12 since 2021Theory of computation · 31 · 14 first-author · 3 since 2021Artificial intelligence and machine learning · 2 · 1 first-authorDatabases, data management, data science and information retrieval · 1 · 1 first-author
YearPublicationVenuePosition
2026 Gillian Debugging: Swinging Through the (Compositional Symbolic Execution) Trees
Nat Karmios, Sacha-Élie Ayoun, Philippa Gardner
TACAS (2)3
2025 A Hybrid Approach to Semi-automated Rust Verification
abstract
We propose a hybrid approach to end-to-end Rust verification where the proof effort is split into powerful automated verification of safe Rust and targeted semi-automated verification of unsafe Rust. To this end, we present Gillian-Rust, a proof-of-concept semi-automated verification tool built on top of the Gillian platform that can reason about type safety and functional correctness of unsafe code. Gillian-Rust automates a rich separation logic for real-world Rust, embedding the lifetime logic of RustBelt and the parametric prophecies of RustHornBelt, and is able to verify real-world Rust standard library code with only minor annotations and with verification times orders of magnitude faster than those of comparable tools. We link Gillian-Rust with Creusot, a state-of-the-art verifier for safe Rust, by providing a systematic encoding of unsafe code specifications that Creusot can use but cannot verify, demonstrating the feasibility of our hybrid approach.
Sacha-Élie Ayoun, Xavier Denis, Petar Maksimovic 0001, Philippa Gardner
Proc. ACM Program. Lang.4
2025 Compositional Symbolic Execution for the Next 700 Memory Models
abstract
Multiple successful compositional symbolic execution (CSE) tools and platforms exploit separation logic (SL) for compositional verification and/or incorrectness separation logic (ISL) for compositional bug-finding, including VeriFast, Viper, Gillian, CN, and Infer-Pulse. Previous work on the Gillian platform, the only CSE platform that is parametric on the memory model, meaning that it can be instantiated to different memory models, suggests that the ability to use custom memory models allows for more flexibility in supporting analysis of a wide range of programming languages, for implementing custom automation, and for improving performance. However, the literature lacks a satisfactory formal foundation for memory-model-parametric CSE platforms. In this paper, inspired by Gillian, we provide a new formal foundation for memory-model-parametric CSE platforms. Our foundation advances the state of the art in four ways. First, we mechanise our foundation (in the interactive theorem prover Rocq). Second, we validate our foundation by instantiating it to a broad range of memory models, including models for C and CHERI. Third, whereas previous memory-model-parametric work has only covered SL analyses, we cover both SL and ISL analyses. Fourth, our foundation is based on standard definitions of SL and ISL (including definitions of function specification validity, to ensure sound interoperation with other tools and platforms also based on standard definitions).
Andreas Lööw, Seung Hoon Park, Daniele Nantes Sobrinho, Sacha-Élie Ayoun, Opale Sjöstedt, Philippa Gardner
Proc. ACM Program. Lang.6
2025 Progressful Interpreters for Efficient WebAssembly Mechanisation
abstract
Mechanisations of programming language specifications are now increasingly common, providing machine-checked modelling of the specification and verification of desired properties such as type safety. However it is challenging to maintain these mechanisations, particularly in the face of an evolving specification. Existing mechanisations of the W3C WebAssembly (Wasm) standard have so far been able to keep pace as the standard evolves, helped enormously by the W3C Wasm standard’s choice to state the language’s semantics in terms of a fully formal specification. However a substantial incoming extension to Wasm, the 2.0 feature set, motivates the investigation of strategies for more efficient production of the core verification artefacts currently associated with the WasmCert-Coq mechanisation of Wasm. In the classic formalisation of a typed operational semantics as followed by the W3C Wasm standard, both the type system and runtime operational semantics are defined as inductive relations, with associated type soundness properties (progress and preservation) and an independent sound interpreter. We investigate two more efficient strategies for producing these artefacts, which are currently all separately defined by WasmCert-Coq. First, the approach of Kokke, Siek, and Wadler for deriving a sound interpreter from a constructive progress proof — we show that this approach scales to the W3C Wasm 1.0 standard, but results in an inefficient interpreter in our setting. Second, inspired by results from intrinsically-typed languages, we define a progressful interpreter which uses Coq’s dependent types to certify not only its own soundness, but also the progress property. We show that this interpreter can implement several performance optimisations while maintaining these certifications, which are fully erasable when the interpreter is extracted from Coq. Using this approach, we extend the WasmCert-Coq mechanisation to the significantly larger Wasm 2.0 feature set, discovering and correcting several errors in the expanded specification’s type system.
Xiaojia Rao, Stefan Radziuk, Conrad Watt, Philippa Gardner
Proc. ACM Program. Lang.4
2024 Compositional Symbolic Execution for Correctness and Incorrectness Reasoning
Andreas Lööw, Daniele Nantes Sobrinho, Sacha-Élie Ayoun, Caroline Cronjäger, Petar Maksimovic 0001, Philippa Gardner
ECOOP6
2024 Matching Plans for Frame Inference in Compositional Reasoning
Andreas Lööw, Daniele Nantes Sobrinho, Sacha-Élie Ayoun, Petar Maksimovic 0001, Philippa Gardner
ECOOP5
2024 Bringing the WebAssembly Standard up to Speed with SpecTec
abstract
WebAssembly (Wasm) is a portable low-level bytecode language and virtual machine that has seen increasing use in a variety of ecosystems. Its specification is unusually rigorous – including a full formal semantics for the language – and every new feature must be specified in this formal semantics, in prose, and in the official reference interpreter before it can be standardized. With the growing size of the language, this manual process with its redundancies has become laborious and error-prone, and in this work, we offer a solution. We present SpecTec, a domain-specific language (DSL) and toolchain that facilitates both the Wasm specification and the generation of artifacts necessary to standardize new features. SpecTec serves as a single source of truth — from a SpecTec definition of the Wasm semantics, we can generate a typeset specification, including formal definitions and prose pseudocode descriptions, and a meta-level interpreter. Further backends for test generation and interactive theorem proving are planned. We evaluate SpecTec’s ability to represent the latest Wasm 2.0 and show that the generated meta-level interpreter passes 100% of the applicable official test suite. We show that SpecTec is highly effective at discovering and preventing errors by detecting historical errors in the specification that have been corrected and ten errors in five proposals ready for inclusion in the next version of Wasm. Our ultimate aim is that SpecTec should be adopted by the Wasm standards community and used to specify future versions of the standard.
Dongjun Youn, Wonho Shin, Sukyoung Ryu, Joachim Breitner, Philippa Gardner, Sam Lindley, Matija Pretnar, Xiaojia Rao, Conrad Watt, Andreas Rossberg
Proc. ACM Program. Lang.6
2023 Exact Separation Logic: Towards Bridging the Gap Between Verification and Bug-Finding
abstract
Over-approximating (OX) program logics, such as separation logic (SL), are used for verifying properties of heap-manipulating programs: all terminating behaviour is characterised, but established results and errors need not be reachable. OX function specifications are thus incompatible with true bug-finding supported by symbolic execution tools such as Pulse and Pulse-X. In contrast, under-approximating (UX) program logics, such as incorrectness separation logic, are used to find true results and bugs: established results and errors are reachable, but there is no mechanism for understanding if all terminating behaviour has been characterised. We introduce exact separation logic (ESL), which provides fully-verified function specifications compatible with both OX verification and UX true bug-funding: all terminating behaviour is characterised and all established results and errors are reachable. We prove soundness for ESL with mutually recursive functions, demonstrating, for the first time, function compositionality for a UX logic. We show that UX program logics require subtle definitions of internal and external function specifications compared with the familiar definitions of OX logics. We investigate the expressivity of ESL and, for the first time, explore the role of abstraction in UX reasoning by verifying abstract ESL specifications of various data-structure algorithms. In doing so, we highlight the difference between abstraction (hiding information) and over-approximation (losing information). Our findings demonstrate that abstraction cannot be used as freely in UX logics as in OX logics, but also that it should be feasible to use ESL to provide tractable function specifications for self-contained, critical code, which would then be used for both verification and true bug-finding.
Petar Maksimovic 0001, Caroline Cronjäger, Andreas Lööw, Julian Sutherland, Philippa Gardner
ECOOP5
2023 Iris-Wasm: Robust and Modular Verification of WebAssembly Programs
abstract
WebAssembly makes it possible to run C/C++ applications on the web with near-native performance. A WebAssembly program is expressed as a collection of higher-order ML-like modules, which are composed together through a system of explicit imports and exports using a host language, enabling a form of higher- order modular programming. We present Iris-Wasm, a mechanized higher-order separation logic building on a specification of Wasm 1.0 mechanized in Coq and the Iris framework. Using Iris-Wasm, we are able to specify and verify individual modules separately, and then compose them modularly in a simple host language featuring the core operations of the WebAssembly JavaScript Interface. Building on Iris-Wasm, we develop a logical relation that enforces robust safety: unknown, adversarial code can only affect other modules through the functions that they explicitly export. Together, the program logic and the logical relation allow us to formally verify functional correctness of WebAssembly programs, even when they invoke and are invoked by unknown code, thereby demonstrating that WebAssembly enforces strong isolation between modules.
Xiaojia Rao, Aïna Linn Georges, Maxime Legoupil, Conrad Watt, Jean Pichon-Pharabod, Philippa Gardner, Lars Birkedal
Proc. ACM Program. Lang.6
2022 Concurrent Separation Logics: Logical Abstraction, Logical Atomicity and Environment Liveness Conditions (Invited Talk)
Philippa Gardner
CONCUR1
2021 Gillian, Part II: Real-World Verification for JavaScript and C
abstract
Abstract We introduce verification based on separation logic to Gillian, a multi-language platform for the development of symbolic analysis tools which is parametric on the memory model of the target language. Our work develops a methodology for constructing compositional memory models for Gillian, leading to a unified presentation of the JavaScript and C memory models. We verify the JavaScript and C implementations of the AWS Encryption SDK message header deserialisation module, specifically designing common abstractions used for both verification tasks, and find two bugs in the JavaScript and three bugs in the C implementation.
Petar Maksimovic 0001, Sacha-Élie Ayoun, José Fragoso Santos, Philippa Gardner
CAV (2)4
2021 Two Mechanisations of WebAssembly 1.0
Conrad Watt, Xiaojia Rao, Jean Pichon-Pharabod, Martin Bodin, Philippa Gardner
FM5
2021 TaDA Live: Compositional Reasoning for Termination of Fine-grained Concurrent Programs
abstract
We present TaDA Live, a concurrent separation logic for reasoning compositionally about the termination of blocking fine-grained concurrent programs. The crucial challenge is how to deal with abstract atomic blocking : that is, abstract atomic operations that have blocking behaviour arising from busy-waiting patterns as found in, for example, fine-grained spin locks. Our fundamental innovation is with the design of abstract specifications that capture this blocking behaviour as liveness assumptions on the environment. We design a logic that can reason about the termination of clients that use such operations without breaking their abstraction boundaries, and the correctness of the implementations of the operations with respect to their abstract specifications. We introduce a novel semantic model using layered subjective obligations to express liveness invariants and a proof system that is sound with respect to the model. The subtlety of our specifications and reasoning is illustrated using several case studies.
Emanuele D'Osualdo, Julian Sutherland, Azadeh Farzan, Philippa Gardner
ACM Trans. Program. Lang. Syst.4
2020 A Trusted Infrastructure for Symbolic Analysis of Event-Driven Web Applications
abstract
We introduce a trusted infrastructure for the symbolic analysis of modern event-driven Web applications. This infrastructure consists of reference implementations of the DOM Core Level 1, DOM UI Events, JavaScript Promises and the JavaScript async/await APIs, all underpinned by a simple Core Event Semantics which is sufficiently expressive to describe the event models underlying these APIs. Our reference implementations are trustworthy in that three follow the appropriate standards line-by-line and all are thoroughly tested against the official test-suites, passing all the applicable tests. Using the Core Event Semantics and the reference implementations, we develop JaVerT.Click, a symbolic execution tool for JavaScript that, for the first time, supports reasoning about JavaScript programs that use multiple event-related APIs. We demonstrate the viability of JaVerT.Click by proving both the presence and absence of bugs in real-world JavaScript code.
Gabriela Sampaio, José Fragoso Santos, Petar Maksimovic 0001, Philippa Gardner
ECOOP4
2020 Data Consistency in Transactional Storage Systems: A Centralised Semantics
abstract
We introduce an interleaving operational semantics for describing the client-observable behaviour of atomic transactions on distributed key-value stores. Our semantics builds on abstract states comprising centralised, global key-value stores and partial client views. Using our abstract states, we present operational definitions of well-known consistency models in the literature, and prove them to be equivalent to their existing declarative definitions using abstract executions. We explore two applications of our operational framework: 1) verifying that the COPS replicated database and the Clock-SI partitioned database satisfy their consistency models using trace refinement, and 2) proving invariant properties of client programs.
Shale Xiong, Andrea Cerone, Azalea Raad, Philippa Gardner
ECOOP4
2020 Gillian, part i: a multi-language platform for symbolic execution
abstract
We introduce Gillian, a platform for developing symbolic analysis tools for programming languages. Here, we focus on the symbolic execution engine at the heart of Gillian, which is parametric on the memory model of the target language. We give a formal description of the symbolic analysis and a modular implementation that closely follows this description. We prove a parametric soundness result, introducing restriction on abstract states, which generalises path conditions used in classical symbolic execution. We instantiate to obtain trusted symbolic testing tools for JavaScript and C, and use these tools to find bugs in real-world code, thus demonstrating the viability of our parametric approach.
José Fragoso Santos, Petar Maksimovic 0001, Sacha-Élie Ayoun, Philippa Gardner
PLDI4
2019 A Program Logic for First-Order Encapsulated WebAssembly
Conrad Watt, Petar Maksimovic 0001, Neelakantan R. Krishnaswami, Philippa Gardner
ECOOP4
2019 Skeletal semantics and their interpretations
abstract
The development of mechanised language specification based on structured operational semantics, with applications to verified compilers and sound program analysis, requires huge effort. General theory and frameworks have been proposed to help with this effort. However, none of this work provides a systematic way of developing concrete and abstract semantics, connected together by a general consistency result. We introduce a skeletal semantics of a language, where each skeleton describes the complete semantic behaviour of a language construct. We define a general notion of interpretation , which provides a systematic and language-independent way of deriving semantic judgements from the skeletal semantics. We explore four generic interpretations: a simple well-formedness interpretation; a concrete interpretation; an abstract interpretation; and a constraint generator for flow-sensitive analysis. We prove general consistency results between interpretations, depending only on simple language-dependent lemmas. We illustrate our ideas using a simple While language.
Martin Bodin, Philippa Gardner, Thomas P. Jensen, Alan Schmitt
Proc. ACM Program. Lang.2
2019 JaVerT 2.0: compositional symbolic execution for JavaScript
abstract
We propose a novel, unified approach to the development of compositional symbolic execution tools, bridging the gap between classical symbolic execution and compositional program reasoning based on separation logic. Using this approach, we build JaVerT 2.0, a symbolic analysis tool for JavaScript that follows the language semantics without simplifications. JaVerT 2.0 supports whole-program symbolic testing, verification, and, for the first time, automatic compositional testing based on bi-abduction. The meta-theory underpinning JaVerT 2.0 is developed modularly, streamlining the proofs and informing the implementation. Our explicit treatment of symbolic execution errors allows us to give meaningful feedback to the developer during whole-program symbolic testing and guides the inference of resource of the bi-abductive execution. We evaluate the performance of JaVerT 2.0 on a number of JavaScript data-structure libraries, demonstrating: the scalability of our whole-program symbolic testing; an improvement over the state-of-the-art in JavaScript verification; and the feasibility of automatic compositional testing for JavaScript.
José Fragoso Santos, Petar Maksimovic 0001, Gabriela Cunha Sampaio, Philippa Gardner
Proc. ACM Program. Lang.4
2018 A Concurrent Specification of POSIX File Systems
abstract
POSIX is a standard for operating systems, with a substantial part devoted to specifying file-system operations. File-system operations exhibit complex concurrent behaviour, comprising multiple actions affecting different parts of the state: typically, multiple atomic reads followed by an atomic update. However, the standard's description of concurrent behaviour is unsatisfactory: it is fragmented; contains ambiguities; and is generally under-specified. We provide a formal concurrent specification of POSIX file systems and demonstrate scalable reasoning for clients. Our specification is based on a concurrent specification language, which uses a modern concurrent separation logic for reasoning about abstract atomic operations, and an associated refinement calculus. Our reasoning about clients highlights an important difference between reasoning about modules built over a heap, where the interference on the shared state is restricted to the operations of the module, and modules built over a file system, where the interference cannot be restricted as the file system is a public namespace. We introduce specifications conditional on context invariants used to restrict the interference, and apply our reasoning to the example of lock files.
Gian Ntzik, Pedro da Rocha Pinto, Julian Sutherland, Philippa Gardner
ECOOP4
2018 JaVerT: JavaScript Verification and Testing Framework: Invited Talk
abstract
We present a novel, unified approach to the development of compositional symbolic execution tools, which bridges the gap between traditional symbolic execution and compositional program reasoning based on separation logic. We apply our approach to JavaScript, providing support for full verification, whole-program symbolic testing, and automatic compositional testing based on bi-abduction.
Philippa Gardner
PPDP1
2018 Symbolic Execution for JavaScript
abstract
We present a framework for trustworthy symbolic execution of JavaScripts programs, whose aim is to assist developers in the testing of their code: the developer writes symbolic tests for which the framework provides concrete counter-models. We create the framework following a new, general methodology for designing compositional program analyses for dynamic languages. We prove that the underlying symbolic execution is sound and does not generate false positives. We establish additional trust by using the theory to precisely guide the implementation and by thorough testing. We apply our framework to whole-program symbolic testing of real-world JavaScript libraries and compositional debugging of separation logic specifications of JavaScript programs.
José Fragoso Santos, Petar Maksimovic 0001, Théotime Grohens, Julian Dolby, Philippa Gardner
PPDP5
2018 JaVerT: JavaScript verification toolchain
abstract
The dynamic nature of JavaScript and its complex semantics make it a difficult target for logic-based verification. We introduce JaVerT, a semi-automatic JavaScript Verification Toolchain, based on separation logic and aimed at the specialist developer wanting rich, mechanically verified specifications of critical JavaScript code. To specify JavaScript programs, we design abstractions that capture its key heap structures (for example, prototype chains and function closures), allowing the developer to write clear and succinct specifications with minimal knowledge of the JavaScript internals. To verify JavaScript programs, we develop JaVerT, a verification pipeline consisting of: JS-2-JSIL, a well-tested compiler from JavaScript to JSIL, an intermediate goto language capturing the fundamental dynamic features of JavaScript; JSIL Verify, a semi-automatic verification tool based on a sound JSIL separation logic; and verified axiomatic specifications of the JavaScript internal functions. Using JaVerT, we verify functional correctness properties of: data-structure libraries (key-value map, priority queue) written in an object-oriented style; operations on data structures such as binary search trees (BSTs) and lists; examples illustrating function closures; and test cases from the official ECMAScript test suite. The verification times suggest that reasoning about larger, more complex code using JaVerT is feasible.
José Fragoso Santos, Petar Maksimovic 0001, Daiva Naudziuniene, Thomas Wood 0001, Philippa Gardner
Proc. ACM Program. Lang.5
2017 Towards Logic-Based Verification of JavaScript Programs
José Fragoso Santos, Philippa Gardner, Petar Maksimovic 0001, Daiva Naudziuniene
CADE2
2017 Abstract Specifications for Concurrent Maps
Shale Xiong, Pedro da Rocha Pinto, Gian Ntzik, Philippa Gardner
ESOP4
2016 Verifying Concurrent Graph Algorithms
Azalea Raad, Aquinas Hobor, Jules Villard, Philippa Gardner
APLAS4
2016 DOM: Specification and Client Reasoning
Azalea Raad, José Fragoso Santos, Philippa Gardner
APLAS3
2016 Modular Termination Verification for Non-blocking Concurrency
Pedro da Rocha Pinto, Thomas Dinsdale-Young, Philippa Gardner, Julian Sutherland
ESOP3
2015 Fault-Tolerant Resource Reasoning
Gian Ntzik, Pedro da Rocha Pinto, Philippa Gardner
APLAS3
2015 A Trusted Mechanised Specification of JavaScript: One Year On
Philippa Gardner, Gareth Smith, Conrad Watt, Thomas Wood 0001
CAV (1)1
2015 CoLoSL: Concurrent Local Subjective Logic
Azalea Raad, Jules Villard, Philippa Gardner
ESOP3
2015 Reasoning about the POSIX file system: local update and global pathnames
abstract
We introduce a program logic for specifying a core sequential subset of the POSIX file system and for reasoning abstractly about client programs working with the file system. The challenge is to reason about the combination of local directory update and global pathname traversal (including '..' and symbolic links) which may overlap the directories being updated. Existing reasoning techniques are either based on first-order logic and do not scale, or on separation logic and can only handle linear pathnames (no '..' or symbolic links). We introduce fusion logic for reasoning about local update and global pathname traversal, introducing a novel effect frame rule to propagate the effect of a local update on overlapping pathnames. We apply our reasoning to the standard recursive remove utility (rm -r), discovering bugs in well-known implementations.
Gian Ntzik, Philippa Gardner
OOPSLA2
2014 TaDA: A Logic for Time and Data Abstraction
Pedro da Rocha Pinto, Thomas Dinsdale-Young, Philippa Gardner
ECOOP3
2014 Local Reasoning for the POSIX File System
Philippa Gardner, Gian Ntzik, Adam Wright
ESOP1
2014 A trusted mechanised JavaScript specification
abstract
JavaScript is the most widely used web language for client-side applications. Whilst the development of JavaScript was initially just led by implementation, there is now increasing momentum behind the ECMA standardisation process. The time is ripe for a formal, mechanised specification of JavaScript, to clarify ambiguities in the ECMA standards, to serve as a trusted reference for high-level language compilation and JavaScript implementations, and to provide a platform for high-assurance proofs of language properties.
Martin Bodin, Arthur Charguéraud, Daniele Filaretti, Philippa Gardner, Sergio Maffeis, Daiva Naudziuniene, Alan Schmitt, Gareth Smith
POPL4
2013 Views: compositional reasoning for concurrent programs
abstract
Compositional abstractions underly many reasoning principles for concurrent programs: the concurrent environment is abstracted in order to reason about a thread in isolation; and these abstractions are composed to reason about a program consisting of many threads. For instance, separation logic uses formulae that describe part of the state, abstracting the rest; when two threads use disjoint state, their specifications can be composed with the separating conjunction. Type systems abstract the state to the types of variables; threads may be composed when they agree on the types of shared variables.
Thomas Dinsdale-Young, Lars Birkedal, Philippa Gardner, Matthew J. Parkinson, Hongseok Yang
POPL3
2012 Towards a program logic for JavaScript
abstract
JavaScript has become the most widely used language for client-side web programming. The dynamic nature of JavaScript makes understanding its code notoriously difficult, leading to buggy programs and a lack of adequate static-analysis tools. We believe that logical reasoning has much to offer JavaScript: a simple description of program behaviour, a clear understanding of module boundaries, and the ability to verify security contracts. We introduce a program logic for reasoning about a broad subset of JavaScript, including challenging features such as prototype inheritance and "with". We adapt ideas from separation logic to provide tractable reasoning about JavaScript code: reasoning about easy programs is easy; reasoning about hard programs is possible. We prove a strong soundness result. All libraries written in our subset and proved correct with respect to their specifications will be well-behaved, even when called by arbitrary JavaScript code.
Philippa Gardner, Sergio Maffeis, Gareth Smith
POPL1
2012 Processes in space
Luca Cardelli, Philippa Gardner
Theor. Comput. Sci.2
2011 Abstract Local Reasoning for Program Modules
Thomas Dinsdale-Young, Philippa Gardner, Mark J. Wheelhouse
CALCO2
2011 A simple abstraction for complex concurrent indexes
abstract
Indexes are ubiquitous. Examples include associative arrays, dictionaries, maps and hashes used in applications such as databases, file systems and dynamic languages. Abstractly, a sequential index can be viewed as a partial function from keys to values. Values can be queried by their keys, and the index can be mutated by adding or removing mappings. Whilst appealingly simple, this abstract specification is insufficient for reasoning about indexes accessed concurrently. We present an abstract specification for concurrent indexes. We verify several representative concurrent client applications using our specification, demonstrating that clients can reason abstractly without having to consider specific underlying implementations. Our specification would, however, mean nothing if it were not satisfied by standard implementations of concurrent indexes. We verify that our specification is satisfied by algorithms based on linked lists, hash tables and B-Link trees. The complexity of these algorithms, in particular the B-Link tree algorithm, can be completely hidden from the client's view by our abstract specification.
Pedro da Rocha Pinto, Thomas Dinsdale-Young, Mike Dodds, Philippa Gardner, Mark J. Wheelhouse
OOPSLA4
2010 Processes in Space
Luca Cardelli, Philippa Gardner
CiE2
2010 Concurrent Abstract Predicates
Thomas Dinsdale-Young, Mike Dodds, Philippa Gardner, Matthew J. Parkinson, Viktor Vafeiadis
ECOOP3
2010 Adjunct elimination in Context Logic for trees
Cristiano Calcagno, Thomas Dinsdale-Young, Philippa Gardner
Inf. Comput.3
2009 Automatic Parallelization with Separation Logic
Mohammad Raza, Cristiano Calcagno, Philippa Gardner
ESOP3
2009 A process model of Rho GTP-binding proteins
abstract
Rho GTP-binding proteins play a key role as molecular switches in many cellular activities. In response to extracellular stimuli and with the help of regulators (GEF, GAP, Effector, GDI), these proteins serve as switches that interact with their environment in a complex manner. Based on the structure of a published ordinary differential equations (ODE) model, we first present a generic process model for the Rho GTP-binding proteins, and compare it with the ODE model. We then extend the basic model to include the behaviour of the GDI regulators and explore the parameter space for the extended model with respect to biological data from the literature. We discuss the challenges this extension brings and the directions of further research. In particular, we present techniques for modular representation and refinement of process models, where, for example, different Rho proteins with different rates for regulator interactions can be given as instances of the same parametric model.
Luca Cardelli, Emmanuelle Caron, Philippa Gardner, Ozan Kahramanogullari, Andrew Phillips
Theor. Comput. Sci.3
2008 Footprints in Local Reasoning
Mohammad Raza, Philippa Gardner
FoSSaCS2
2008 Local Hoare reasoning about DOM
abstract
The W3C Document Object Model (DOM) specifies an XML update library. DOM is written in English, and is therefore not compositional and not complete. We provide a first step towards a compositional specification of DOM. Unlike DOM, we are able to work with a minimal set of commands and obtain a complete reasoning for straight-line code. Our work transfers O'Hearn, Reynolds and Yang's local Hoare reasoning for analysing heaps to XML, viewing XML as an in-place memory store as does DOM. In particular, we apply recent work by Calcagno, Gardner and Zarfaty on local Hoare reasoning about simple tree update to this real-world DOM application. Our reasoning not only formally specifies a significant subset of DOM Core Level 1, but can also be used to verify, for example, invariant properties of simple Javascript programs.
Philippa Gardner, Gareth Smith, Mark J. Wheelhouse, Uri Zarfaty
PODS1
2007 Adjunct Elimination in Context Logic for Trees
Cristiano Calcagno, Thomas Dinsdale-Young, Philippa Gardner
APLAS3
2007 Context logic as modal logic: completeness and parametric inexpressivity
Cristiano Calcagno, Philippa Gardner, Uri Zarfaty
POPL2
2007 An Introduction to Context Logic
Philippa Gardner, Uri Zarfaty
WoLLIC1
2007 Expressiveness and complexity of graph logic
Anuj Dawar, Philippa Gardner, Giorgio Ghelli
Inf. Comput.2
2007 Linear forwarders
Philippa Gardner, Cosimo Laneve, Lucian Wischik
Inf. Comput.1
2006 Editorial
Philippa Gardner, Nobuko Yoshida
Theor. Comput. Sci.1
2005 From Separation Logic to First-Order Logic
Cristiano Calcagno, Philippa Gardner, Matthew Hague
FoSSaCS2
2005 Context logic and tree update
abstract
Spatial logics have been used to describe properties of tree-like structures (Ambient Logic) and in a Hoare style to reason about dynamic updates of heap-like structures (Separation Logic). We integrat this work by analyzing dynamic updates to tree-like structures with pointers (such as XML with identifiers and idrefs). Naíve adaptations of the Ambient Logic are not expressive enough to capture such local updates. Instead we must explicitly reason about arbitrary tree contexts in order to capture updates throughout the tree. We introduce Context Logic, study its proof theory and models, and show how it generalizes Separation Logic and its general theory BI. We use it to reason locally about a small imperative programming language for updating trees, using a Hoare logic in the style of O'Hearn, Reynolds and Yang, and show that weakest preconditions are derivable. We demonstrate the robustness of our approach by using Context Logic to capture the locality of term rewrite systems.
Cristiano Calcagno, Philippa Gardner, Uri Zarfaty
POPL2
2005 Modelling dynamic web data
Philippa Gardner, Sergio Maffeis
Theor. Comput. Sci.1
2005 Explicit fusions
Lucian Wischik, Philippa Gardner
Theor. Comput. Sci.2
2004 Strong Bisimulation for the Explicit Fusion Calculus
Lucian Wischik, Philippa Gardner
FoSSaCS2
2004 Adjunct Elimination Through Games in Static Ambient Logic
Anuj Dawar, Philippa Gardner, Giorgio Ghelli
FSTTCS2
2003 Linear Forwarders
Philippa Gardner, Cosimo Laneve, Lucian Wischik
CONCUR1
2003 Manipulating Trees with Hidden Labels
Luca Cardelli, Philippa Gardner, Giorgio Ghelli
FoSSaCS2
2002 The Fusion Machine
Philippa Gardner, Cosimo Laneve, Lucian Wischik
CONCUR1
2002 A Spatial Logic for Querying Graphs
Luca Cardelli, Philippa Gardner, Giorgio Ghelli
ICALP2
2000 From Process Calculi to Process Frameworks
Philippa Gardner
CONCUR1
2000 Explicit Fusions
Philippa Gardner, Lucian Wischik
MFCS1
1999 Closed Action Calculi
Philippa Gardner
Theor. Comput. Sci.1
1995 Equivalences between Logics and Their Representing Type Theories
abstract
We propose a new framework for representing logics, called LF+, which is based on the Edinburgh Logical Framework. The new framework allows us to give, apparently for the first time, general definitions that capture how well a logic has been represented. These definitions are possible because we are able to distinguish in a generic way that part of the LF+entailment corresponding to the underlying logic. This distinction does not seem to be possible with other frameworks. Using our definitions, we show that, for example, natural deduction first-order logic can be well-represented in LF+, whereas linear and relevant logics cannot. We also show that our syntactic definitions of representation have a simple formulation as indexed isomorphisms, which both confirms that our approach is a natural one and provides a link between type-theoretic and categorical approaches to frameworks.
Philippa Gardner
Math. Struct. Comput. Sci.1
1993 A New Type Theory for Representing Logics
Philippa Gardner
LPAR1