David Pym (1W2.35) 1. A Graphical Tool for Proof-nets. Natural deduction proofs are an appealing way to represent formal logical reasoning. The work well, however, only for logics which follow the intuitionistic pattern: consequences are single-conclusioned and negation is not dualizing (i.e., not(not p) is not logically equivalent to p). Proof-nets have been introduced as a natural, and very efficient, representation of proofs in classical logic. In contrast to natural deductions, the drawing, on the page, of proof-nets is a complex activity. This project is to provide a graphical tool for constructing proof-nets for a given logical theorem. The project will develop knowledge and skills mathematical logic, language implementation, and system and interface design. Some starting knowledge of logic/formal proof is necessary. Look at `Logic for Computer Science', by Reeves and Clarke, published by Addison Wesley, for background in Natural Deduction. Look at `Proofs and Types', by Girard, Lafont and Taylor, published by Cambridge University Press, for an introduction to proof-nets. 2. A Graphical Tool for Turing Machines. Suitable for any M.Sc. student with some mathematical background, skills in programming, and an interest in interfaces. Turing machines are a basic model of computation which we teach to all undergraduates. However, because they perform computations in very primitive steps, very difficult to design and execute. A possible M.Sc. project is to implement a graphical tool for designing and executing Turing machines represented as flow-graphs. Advanced extensions of the project would include a tool for checking the correctness of a machine with respect to partial recursive functions. The project would start with primitive recursive functions. 3. A Graphical Tool for Abacus Machines. Suitable for any M.Sc. student with some mathematical background, skills in programming, and an interest in interfaces. Abacus machines are a basic model of computation based on the idea of assignment, increment and decrement for registers. A possible M.Sc. project is to implement a graphical tool for designing and executing abacus machines represented as flow-graphs. The project would include a tool for checking the correctness of a machine with respect to partial recursive number-theoretic functions. The project would start with primitive recursive functions. 4. Resource Semantics for Program Logics. Suitable for a student with strong mathematical skills. Starting from a mathematical model of resources (examples of resources include, time, space, such as computer memory, and money), it is possible to give a mathematical semantics to imperative programs. This project would investigate some possible models of languages with parallel composition and resource-access constructs. This is foundational, mathematical project which could form the basis of a PhD project here at Bath. 5. A range of possible projects in theorem proving and logic programming. All require a mix of mathematical and programming skills. The theory of resource-distribution provides several possible projects. The basic idea is this: in order to prove that P is a logical consequence of assumptions P1, ... , Pn it may be necessary to split up the list P1 , ... , P_n into many parts and work on the parts separately. However, at any give point in our calculation, we may not know how to do the splitting. The solution is to delay the splitting by maintaining constraints which are resolved when enough information becomes available. The result is an elegant and (relatively) efficient algorithm. For example: (a) Implement a constraint-based resource distribution algorithm for linear logic; (b) Implement a constraint-based resource distribution algorithm for bunched logic. (c) Develop the theory of resource-distribution algorithms to account for different proof-search strategies.