Research Projects for PhD Students

Detlef Plump
Programming Languages and Systems Group
Department of Computer Science
The University of York

The following PhD projects offer opportunities for research ranging from purely theoretical work to implementation-based work. The projects are examples, I am happy to discuss other ideas for PhD topics.

The Graph Programming Language GP

GP is a rule-based, nondeterministic programming language for solving graph problems at a high level of abstraction, freeing programmers from dealing with low-level data structures. GP's design aims at syntactic and semantic simplicity, to facilitate formal reasoning about programs. The language contains just four control constructs (rule application, sequential composition, branching and looping), has a simple formal semantics, and is computationally complete.

Speeding up GP. This project will attempt to speed up GP's current implementation, which is based on a compiler and the York abstract machine [1,2], to rival with the fastest graph transformation tools currently available [3]. Activities to make GP faster include the introduction of a powerful type system for graphs to support the analysis of graphs at run time, the implementation of dynamic search plans for graph pattern matching, and the use of so-called rooted graph transformation rules which can be matched in constant time.

Static analysis of graph programs. This project will develop an automatic program analysis for detecting confluence and termination in graph programs. A nondeterministic program is confluent (or 'don't care' nondeterministic) if all its executions on a given input will produce the same result. Confluence is essential for run time efficiency because GP's backtracking mechanism [1] can be turned off for confluent subprograms without compromising the semantics. Sufficient conditions for confluence will be developed by generalizing so-called critical pair techniques [4] from sets of graph transformation rules to programs. A simple static analysis of termination will complement the analysis of confluence.

Verification of graph programs. Currently, correctness proofs for GP programs are done ad hoc rather than in a formal calculus [5,6]. This project will develop a Hoare-like calculus in which correctness proofs for GP programs can be carried out rigorously. This requires a sufficiently powerful logic for expressing graph properties, proof rules for GP's control constructs, and a theory showing that these rules are sound with respect to the semantics [7]. A completeness result for the calculus would be desirable, too. To make the calculus practical, it could be implemented in a proof assistant such as Coq or Isabelle.

Safe Pointer Programs

The type systems of current imperative programming languages are too weak to detect non-trivial pointer errors which violate the shapes of linked data structures such as cyclic lists, balanced trees, etc. The goal is to provide powerful 'shape types' by which programmers can specify and manipulate pointer structures, together with a static analysis which guarantees that pointer programs preserve shapes [8,9].

Theory and practice of shape types. The experimental language C-GRS extends C with shape types, it comes with a translation to standard C and an abstraction algorithm that allows shape types to be checked for shape-safety [10,11].This project will extend the scope of the shape checking-algorithm and also implement tools for visualising and testing shape types. More on the theoretical side, the project should attempt to clarify the relationship between the C-GRS approach and logic-based approaches to shape safety.

References

  1. G. Manning and D. Plump: The GP Programming System. In Proc. Graph Transformation and Visual Modelling Techniques (GT-VMT 2008), Electronic Communications of the EASST 10, 2008.
  2. G. Manning and D. Plump: The York Abstract Machine. In Proc. Graph Transformation and Visual Modelling Techniques (GT-VMT 2006), Electronic Notes in Theoretical Computer Science 211, pages 231-240. Elsevier, 2008.
  3. G. Taentzer et al.: Generation of Sierpinski Triangles: A Case Study for Graph Transformation Tools. In Applications of Graph Transformation with Industrial Relevance (AGTIVE 2007), Revised Selected and Invited Papers, Lecture Notes in Computer Science 5088, pages 514-539. © Springer-Verlag, 2008.
  4. D. Plump: Confluence of Graph Transformation Revisited. In Processes, Terms and Cycles: Steps on the Road to Infinity: Essays Dedicated to Jan Willem Klop on the Occasion of His 60th Birthday, Lecture Notes in Computer Science 3838, pages 280-308. Springer-Verlag, 2005.
  5. D. Plump and S. Steinert: Towards Graph Programs for Graph Algorithms. In Proc. International Conference on Graph Transformation (ICGT 2004), Lecture Notes in Computer Science 3256, pages 128-143. Springer-Verlag, 2004.
  6. S. Steinert: The Graph Programming Language GP. PhD thesis, The University of York, 2008.
  7. D. Plump and S. Steinert: Operational and Denotational Semantics of GP. In preparation, 2009.
  8. A. Bakewell, D. Plump and C. Runciman: Specifying Pointer Structures by Graph Reduction. In Applications of Graph Transformations with Industrial Relevance (AGTIVE 2003), Revised Selected and Invited Papers, Lecture Notes in Computer Science 3062, pages 30-44. Springer-Verlag, 2004.
  9. A. Bakewell, D. Plump and C. Runciman: Checking the Shape Safety of Pointer Manipulations. In Relational Methods in Computer Science (RelMiCS 7), Revised Selected Papers, Lecture Notes in Computer Science 3051, pages 48-61. Springer-Verlag, 2004.
  10. M. Dodds and D. Plump: Extending C for Checking Shape Safety. In Proc. Graph Transformation for Verification and Concurrency (GT-VC 2005), Electronic Notes in Theoretical Computer Science 154(2), pages 95-112. Elsevier, 2006.
  11. M. Dodds: Graph Transformation and Pointer Structures. PhD thesis (draft), The University of York, 2008.