Accessing Proof Obligations: Difference between revisions

From Event-B
Jump to navigationJump to search
imported>Maria
No edit summary
imported>Maria
No edit summary
Line 2: Line 2:
For each machine and each context there exists one of each of the following roots:
For each machine and each context there exists one of each of the following roots:


*IPSRoot: This root contains the statuses (IPSStatus) of the proof obligations.
*IPSRoot: This root contains the statuses (IPSStatus) of the proof obligations. It is contained in a file with the extension .bps.


*IPORoot: This root contains the sequents (IPOSequent) of the proof obligations.
*IPORoot: This root contains the sequents (IPOSequent) of the proof obligations. It is contained in a file with the extension .bpo.


==The Connection==
==The Connection==

Revision as of 12:59, 28 October 2008

File Types

For each machine and each context there exists one of each of the following roots:

  • IPSRoot: This root contains the statuses (IPSStatus) of the proof obligations. It is contained in a file with the extension .bps.
  • IPORoot: This root contains the sequents (IPOSequent) of the proof obligations. It is contained in a file with the extension .bpo.

The Connection

An IPSRoot, an IPORootand an IMachineRoot or IContextRoot are connected through the name. For example machine m0 has IMachineRoot that is in file m0.bum, IPSRoot in m0.bps and IPORoot in m0.bpo. If one has any of these roots, one get the others though the functions getMachineRoot(), getContextRoot(), getPSRoot() and getPORoot().

Accessing the sequents of an IPORoot

  • All sequents of root: IPOSequent[] sequents = root.getSequents()
  • A specific sequent (e.g. INITIALISATION/inv1/INV) of root: IPOSequent sequent = root.getSequent("INITIALISATION/inv1/INV")

Accessing the statuses of an IPSRoot

  • All statuses of root: IPSStatus[] statuses = root.getStatuses()
  • A specific status (e.g. INITIALISATION/inv1/INV) of root: IPSStatus status = root.getStatus("INITIALISATION/inv1/INV")

Finding the corresponding status to a given sequent

  • 1. Find the IPORoot that contains sequent: IPORoot poRoot = sequent.getParent;
  • 2. Find the matching IPSRoot: IPSRoot psRoot = poRoot.getPSRoot();
  • 3. Find the machting status: IPSStatus status = psRoot.getStatus(sequent.getElementName);

Finding the corresponding sequent to a given status

Use the function getPOSequent() in IPSStatus

Accessing the proof obligations of a given machine or context

The sources of a proof obligations

The sources of a proof obligations describe where that proof obligation comes from (e.g. Invariants, Events). They can be accessed from the IPOSequent: IPOSource[] sources = sequents[i].getSources();

An IPOSource can be an instance of an element like IInvariant, ITheorem etc or it can be an IAction, IWitness or IGuard.

Finding all the proof obligations for a given Invariant

It is not possible to directly find the proof obligations for a given invariant or any other element. Instead check if the sources of the proof obligations contain the invariant.