Difference between revisions of "Extending the Proof Manager"

From Event-B
Jump to navigationJump to search
imported>Son
imported>Son
Line 23: Line 23:
  
 
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.
 
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'''
 +
 +
* Automatic inference
 +
 +
* Manual rewrite
 +
 +
* Manual inference
 +
 +
* General purpose: Ones that do not fall into the four previous categories.
 +
 +
=== Automatic Rewrite Reasoners ===
 +
 +
=== Automatic Inference Reasoners ===
 +
 +
=== Manual Rewrite Reasoners ===
 +
 +
=== Manual Inference Reasoners ===
 +
 +
=== General Purpose Reasoners ===
 +
 +
  
 
== Adding a New Tactic ==
 
== Adding a New Tactic ==

Revision as of 13:39, 11 September 2008

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:

  1. adding a new reasoner.
  1. 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 are 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
  • Automatic inference
  • Manual rewrite
  • Manual inference
  • General purpose: Ones that do not fall into the four previous categories.

Automatic Rewrite Reasoners

Automatic Inference Reasoners

Manual Rewrite Reasoners

Manual Inference Reasoners

General Purpose Reasoners

Adding a New Tactic