automated strategic reasoning. Formal methods are used to ensure robust correct behaviour in design and implementation of computer systems. Traditional models of computer operation involve a linear sequence of behaviour but today’s systems are complex interactions between many components including the environment of the system and human users. Thus analysis is done via a logical game between components where each is trying to meet its specified requirements regardless of what others do: formalis ....automated strategic reasoning. Formal methods are used to ensure robust correct behaviour in design and implementation of computer systems. Traditional models of computer operation involve a linear sequence of behaviour but today’s systems are complex interactions between many components including the environment of the system and human users. Thus analysis is done via a logical game between components where each is trying to meet its specified requirements regardless of what others do: formalisms include branching time and competing coalitions of agents. This project is to take early advantage of recent breakthroughs in automated logical reasoning with such models by the investigator to deliver general practical techniques of system development and verification.Read moreRead less
Machine-checked Foundations for Verified Vote Counting. The project will deliver a general methodology for developing formal logical specifications of the Acts of Parliament for many common systems for counting votes in preferential elections. The project will deliver corresponding computer programs to count votes according to these systems and will deliver formal independently checkable proofs that the programs meet their specification. Such formally verified computer programs provide a legally ....Machine-checked Foundations for Verified Vote Counting. The project will deliver a general methodology for developing formal logical specifications of the Acts of Parliament for many common systems for counting votes in preferential elections. The project will deliver corresponding computer programs to count votes according to these systems and will deliver formal independently checkable proofs that the programs meet their specification. Such formally verified computer programs provide a legally sound basis for counting votes by computer. The methodology will also allow electoral commissioners to improve the natural language descriptions of the relevant Acts of Parliament which are often woefully out of date with current practice.Read moreRead less
Automation of metric temporal reasoning. A major contemporary engineering concern is to ensure the predictable and robust operation of computer systems involving software, hardware, and human users. The need for systematic and careful construction of such systems requires the development of formal methods based on a dense view of time rather than the traditional step-by-step models.
Analysing Computer Arithmetic to Improve Software Reliability. Most computer programs deal with integers. Automated tools designed to verify the correct behaviour of software usually assume the software deals with idealised mathematical integers, since this simplifies reasoning significantly. In reality, most programs work with integer number representations that approximate the ideal. This compromises the soundness of many verification tools. This project will design sound reasoning tools that ....Analysing Computer Arithmetic to Improve Software Reliability. Most computer programs deal with integers. Automated tools designed to verify the correct behaviour of software usually assume the software deals with idealised mathematical integers, since this simplifies reasoning significantly. In reality, most programs work with integer number representations that approximate the ideal. This compromises the soundness of many verification tools. This project will design sound reasoning tools that are aware of the true nature of computer integer arithmetic.Read moreRead less
Automatic software verification: harnessing constraint technologies. As we come to rely on software to manage more and more aspects of our lives, the importance of software reliability increases; yet as programs become increasingly complex, reliability becomes ever more elusive. This project will develop automated tools and techniques to ensure that programs do what they were intended to do.
Mechanised foundations of proof calculi. Commercial program verification tools based upon special-purpose logic-based proof calculi can now guarantee that large programs are free of specific bugs. But who verifies the proof-calculi? Our research will lead to tools to automatically verify proof-calculi and will eventually help to avoid costly post-construction debugging.
Making software more reliable using a new model for entropies of computers' internal state. A new mathematical analysis of the way computer systems exchange data between their components has led to novel design approaches for the programs implementing those systems. This reduces their cost and increases their reliability, with improvements ranging from small-scale smart devices to widely distributed internet protocols.
An extensible framework for analysis of Java language-based security conformance. Java is a programming language and platform running on 3 billion devices. While Java provides a sandbox-based security architecture within the Java Class Library to protect systems from untrusted code downloaded from Internet, it cannot defend against implementation bugs that occur in the Java Class Library. The goal of this project is to provide a formal model of the Java security architecture, which can be used b ....An extensible framework for analysis of Java language-based security conformance. Java is a programming language and platform running on 3 billion devices. While Java provides a sandbox-based security architecture within the Java Class Library to protect systems from untrusted code downloaded from Internet, it cannot defend against implementation bugs that occur in the Java Class Library. The goal of this project is to provide a formal model of the Java security architecture, which can be used by program analysers to identify faulty or insufficient security checks in the Java Class Library that may lead to the sandbox being bypassed.Read moreRead less
Automatic software verification: harnessing constraint technologies. As we come to rely on software to manage more and more aspects of our lives, the importance of software reliability increases; yet as programs become increasingly complex, reliability becomes ever more elusive. This project will develop automated tools and techniques to ensure that programs do what they were intended to do.
Analysing Computer Arithmetic to Improve Software Reliability. Most computer programs deal with integers. Automated tools designed to verify the correct behaviour of software usually assume the software deals with idealised mathematical integers, since this simplifies reasoning significantly. In reality, most programs work with integer number representations that approximate the ideal. This compromises the soundness of many verification tools. This project will design sound reasoning tools that ....Analysing Computer Arithmetic to Improve Software Reliability. Most computer programs deal with integers. Automated tools designed to verify the correct behaviour of software usually assume the software deals with idealised mathematical integers, since this simplifies reasoning significantly. In reality, most programs work with integer number representations that approximate the ideal. This compromises the soundness of many verification tools. This project will design sound reasoning tools that are aware of the true nature of computer integer arithmetic.Read moreRead less