Back to results

University of Cambridge

Furthering Datalog in the pursuit of program analysis

Abstract

dc:description.abstract

This thesis focuses on specifying compiler analyses in a declarative language, namely Datalog. This work contains three contributions: expanding the number of programs Datalog, specifically Soufflé (a superset of Datalog), can support; providing a declarative implementation of a well-known analysis; and introducing a new program analysis. First, a new construct is introduced into Soufflé allowing consistent negation of relations used to infer facts about that same negated relation. This can be seen as a join point in inference when a rule partially pauses inference until the negated relation is in a consistent state, and it is safe to evaluate the negation. Soufflé, with consistent negation, is then used to specify a natural encoding of a depth-first graph exploration using a visited set and the sum of affine multivariable polynomials with partially disjoint variable domains. The technique allows previously difficult-to-implement problems to be implemented with asymptotically better performance, in a more natural and expressive fashion. Second, a declarative implementation of GVN is presented—a common program analysis to find equivalent program variables—called DGVN. This implementation breaks a data dependence throughout the whole GVN algorithm that previously limited its parallelism. The Soufflé implementation also makes use of the previously described new negation-aiding construct to increase performance and to allow a natural expression of the algorithm. DGVN is complete enough to be evaluated on benchmarks from Specint. Third, a definition of pairwise program commutativity is presented, useful to automatic parallelising compilers that transform data dependency graphs. This definition is then lifted into the set domain, allowing for interface-boundary respecting commutativity specifications using semantic program properties, as source-code inline annotations. This system is then used to encode commutative functions from libc and other common data structures and employed to parallelise several benchmark applications.

Degree

thesis:*
Name dc:type.qualificationname
Doctor of Philosophy (PhD)
Level dc:type.qualificationlevel
Doctoral
Grantor dc:publisher.institution
University of Cambridge
Year dc:date.issued
2022

Author and committee

dc:creator, dc:contributor.*
Author dc:creator
  • Isaacs, Joseph
Advisors dc:contributor.advisor
  • Jones, Timothy
  • Mycroft, Alan

Subjects

dc:subject × 1

Rights

dc:rights
Language dc:language
eng

Identifiers

dc:identifier.*
DOI dc:identifier.doi
https://doi.org/10.17863/CAM.100114
OAI identifier oai:identifier
oai:www.repository.cam.ac.uk:1810/354249

Chain of custody

source
Harvested from
Cambridge University
Base URL
api.repository.cam.ac.uk/server/oai/request
Last updated
2026-07-22
Source record
OAI-PMH GetRecord
citation

Isaacs, Joseph. Furthering Datalog in the pursuit of program analysis. Doctoral thesis, University of Cambridge, 2022. https://doi.org/10.17863/CAM.100114