D32 Provers
Overview
Concerning Rodin's provers the following contributions have been made:
- Jann Röder (ETH Zurich) developed a relevance filter plug-in. The plug-in provides a proof tactic that first removes hypotheses from a given sequent according to several heuristics. The tactic then inputs the reduced sequent to one or several of Rodin's external provers (PP, newPP, ML). Jann Röder carried out experiments using Event-B models from different domains and observed that his tactic significantly increases the number of proof obligations proved automatically.
- Matthias Schmalz (ETH Zurich) worked out the theoretical foundations of Event-B's logic. "Event-B's logic" stands for the formalism in which, e.g., guards, invariants, axioms, and theorems are expressed, and proof obligations are expressed and proved. He provides a comprehensive specification of syntax, semantics, proofs, theories, and mathematical extensions in one document. The document encompasses a small theory "Core" and shows how to define the remaining operators, types, and binders available in Rodin using mathematical extensions. The document thus provides a proof calculus for Event-B that is sound by construction, and a methodology for reasoning about the soundness of Event-B proof rules within Event-B. The document also allows users to look-up definitions of predefined operators and binders, answering questions like "what is the meaning of if or is negative". For developers, it sheds some light on intricate questions concerning partial functions, e.g., why is it sound to rewrite to but unsound (in general) to rewrite to .
Motivations
Relevance Filtering
Rodin's external provers (PP, newPP, ML) tend to timeout if the given sequent contains many irrelevant hypotheses. For PP and newPP the user can still manually select the hypotheses he considers relevant, but that is a tedious and error-prone process, in particular for large models. Several heuristics for selecting relevant hypotheses have been proposed in the literatur. The relevance filter plug-in implements these heuristics and provides a default configuration that has been shown to be almost optimal on a given collection of models from different domains. The relevance filter plug-in has also significantly increased the number of automatically proved proof obligations on models of industrial partners, which have not been used for fine tuning the heuristics.
Foundations of Event-B's Logic
Rodin is used to develop systems whose correctness has been formally proved. Correctness proves become meaningless if Rodin's prover itself is inconsistent. Rodin's theorem prover has been observed to be inconsistent - at lest until version 2.0.
Choices / Decisions
This paragraph shall summarize the decisions (eg. design decisions) and justify them. Thus, it may present the studied solutions, through their main advantages and inconvenients, to legitimate the final choices.
Available Documentation
This paragraph shall give pointers to the available wiki pages or related publications. This documentation may contain:
- Requirements.
- Pre-studies (states of the art, proposals, discussions).
- Technical details (specifications).
- Teaching materials (tutorials).
- User's guides.
A distinction shall be made on the one hand between these different categories, and on the other hand between documentation written for developers and documentation written for end-users.
Planning
This paragraph shall give a timeline and current status (as of 28 Jan 2011).