Extending the Proof Manager: Difference between revisions
imported>Son |
imported>Ladenberger No edit summary |
||
(5 intermediate revisions by 3 users not shown) | |||
Line 4: | Line 4: | ||
There are two ways for extending the Proof Manager: | There are two ways for extending the Proof Manager: | ||
# adding a new [ | # adding a new [http://handbook.cobra.cs.uni-duesseldorf.de/current/html/reasoners.html reasoner]. | ||
# adding a new [ | # adding a new [http://handbook.cobra.cs.uni-duesseldorf.de/current/html/proof_tactics.html tactic]. | ||
== Adding a New Reasoner == | == Adding a New Reasoner == | ||
Line 35: | Line 35: | ||
* [[Adding Manual Inference Reasoners | Manual inference]] Reasoner of this type apply an inference rule manually. | * [[Adding Manual Inference Reasoners | Manual inference]] Reasoner of this type apply an inference rule manually. | ||
* [[ | * [[Adding General Purpose Reasoners |General purpose]] Reasoners that do not fall into the four previous categories. | ||
''Please also have a look at'' [[How_To_Evolve_Reasoners| How To Evolve Reasoners]]. | |||
=== | == Adding a New Tactic == | ||
Adding a reasoner is only a first step in extending the Proof Manager. Reasoners need to be wrapped by Tactics for the Proof Manager to use. Similar to reasoners, there are different types of tactics for implementation purpose. | |||
=== Implementing a Tactic === | |||
* [[Adding Automatic Tactics | Automatic Tactics]]: Tactics that can be run automatically either as POM Tactics or Post Tactics. | |||
* [[Adding Manual Tactics | Manual Tactics ]]: Tactics that need to be invoke manually during interactive proofs. | |||
[[Category:Developer documentation]] | |||
[[Category:Rodin Platform]] | |||
[[Category:Proof]] |
Latest revision as of 10:27, 27 October 2011
The Proof Manager is responsible for constructing proofs and maintaining existing proofs associated with proof obligations.
There are two ways for extending the Proof Manager:
- adding a new reasoner.
- adding a new tactic.
Adding a New Reasoner
A reasoner is added into the Proof Manager using the extension point org.eventb.core.seqprover.reasoners. Below is an example of how to contribute to the extension point.
<extension point="org.eventb.core.seqprover.reasoners"> <reasoner class="org.eventb.contributors.seqprover.reasoners.Hyp" id="hyp" name="%hypName"/> </extension>
where the name attribute is internationalized.
The above declaration defines a reasoner with a specific id (which will be automatically prefixed by the project name, e.g. org.eventb.contributors.seqprover).
The class attribute must be a valid Java class name which will be used to create an instance of the reasoner. This class must implements org.eventb.core.seqprover.IReasoner interface.
However, most of the time, the developers only need to sub-class one of the abstract implementation, depending on the type of the reasoner. For the implementation purpose, we categorize our reasoners into the following types.
- Automatic rewrite Reasoners of this type apply some rewriting rules automatically to simplify the input sequent.
- Manual rewrite Reasoners of this type apply a rewriting rule for a given formula (or sub-formula) in the goal or in one of the hypotheses.
- Automatic inference Reasoners of this type apply an inference rule automatically.
- Manual inference Reasoner of this type apply an inference rule manually.
- General purpose Reasoners that do not fall into the four previous categories.
Please also have a look at How To Evolve Reasoners.
Adding a New Tactic
Adding a reasoner is only a first step in extending the Proof Manager. Reasoners need to be wrapped by Tactics for the Proof Manager to use. Similar to reasoners, there are different types of tactics for implementation purpose.
Implementing a Tactic
- Automatic Tactics: Tactics that can be run automatically either as POM Tactics or Post Tactics.
- Manual Tactics : Tactics that need to be invoke manually during interactive proofs.