The PROSPER Toolkit is a suite of custom-designed middleware software, centred around an open proof tool architecture that allows an expert to easily and flexibly assemble customised software components to provide embedded formal reasoning support inside applications. The aim is to make reasoning and proof support invisible to the end-user, encapsulating it within the interaction model and interface they already know.
The purpose of this software is to improve the quality and reliability of the hardware and software design process through the use of formal, mathematical analysis of the system being designed. Formal notations and tools provide specification and analysis at high levels of abstraction, so that designers can express and check a wider range of properties than with conventional approaches (e.g. testing). A developer wishing to incorporate this capability into a CAD or CASE tool, or indeed into any application, faces a difficult choice between creating a verification engine from scratch and adapting parts of existing tools.
Developing a new verification engine is time-consuming and means expensive re-implementation, and existing tools are rarely suitable as components that can be patched into other programs.
The PROSPER Toolkit aims to address this problem. The PROSPER Toolkit allows tool integrators to assemble a custom-built component, called a �proof engine�, that can be operated by another program through an Application Programming Interface (API). A proof engine built with the PROSPER Toolkit has the functionality of a theorem verifier, with added reasoning capability provided by plug-ins formed from off-the-shelf tools such as model checkers or decision procedures. A well-documented (but unsupported) prototype implementation of the PROSPER Toolkit is available for research experiments, technical assessment, and exploitation under agreed license conditions.
The PROSPER Toolkit is a collection of software for integrating existing formal verification tools into end-user applications such as design tools for hardware and software. It includes the PROSPER Integration Interface (PII), a language-independent specification of the data that may be passed between tools (including logical expressions) and the operations for coordinating the exchange of such data. The PII is implemented in C, Java, and Standard ML, allowing tools implemented in these languages to communicate with each other. Systems constructed using the PROSPER Toolkit are usually built around the Hol98 proof assistant, used as a proof engine. The Toolkit also provides support to enable developers of other verification tools to offer them as PROSPER plug-in components.