Difference between pages "Rodin Platform 2.8.0 External Plug-ins" and "Rodin Proof Tactics"

From Event-B
(Difference between pages)
Jump to navigationJump to search
imported>Colin
 
imported>Son
m
 
Line 1: Line 1:
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
+
This page contains descriptions of the available proof tactics within the RODIN Platform.
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>IMPORTANT<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- To set your plug-in state to available, please use : <span style="color:green">available</span> -->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>IMPORTANT<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
<!-- >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<-->
 
==== Rodin Update Site ====
 
  
http://rodin-b-sharp.sourceforge.net/updates
+
For each tactic, the descriptions is as follows:
  
['''NOTE''': updates to some plugins marked *** are available from a separate update site : http://users.ecs.soton.ac.uk/cfs/downloads/PluginsReleasesForRodin2_8/ which you will need to add by clicking the 'Add...' button in the Install window]
+
* '''Description''': A high-level description of the tactic. This will be the description appeared in the RODIN Platform preferences.
  
['''NOTE''' : some iUML-B plugins require an extra update site for dependencies: http://download.eclipse.org/modeling/gmp/gmf-tooling/updates/releases/ which you will need to add by clicking the 'Add...' button in the Install window]
+
* '''Additional details''': (Optional) Details explanation of the tactic.
{{SimpleHeader}}
 
|-
 
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info
 
|-
 
| [[Image:IUMLB_big.png|30px]] || [[Event-B_Statemachines|Event-B State-machines]] || 2.0.0.3xx ||  <span style="color:green"> available ***</span> || 2.x.x || 14th April 2014 || [mailto:cfs@ecs.soton.ac.uk email] || State-machines contained in Event-B Machines [Requires adding the following update site for dependencies: http://download.eclipse.org/modeling/gmp/gmf-tooling/updates/releases/]
 
|-
 
| [[Image:IUMLB_big.png|30px]] ||[[Event-B_Statemachines|Event-B State-machine Animation]] || 2.0.0 ||  <span style="color:green"> available</span> ||  2.x.x || 14th April 2014 || [mailto:vs2@ecs.soton.ac.uk email] || Compatible with Event-B statemachines  2.0.x and ProB 2.4.x
 
|-
 
| [[Image:Umlb32.gif|30px]] || [[UML-B|UML-B]] || 2.2.1 ||  <span style="color:green"> available</span> ||  2.x.x  || 9th Feb. 2011 || [mailto:cfs@ecs.soton.ac.uk email] || Original UML-B modelling environment
 
|-
 
| [[Image:Umlb32.gif|30px]] ||[[UML-B_-_Statemachine_Animation|UML-B Statemachine Animation]] || 1.2.0 || <span style="color:green"> available</span> ||  2.x.x  || 15th Feb. 2011 || [mailto:vs2@ecs.soton.ac.uk email] || Compatible with UML-B 2.2.x and ProB 2.4.x
 
|-
 
| ||[[EMF_framework_for_Event-B|Event-B EMF framework]] || 4.0.0 ||  <span style="color:green"> available</span> ||  2.x.x  || 14th April 2014 || [mailto:cfs@ecs.soton.ac.uk email] || Provided for plug-in developers. End users should not need to install this framework. It will be installed automatically by other plug-ins as required.
 
|-
 
| ||[[Generic_Event-B_EMF_extensions|Event-B EMF support for extensions]] || 3.0.0 ||  <span style="color:green"> available</span> ||  2.x.x  || 14th April 2014 || [mailto:cfs@ecs.soton.ac.uk email] || Provided for plug-in developers.  End users should not need to install this framework. It will be installed automatically by other plug-ins as required.
 
|-
 
| ||[[Generic_Event-B_EMF_extensions|Event-B EMF support for diagrams]] || 4.0.0.3xx ||  <span style="color:green"> available ***</span> ||  2.x.x  || 14th April 2014 || [mailto:cfs@ecs.soton.ac.uk email] ||  Provided for plug-in developers.  End users should not need to install this framework. It will be installed automatically by other plug-ins as required.
 
|-
 
| || [[Isabelle for Rodin]] || || <span style="color:#8B4513"> not checked</span> || 2.x.x || || ||
 
|-
 
| [[Image:Rose.gif|30px]]||[[Rose_(Structured)_Editor|Rose]] || 1.4.0 ||  <span style="color:green"> available</span> ||  2.x.x  || 14th April 2014 || [mailto:cfs@ecs.soton.ac.uk email] || Mainly useful for Plug-in developers. Tree-structured editor that handles extensions without modification
 
|-
 
| ||[[Records|Records]] ||  1.0.1 ||<span style="color:#8B4513"> not checked</span> || || 16th Oct. 2010 || [mailto:cfs@ecs.soton.ac.uk email] || No longer actively supported - please email if you wish to use this plugin
 
|-
 
| ||[[EMF_Compare_Editor_installation|Teamwork]] || 1.1.0 || <span style="color:#8B4513"> not checked</span> || || 15th Oct. 2010 || [mailto:cfs@ecs.soton.ac.uk email] || No longer actively supported - please email if you wish to use this plugin
 
|-
 
| ||[[Parallel_Composition_using_Event-B | Shared Event Composition]] || 1.6.1 || <span style="color:green"> available</span>|| || 04th July 2013 || [mailto:asf08rr@ecs.soton.ac.uk email] || Compatible with Rodin 2.8.
 
|-
 
| ||[[Refactoring Framework | Refactory ]]|| 1.2.2 || <span style="color:green"> available</span>|| || 16th August 2012 || [mailto:asf08r@ecs.soton.ac.uk email] || Version compatible with Rodin 2.8.
 
|-
 
| [[Image:DecompositionPlug-in_logo.png|30px]] || [[Decomposition Plug-in User Guide | Decomposition]] || 1.2.6 || <span style="color:green"> available</span>|| || 11th Dec 2012 || [mailto:asf08r@ecs.soton.ac.uk email] || Compatible with Rodin 2.8.
 
|-
 
| [[Image:Project diagram icon s.png|30px]]||[[Project_Diagram|Project Diagram]]|| 1.0.0 || <span style="color:#8B4513"> not checked</span> || || 15th Nov. 2010 || [mailto:vs2@ecs.soton.ac.uk email] || Machine - Context relationship diagram
 
|-
 
| || Relevance Filter || 1.1.1 || <span style="color:#8B4513"> not checked</span> || 2.x.x || || ||
 
|-
 
| || [[Theory Plug-in| Theory Plug-in]] ||v2.0.0 ||<span style="color:green"> available </span>|| || 30th April 2014|| [mailto:asf08r@ecs.soton.ac.uk email] || Compatible with Rodin 2.8.
 
|-.x
 
| || [[Code Generation Activity | Code Generation]] || 0.2.5 ||<span style="color:green"> available</span>||  || 29th Aug. 2013|| [mailto:ae2@ecs.soton.ac.uk email] || For Java, Ada, and OpenMP C code
 
|-.x
 
|-
 
| || [[SMT_Plug-in | SMT Solvers ]] || 1.1.0 || <span style="color:green"> available</span> || 2.4 || 18th October 2013|| [mailto:laurent.voisin@systerel.fr Laurent Voisin]  ||
 
|-
 
| || [[Event-B Qualitative Probability User Guide | Qualitative Probability]] || 0.2.1 || <span style="color:#8B4513"> not checked</span> || 2.3.x || 23rd November 2011 || [mailto:htson@inf.ethz.ch email] ||
 
|-
 
| || [[Generic Instantiation User Guide | Generic Instantiation]] || 0.2.2 || <span style="color:#8B4513"> not checked</span> || 2.3.x || 11th May 2012 || [mailto:htson@inf.ethz.ch email] ||
 
|-
 
| || [[B2Latex | B2Latex export]] || 0.5.3 || <span style="color:#8B4513"> not checked</span> || 2.5.x || 16th April 2012 || [mailto:thomas.muller@systerel.fr email] ||
 
|-
 
| || [[Generic Instantiation Plug-in User Guide | Generic Instantiation (Soton)]] || 1.0.1 || <span style="color:green"> available</span> || || 05th March 2013 || [mailto:asf08r@ecs.soton.ac.uk email] ||
 
|}
 
  
==== B Method Update Site ====
+
* '''ID''': An unique ID associated with the tactic.
  
http://methode-b.com/update_site/atelierb_provers
+
* '''Auto-tactic''': ''No'': the tactic cannot be added as an auto-tactic. ''Yes'': the tactic can be added as an auto-tactic. ''Default'': the tactic is a default auto-tactic.
  
{{SimpleHeader}}
+
* '''[[The Proving Perspective (Rodin User Manual)#The Automatic Post-tactic|Post-tactic]]''': ''No'': the tactic cannot be added as a post-tactic. ''Yes'': the tactic can be added as a post-tactic. ''Default'': the tactic is a default post-tactic.
|-
 
! scope=col | ||Plug-in name || Version || Status || MCV* || Release Date || Contact || Additional info
 
|-
 
| [[Image:atelierB.png]]||Atelier-B provers || 2.0.1 || <span style="color:green">available</span>|| 2.4.x || 5th Oct. 2011 || [mailto:contact@atelierb.eu email] || Read the instructions concerning 64-bit compatibility : [[Rodin_Platform_2.4_Release_Notes#Requirements_-_Compatibility | here ]]
 
|}
 
  
==== Other Update Sites ====
+
* '''Preference display''': (Optional) If the tactic can be used as an auto-tactic or a post-tactic, information on how the tactic is displayed in the auto-tactic preference or the post-tactic preference.
{{SimpleHeader}}
 
|-
 
! scope=col | ||Plug-in name || Version || Status || MCV* || Release Date || Contact || Additional info
 
|-
 
| [[Image:AnimB.png|30px]] || [[AnimB]] ||  || <span style="color:#8B4513"> not checked</span>|| || || [mailto:christope.metayer@animb.org Christophe Métayer] || Use the update site <tt>http://www.animb.org/updatesite</tt>
 
|-
 
| ||[[Camille_Editor|Camille]] || 2.1.5 ||<span style="color:#8B4513"> not checked</span>|| 2.5.x || 27th July 2011 || [mailto:michael@jastram.de Michael Jastram] || Use the Camille update site. <tt>http://www.stups.uni-duesseldorf.de/camille_updates</tt><br><span style="color:#8B4513">Make sure to install the Event-B EMF Framework version 3.7.0 or greater.</span>
 
|-
 
| [[Image:Mlogo_big.png|30px]] || [[Modularisation_Plug-in|Modularisation]] ||  || <span style="color:#8B4513"> not checked</span>|| 2.x.x || || [mailto:alexei.iliasov@ncl.ac.uk email] || Use the update site <tt>http://www.iliasov.org/modplugin</tt>
 
|-
 
| ||[[Group_refinement_plugin|Group refinement]] ||  || <span style="color:#8B4513"> not checked</span>|| 2.x.x || || [mailto:alexei.iliasov@ncl.ac.uk email] || Use the update site <tt>http://iliasov.org/refplugin</tt>
 
|-
 
| ||[[Flows|Flows/Use case extension]] ||  || <span style="color:#8B4513"> not checked</span>|| 2.x.x || || [mailto:alexei.iliasov@ncl.ac.uk email] || Use the update site <tt>http://iliasov.org/usecase</tt>
 
|-
 
| [[Image:Prob_eventb_wiki_logo.png|30px]]||[http://www.stups.uni-duesseldorf.de/ProB ProB] || 2.4.1|| <span style="color:green">available</span> || 2.8.x || 21th Jun. 2013 || [mailto:jens@bendisposto.de Jens Bendisposto] || Use the ProB update site.  <tt>http://www.stups.uni-duesseldorf.de/prob_updates</tt><br>The Plug-in includes [http://www.stups.uni-duesseldorf.de/BMotionStudio BMotion Studio]
 
|-
 
| [[Image:ProR_logo.png|32px]] || [http://pror.org ProR] || 0.3.2 ||<span style="color:#8B4513"> not checked</span> || 2.6.x || 08/01/2012  || [mailto:michael@jastram.de Michael Jastram] || Update site: <tt>http://update.formalmind.com/rodin</tt><br>Project web site: <tt>http://eclipse.org/rmf</tt>
 
|-
 
| [[Image:MBT_for_Event-B_Logo_Medium.png]] ||[[MBT_plugin|MBT plugin]] || 2.0 || <span style="color:green">available</span>|| 2.7.x || 5th of March 2012 || [mailto:alin.stefanescu@upit.ro Alin Stefanescu] || Use the update site <tt>http://fmi.upit.ro/mbt_plugin</tt>
 
|-
 
| ||[[Mode/FT Views]]|| 1.0.2 || <span style="color:#8B4513"> not checked</span>|| 2.4.x || 4th July 2011 || [mailto:ilya.lopatkin@ncl.ac.uk Ilya Lopatkin] || Update site: <tt>http://rodinmodeftview.sourceforge.net/</tt>
 
|-
 
| ||[[Transformation patterns]]|| 1.0 || <span style="color:#8B4513"> not checked</span>|| 2.x.x || 4th July 2011 || [mailto:ilya.lopatkin@ncl.ac.uk Ilya Lopatkin] || Update site: <tt>http://rodinmodeftview.sourceforge.net/</tt>
 
|
 
|-
 
| [[Image:EHDL_Ver2.png|center|28px]] ||[[VHDL code generator]]|| 2.0.2 || <span style="color:#8B4513"> not checked</span>|| 2.x.x || 12th March 2012 || [mailto:Sergey.Ostroumov@abo.fi Sergey Ostroumov] || Update site: <tt>http://www.eventb-to-vhdl.tk/</tt>
 
|}
 
<nowiki>*MCV stands for the Rodin's Maximum Compatible Version</nowiki>
 
  
==== Known plug-in incompatibilities ====
+
* '''Interactive''': ''No'': the tactic cannot be invoked interactively from the [[The Proving Perspective (Rodin User Manual)|proving interface]]. ''Global'': The tactic can be invoked interactively from the [[The Proving Perspective (Rodin User Manual)#The Proof Control Window|Proof Control View]]. ''Goal'': The tactic can be invoked from the [[The Proving Perspective (Rodin User Manual)#Goal and Selected Hypotheses|Goal view]]. ''Hypothesis'': The tactic can be invoked from the [[The Proving Perspective (Rodin User Manual)#Goal and Selected Hypotheses| Hypothesis view]].  If the tactic can be invoked interactively (i.e. either ''Global'', ''Goal'' or ''Hypothesis''), more information about how this could be done will be given. Note that since the '''Post-tactics''' can be launched manually, any tactics that can be included in the post-tactic in principle can be invoked interactively via the post-tactic. Here ''No'' only means that there is no separate invocation for this specific tactic.
It unfortunately might exists some incompatibilities between plug-ins. This list might be non exhaustive and is updated accorded to user experiences.
 
If you encounter some conflict while installing or using plug-ins, please send a mail to the [mailto:rodin-b-sharp-user@lists.sourceforge.net Rodin User List] or feel free to complete the following table.
 
{{SimpleHeader}}
 
|-
 
! scope=col |  Plug-in name || Incompatible with
 
|-
 
|}
 
  
[[Category:Rodin Platform Release Notes]]
+
* '''Proving interface display''': Example(s) on how applications of this tactic can be seen from the [[The Proving Perspective (Rodin User Manual)|proving interface]] of the RODIN Platform.
 +
 
 +
== True Goal ==
 +
* '''Description''': Discharges any sequent whose goal is '⊤' (logical true).
 +
 
 +
* '''ID''': org.eventb.core.seqprover.trueGoalTac
 +
 
 +
* '''Auto-tactic''': ''Default''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': True Goal (Discharge)
 +
 
 +
* '''Interactive''': ''No''
 +
 
 +
* '''Proving interface display''': ⊤ goal
 +
 
 +
[[Image:TrueGoalExp1.png]]
 +
 
 +
== False Hypothesis ==
 +
* '''Description''': Discharges any sequent containing a '⊥' hypothesis
 +
 
 +
* '''ID''': org.eventb.core.seqprover.falseHypTac
 +
 
 +
* '''Auto-tactic''': ''Default''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': False Hypothesis (Discharge)
 +
 
 +
* '''Interactive''': ''No''
 +
 
 +
* '''Proving interface display''': ⊥ hyp
 +
 
 +
[[Image: FalseHypExp1.png]]
 +
 
 +
== Goal in Hypotheses ==
 +
* '''Description''': Discharges any sequent whose goal is contained in its hypotheses
 +
 
 +
* '''ID''': org.eventb.core.seqprover.goalInHypTac
 +
 
 +
* '''Auto-tactic''': ''Default''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': Goal in Hypotheses (Discharge)
 +
 
 +
* '''Interactive''': ''No''
 +
 
 +
* '''Proving interface display''': hyp
 +
 
 +
[[Image: GoalInHypExp1.png]]
 +
 
 +
== Goal Disjunct in Hypothesis ==
 +
* '''Description''': Discharges any sequent whose goal is a disjunction and one of whose disjuncts is present in the hypotheses.
 +
 
 +
* '''ID''': org.eventb.core.seqprover.goalDisjInHypTac
 +
 
 +
* '''Auto-tactic''': ''No''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': Goal Disjunct in Hypotheses (Discharge)
 +
 
 +
* '''Interactive''': ''No''
 +
 
 +
* '''Proving interface display''': ∨ goal in hyp
 +
 
 +
[[Image: GoalDisjInHypExp1.png]]
 +
 
 +
== Functional Goal ==
 +
* '''Description''': Tries to discharge a sequent whose goal states that an expression is a function (i.e. f ∈ T1 ⇸ T2, where T1 and T2 are type expressions).
 +
 
 +
* '''Additional details''': The sequent is discharged if there is a hypothesis specifying that f is a function of any kind (i.e. partial function, total function, partial injection, total injection, partial surjection,  total surjection, bijection). More information about type expressions in Event-B is in the [[FAQ#What are type expressions in Event-B?|FAQ]] page.
 +
 
 +
* '''ID''': org.eventb.core.seqprover.funGoalTac
 +
 
 +
* '''Auto-tactic''': ''Default''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': Functional Goal (Discharge)
 +
 
 +
* '''Interactive''': ''No''
 +
 
 +
* '''Proving interface display''': functional goal
 +
 
 +
[[Image:FunctionalGoalExp1.png]]
 +
 
 +
== Simplification Rewriter ==
 +
* '''Description''': Tries to simplify all predicates in a sequent using pre-defined simplification rewriting rules.
 +
 
 +
* '''Additional details''': The list of rewriting rules are in the following page [[All Rewrite Rules | http://wiki.event-b.org/index.php/All_Rewrite_Rules]], which are marked as ''Automatic''.
 +
 
 +
* '''ID''': org.eventb.core.seqprover.autoRewriteTac
 +
 
 +
* '''Auto-tactic''': ''Default''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': Simplification Rewriter (Simplify)
 +
 
 +
* '''Interactive''': ''No''
 +
 
 +
* '''Proving interface display''': simplification rewrites
 +
 
 +
The example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic.  There are 3 rewritings have been done as follows.
 +
 
 +
<math>
 +
\begin{array}{rcl}
 +
a + 0  & \Longrightarrow & a \\
 +
a = a & \Longrightarrow & \btrue \\
 +
c * 1 & \Longrightarrow & c \\
 +
\end{array}
 +
</math>
 +
 
 +
Note that <math>\btrue</math> hypothesis is always ''dropped'' in the RODIN Platform.
 +
 
 +
Before [[Image:SimplifcationRewritesExp1.png]]
 +
 
 +
After [[Image:SimplifcationRewritesExp2.png]]
 +
 
 +
== Type Rewriter ==
 +
* '''Description''': Simplifies predicates containing type expressions such as E ∈ T to ⊤ and T = ∅ to ⊥.
 +
 
 +
* '''Additional details''': More information about type expressions in Event-B is in the [[FAQ#What are type expressions in Event-B?|FAQ]] page.
 +
 
 +
* '''ID''': org.eventb.core.seqprover.typeRewriteTac
 +
 
 +
* '''Auto-tactic''': ''Default''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': Type Rewriter (Simplify)
 +
 
 +
* '''Interactive''': ''No''
 +
 
 +
* '''Proving interface display''': type rewrites
 +
 
 +
The example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic.
 +
 
 +
Before [[Image: TypeRewritesExp1.png]]
 +
 
 +
After [[Image: TypeRewritesExp2.png]]
 +
 
 +
== Implication Goal ==
 +
* '''Description''': Simplifies any sequent with an implicative goal by adding the left hand side of the implication to the hypotheses and making its right hand side the new goal.
 +
 
 +
* '''ID''': org.eventb.core.seqprover.impGoalTac
 +
 
 +
* '''Auto-tactic''': ''No''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': Implicative Goal (Simplify)
 +
 
 +
* '''Interactive''': ''Goal''. The <math>\limp</math> symbol in the implicative goal is <font color=red>''redden''</font>. When the mouse hovers the red symbol, the label of the tactic in the context menu is ''Deduction''.
 +
 
 +
[[Image: ImpGoalInteractive1.png]]
 +
 
 +
* '''Proving interface display''': ⇒ goal
 +
 
 +
The example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic.
 +
 
 +
Before [[Image: ImpGoalExp1.png]]
 +
 
 +
After [[Image: ImpGoalExp2.png]]
 +
 
 +
== For-all Goal ==
 +
* '''Description''': Simplifies any sequent with a universally quantified goal by freeing all its bound variables.
 +
 
 +
* '''Additional details''': The bound variables will be renaming accordingly to avoid name collision.
 +
 
 +
* '''ID''': org.eventb.core.seqprover.forallGoalTac
 +
 
 +
* '''Auto-tactic''': ''No''
 +
 
 +
* '''Post-tactic''': ''Yes''
 +
 
 +
* '''Preference display''': For-all Goal (Simplify)
 +
 
 +
* '''Interactive''': ''Goal''. The  symbol <math>\forall</math> in the universal quantified goal is <font color=red>''redden''</font>. When the mouse hovers the red symbol, the label of the tactic in the context menu is ''Forall instantiation''.
 +
 
 +
[[Image: ForallGoalInteractive1.png]]
 +
 
 +
* '''Proving interface display''': ∀ goal (frees ''list-of-bounded-identifiers'')
 +
 
 +
The first example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic.  There is no renaming of the bound variable.
 +
 
 +
Before [[Image: ForallGoalExp1.png]]
 +
 
 +
After [[Image: ForallGoalExp2.png]]
 +
 
 +
The second example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic. The bound variable <math>x</math> is not renamed, but the bound variable <math>z</math> is renamed to <math>z0</math> to avoid capture of the existing variable <math>z</math>.
 +
 
 +
Before [[Image: ForallGoalExp3.png]]
 +
 
 +
After [[Image: ForallGoalExp4.png]]
 +
 
 +
== Exists Hypothesis ==
 +
* '''Description''': In automatic mode (as an auto-tactic or post-tactic), this tactic simplifies any sequent containing existentially quantified hypotheses by freeing their bound variables. In interactive mode, only the selected hypothesis is simplified by freeing its bound variables.
 +
 
 +
* '''Additional details''': The bound variables will be renaming if necessary to avoid name collision. After freeing their bound variables, if the resulting predicate is a conjunction then it is split into several hypotheses.
 +
 
 +
* '''ID''': org.eventb.core.seqprover.existHypTac
 +
 
 +
* '''Auto-tactic''': ''No''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': Exists Hypotheses (Simplify)
 +
 
 +
* '''Interactive''': ''Hypothesis''. The symbol <math>\exists</math> in the existential quantified hypothesis is redden. When the mouse hovers the red symbol, the label of the tactic in the context menu is ''Free existential variables''.
 +
 
 +
[[Image: ExistsHypInteractive1.png]]
 +
 
 +
* '''Proving interface display''':
 +
 
 +
The first example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic. There is no renaming of the bound variable.
 +
 
 +
Before [[Image: ExistHypExp1.png]]
 +
 
 +
After [[Image: ExistHypExp2.png]]
 +
 
 +
The second example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic. The bound variable x is not renamed, but the bound variable z is renamed to z0 to avoid capture of the existing variable z.
 +
 
 +
Before [[Image: ExistHypExp3.png]]
 +
 
 +
After [[Image: ExistHypExp4.png]]
 +
 
 +
== Find Contradictory Hypothesis ==
 +
* '''Description''': Discharges a sequent by finding contradictory hypotheses, i.e. <math>P</math> and <math>\neg P </math>.
 +
 
 +
* '''Additional details''': This tactic tries to find a contradiction using each selected hypothesis that is a negation.
 +
 
 +
* '''ID''': org.eventb.core.seqprover.findContrHypsTac
 +
 
 +
* '''Auto-tactic''': ''Default''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display''': Find Contradictory Hypotheses (Discharge)
 +
 
 +
* '''Interactive''': ''No''
 +
 
 +
* '''Proving interface display''': ct in hyps (''the negated hypothesis'')
 +
 
 +
[[Image: FindContrHypsExp1.png]]
 +
 
 +
== Use Equality Hypothesis ==
 +
* '''Description''': Simplifies a sequent by rewriting all selected hypotheses and the goal using a (selected) hypothesis that is an equality between a free variable and an expression that does not contain the free variable. The used equality remains in the selected hypotheses to be used again.
 +
 
 +
* '''Additional details''': Each application of the tactic take only one equality hypothesis into account. If there are several equality hypotheses, they require several applications of the tactic. Moreover, in the case where there are several equality hypotheses, the choice of which hypothesis will be chosen is non-deterministic.  This tactic behaves as [[#Use Equality Hypothesis from Left to Right]] or [[#Use Equality Hypothesis from Right to Left]] depending on if the free variable is on the left or on the right of the equality.
 +
 
 +
* '''ID''': org.eventb.core.seqprover.eqHypTac
 +
 
 +
* '''Auto-tactic''': ''Default''
 +
 
 +
* '''Post-tactic''': ''Default''
 +
 
 +
* '''Preference display'': Use Equals Hypotheses (Simplify)
 +
 
 +
* '''Interactive''': ''Hypothesis''. See [[#Use Equality Hypothesis from Left to Right]] and [[#Use Equality Hypothesis from Right to Left]]
 +
 
 +
* '''Proving interface display''': eh (''the equal hypothesis'') in the case where the free variable is on the left-hand side or he (''the equal hypothesis'') in the case where the free variable is on the right-hand side.
 +
 
 +
The  example below shows the screen-shots of the step before the application of the tactic, the step after the first application of the tactic with hypothesis <math>x = y + 1</math> and the step just after the second application of the tactic with hypothesis <math>1 = y</math>.
 +
 
 +
Before [[Image:UseEqualityHypExp1.png]]
 +
 
 +
After the first application [[Image:UseEqualityHypExp2.png]]
 +
 
 +
After the second application [[Image:UseEqualityHypExp3.png]]
 +
 
 +
== Use Equality Hypothesis from Left to Right ==
 +
 
 +
* '''Description''': Rewriting all selected hypotheses and the goal using a (selected) hypothesis that is an equality between two expressions. The used equality remains in the selected hypotheses to be used again.
 +
 
 +
* '''ID''':
 +
 
 +
* '''Auto-tactic''': See [[#Use Equality Hypothesis]]
 +
 
 +
* '''Post-tactic''': See [[#Use Equality Hypothesis]]
 +
 
 +
* '''Interactive''': ''Hypothesis''
 +
 
 +
* '''Proving interface display''':
 +
 
 +
== Shrink Implicative Hypothesis ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Shrink Enumerated Set ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Implicative Hypothesis with Conjunctive RHS ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Implicative Hypothesis with Disjunctive LHS ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Conjunctive Goal ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Clarify Goal ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Functional Overriding in Goal ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Functional Overriding in Hypothesis ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Partition Rewriter ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== One-Point Rule in Goal ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== One-Point Rule in Hypothesis ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Bounded Goal with Finite Hypothesis ==
 +
* '''Description''': TODO
 +
 
 +
* '''ID''': TODO
 +
 
 +
* '''Display''': TODO
 +
 
 +
* '''Auto-tactic''': TODO
 +
 
 +
* '''Post-tactic''': TODO
 +
 
 +
* '''Interactive''': TODO
 +
 
 +
* '''Example''': TODO
 +
 
 +
== Falsify Goal ==
 +
 
 +
== conjI ==
 +
 
 +
== allI ==
 +
 
 +
== exI ==
 +
 
 +
== Remove Negation ==
 +
 
 +
== Review ==
 +
 
 +
== Proof by cases ==
 +
 
 +
== Add Hypothesis ==
 +
 
 +
== Abstract Expression ==
 +
 
 +
== Automatic Prover ==
 +
 
 +
== Post tactic ==
 +
 
 +
== Lasoo ==
 +
 
 +
== Back Tracking ==
 +
 
 +
== Prune ==
 +
 
 +
== Search Hypothesis ==
 +
 
 +
== Cache Hypothesis ==
 +
 
 +
== Previous ==
 +
 
 +
== Next ==
 +
 
 +
== Information ==
 +
 
 +
== Falsify Hypothesis ==
 +
 
 +
== Modus Ponens ==
 +
 
 +
== conjE ==
 +
 
 +
== disjE ==
 +
 
 +
== allE ==
 +
 
 +
== exE ==
 +
 
 +
 
 +
 
 +
== Double Implication Hypothesis ==
 +
 
 +
== cont Implication Hypothesis ==
 +
 
 +
== Functional Overriding ==
 +
 
 +
 
 +
 
 +
== Modus Tollens ==
 +
 
 +
== Remove Membership ==
 +
 
 +
== Remove Inclusion ==
 +
 
 +
== Remove Strict-Inclusion ==
 +
 
 +
== Inclusion Set Minus Right ==
 +
 
 +
== Remove Inclusion Universal ==
 +
 
 +
== Implication Introduction ==
 +
 
 +
== Disjunction to Implication ==
 +
 
 +
== Forall Modus Ponens ==
 +
 
 +
== Next Pending Sub-goal ==
 +
 
 +
== Next Reviewed Sub-goal ==
 +
 
 +
== impAndHyp ==
 +
 
 +
== impAndGoal ==
 +
 
 +
== impOrHyp ==
 +
 
 +
== impOrGoal ==
 +
 
 +
== relImgUnionRight ==
 +
 
 +
== relImgUnionLeft ==
 +
 
 +
== Set Equality ==
 +
 
 +
== Equivalent ==
 +
 
 +
== Functional Intersection Image ==
 +
 
 +
== Functional Set Minus Image ==
 +
 
 +
== Functional Singleton Image ==
 +
 
 +
== Converse Relation ==
 +
 
 +
== Domain Distribution to the Left ==
 +
 
 +
== Domain Distribution to the Right ==
 +
 
 +
== Range Distribution to the Left ==
 +
 
 +
== Range Distribution to the Right ==
 +
 
 +
== Set Minus ==
 +
 
 +
== Conjunction and Disjunction Distribution ==
 +
 
 +
== Union Conjunction Distribution ==
 +
 
 +
== compUnionDist ==
 +
 
 +
== Domain/Range Union Distribution ==
 +
 
 +
== Relational Overriding ==
 +
 
 +
== Composition Image ==
 +
 
 +
== Domain Composition ==
 +
 
 +
== Range Composition ==
 +
 
 +
== Functional Composition Image ==
 +
 
 +
== Finite Set in Goal ==
 +
 
 +
== Finite Intersection in Goal ==
 +
 
 +
== Finite Set Minus in Goal ==
 +
 
 +
== Finite Relation in Goal ==
 +
 
 +
== Finite Relation Image in Goal ==
 +
 
 +
== Finite Domain in Goal ==
 +
 
 +
== Finite Range in Goal ==
 +
 
 +
== Finite Function in Goal ==
 +
 
 +
== Finite Function Converse in Goal ==
 +
 
 +
== Finite Functional Relational Image in Goal ==
 +
 
 +
== Finite Functional Range in Goal ==
 +
 
 +
== Finite Functional Domain in Goal ==
 +
 
 +
== Finite Minimum in Goal ==
 +
 
 +
== Finite Maximum in Goal ==
 +
 
 +
== Finite Negative in Goal ==
 +
 
 +
== Finite Positive in Goal ==
 +
 
 +
== Cardinality Comparison in Goal ==
 +
 
 +
== Cardinality Up to ==
 +
 
 +
== Partition Rewrite ==
 +
 
 +
== Arithmetic Rewrite ==
 +
 
 +
== Total Domain in Hypothesis / Goal ==

Revision as of 16:10, 10 March 2010

This page contains descriptions of the available proof tactics within the RODIN Platform.

For each tactic, the descriptions is as follows:

  • Description: A high-level description of the tactic. This will be the description appeared in the RODIN Platform preferences.
  • Additional details: (Optional) Details explanation of the tactic.
  • ID: An unique ID associated with the tactic.
  • Auto-tactic: No: the tactic cannot be added as an auto-tactic. Yes: the tactic can be added as an auto-tactic. Default: the tactic is a default auto-tactic.
  • Post-tactic: No: the tactic cannot be added as a post-tactic. Yes: the tactic can be added as a post-tactic. Default: the tactic is a default post-tactic.
  • Preference display: (Optional) If the tactic can be used as an auto-tactic or a post-tactic, information on how the tactic is displayed in the auto-tactic preference or the post-tactic preference.
  • Interactive: No: the tactic cannot be invoked interactively from the proving interface. Global: The tactic can be invoked interactively from the Proof Control View. Goal: The tactic can be invoked from the Goal view. Hypothesis: The tactic can be invoked from the Hypothesis view. If the tactic can be invoked interactively (i.e. either Global, Goal or Hypothesis), more information about how this could be done will be given. Note that since the Post-tactics can be launched manually, any tactics that can be included in the post-tactic in principle can be invoked interactively via the post-tactic. Here No only means that there is no separate invocation for this specific tactic.
  • Proving interface display: Example(s) on how applications of this tactic can be seen from the proving interface of the RODIN Platform.

Contents

True Goal

  • Description: Discharges any sequent whose goal is '⊤' (logical true).
  • ID: org.eventb.core.seqprover.trueGoalTac
  • Auto-tactic: Default
  • Post-tactic: Default
  • Preference display: True Goal (Discharge)
  • Interactive: No
  • Proving interface display: ⊤ goal

TrueGoalExp1.png

False Hypothesis

  • Description: Discharges any sequent containing a '⊥' hypothesis
  • ID: org.eventb.core.seqprover.falseHypTac
  • Auto-tactic: Default
  • Post-tactic: Default
  • Preference display: False Hypothesis (Discharge)
  • Interactive: No
  • Proving interface display: ⊥ hyp

FalseHypExp1.png

Goal in Hypotheses

  • Description: Discharges any sequent whose goal is contained in its hypotheses
  • ID: org.eventb.core.seqprover.goalInHypTac
  • Auto-tactic: Default
  • Post-tactic: Default
  • Preference display: Goal in Hypotheses (Discharge)
  • Interactive: No
  • Proving interface display: hyp

GoalInHypExp1.png

Goal Disjunct in Hypothesis

  • Description: Discharges any sequent whose goal is a disjunction and one of whose disjuncts is present in the hypotheses.
  • ID: org.eventb.core.seqprover.goalDisjInHypTac
  • Auto-tactic: No
  • Post-tactic: Default
  • Preference display: Goal Disjunct in Hypotheses (Discharge)
  • Interactive: No
  • Proving interface display: ∨ goal in hyp

GoalDisjInHypExp1.png

Functional Goal

  • Description: Tries to discharge a sequent whose goal states that an expression is a function (i.e. f ∈ T1 ⇸ T2, where T1 and T2 are type expressions).
  • Additional details: The sequent is discharged if there is a hypothesis specifying that f is a function of any kind (i.e. partial function, total function, partial injection, total injection, partial surjection, total surjection, bijection). More information about type expressions in Event-B is in the FAQ page.
  • ID: org.eventb.core.seqprover.funGoalTac
  • Auto-tactic: Default
  • Post-tactic: Default
  • Preference display: Functional Goal (Discharge)
  • Interactive: No
  • Proving interface display: functional goal

FunctionalGoalExp1.png

Simplification Rewriter

  • Description: Tries to simplify all predicates in a sequent using pre-defined simplification rewriting rules.
  • ID: org.eventb.core.seqprover.autoRewriteTac
  • Auto-tactic: Default
  • Post-tactic: Default
  • Preference display: Simplification Rewriter (Simplify)
  • Interactive: No
  • Proving interface display: simplification rewrites

The example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic. There are 3 rewritings have been done as follows.


\begin{array}{rcl}
 a + 0  & \Longrightarrow & a \\
 a = a & \Longrightarrow & \btrue \\
 c * 1 & \Longrightarrow & c \\
\end{array}

Note that \btrue hypothesis is always dropped in the RODIN Platform.

Before SimplifcationRewritesExp1.png

After SimplifcationRewritesExp2.png

Type Rewriter

  • Description: Simplifies predicates containing type expressions such as E ∈ T to ⊤ and T = ∅ to ⊥.
  • Additional details: More information about type expressions in Event-B is in the FAQ page.
  • ID: org.eventb.core.seqprover.typeRewriteTac
  • Auto-tactic: Default
  • Post-tactic: Default
  • Preference display: Type Rewriter (Simplify)
  • Interactive: No
  • Proving interface display: type rewrites

The example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic.

Before TypeRewritesExp1.png

After TypeRewritesExp2.png

Implication Goal

  • Description: Simplifies any sequent with an implicative goal by adding the left hand side of the implication to the hypotheses and making its right hand side the new goal.
  • ID: org.eventb.core.seqprover.impGoalTac
  • Auto-tactic: No
  • Post-tactic: Default
  • Preference display: Implicative Goal (Simplify)
  • Interactive: Goal. The \limp symbol in the implicative goal is redden. When the mouse hovers the red symbol, the label of the tactic in the context menu is Deduction.

ImpGoalInteractive1.png

  • Proving interface display: ⇒ goal

The example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic.

Before ImpGoalExp1.png

After ImpGoalExp2.png

For-all Goal

  • Description: Simplifies any sequent with a universally quantified goal by freeing all its bound variables.
  • Additional details: The bound variables will be renaming accordingly to avoid name collision.
  • ID: org.eventb.core.seqprover.forallGoalTac
  • Auto-tactic: No
  • Post-tactic: Yes
  • Preference display: For-all Goal (Simplify)
  • Interactive: Goal. The symbol \forall in the universal quantified goal is redden. When the mouse hovers the red symbol, the label of the tactic in the context menu is Forall instantiation.

ForallGoalInteractive1.png

  • Proving interface display: ∀ goal (frees list-of-bounded-identifiers)

The first example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic. There is no renaming of the bound variable.

Before ForallGoalExp1.png

After ForallGoalExp2.png

The second example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic. The bound variable x is not renamed, but the bound variable z is renamed to z0 to avoid capture of the existing variable z.

Before ForallGoalExp3.png

After ForallGoalExp4.png

Exists Hypothesis

  • Description: In automatic mode (as an auto-tactic or post-tactic), this tactic simplifies any sequent containing existentially quantified hypotheses by freeing their bound variables. In interactive mode, only the selected hypothesis is simplified by freeing its bound variables.
  • Additional details: The bound variables will be renaming if necessary to avoid name collision. After freeing their bound variables, if the resulting predicate is a conjunction then it is split into several hypotheses.
  • ID: org.eventb.core.seqprover.existHypTac
  • Auto-tactic: No
  • Post-tactic: Default
  • Preference display: Exists Hypotheses (Simplify)
  • Interactive: Hypothesis. The symbol \exists in the existential quantified hypothesis is redden. When the mouse hovers the red symbol, the label of the tactic in the context menu is Free existential variables.

ExistsHypInteractive1.png

  • Proving interface display:

The first example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic. There is no renaming of the bound variable.

Before ExistHypExp1.png

After ExistHypExp2.png

The second example below shows the screen-shots of the step before the application of the tactic and the step just after the application of the tactic. The bound variable x is not renamed, but the bound variable z is renamed to z0 to avoid capture of the existing variable z.

Before ExistHypExp3.png

After ExistHypExp4.png

Find Contradictory Hypothesis

  • Description: Discharges a sequent by finding contradictory hypotheses, i.e. P and \neg P .
  • Additional details: This tactic tries to find a contradiction using each selected hypothesis that is a negation.
  • ID: org.eventb.core.seqprover.findContrHypsTac
  • Auto-tactic: Default
  • Post-tactic: Default
  • Preference display: Find Contradictory Hypotheses (Discharge)
  • Interactive: No
  • Proving interface display: ct in hyps (the negated hypothesis)

FindContrHypsExp1.png

Use Equality Hypothesis

  • Description: Simplifies a sequent by rewriting all selected hypotheses and the goal using a (selected) hypothesis that is an equality between a free variable and an expression that does not contain the free variable. The used equality remains in the selected hypotheses to be used again.
  • Additional details: Each application of the tactic take only one equality hypothesis into account. If there are several equality hypotheses, they require several applications of the tactic. Moreover, in the case where there are several equality hypotheses, the choice of which hypothesis will be chosen is non-deterministic. This tactic behaves as #Use Equality Hypothesis from Left to Right or #Use Equality Hypothesis from Right to Left depending on if the free variable is on the left or on the right of the equality.
  • ID: org.eventb.core.seqprover.eqHypTac
  • Auto-tactic: Default
  • Post-tactic: Default
  • 'Preference display: Use Equals Hypotheses (Simplify)
  • Proving interface display: eh (the equal hypothesis) in the case where the free variable is on the left-hand side or he (the equal hypothesis) in the case where the free variable is on the right-hand side.

The example below shows the screen-shots of the step before the application of the tactic, the step after the first application of the tactic with hypothesis x = y + 1 and the step just after the second application of the tactic with hypothesis 1 = y.

Before UseEqualityHypExp1.png

After the first application UseEqualityHypExp2.png

After the second application UseEqualityHypExp3.png

Use Equality Hypothesis from Left to Right

  • Description: Rewriting all selected hypotheses and the goal using a (selected) hypothesis that is an equality between two expressions. The used equality remains in the selected hypotheses to be used again.
  • ID:
  • Interactive: Hypothesis
  • Proving interface display:

Shrink Implicative Hypothesis

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Shrink Enumerated Set

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Implicative Hypothesis with Conjunctive RHS

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Implicative Hypothesis with Disjunctive LHS

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Conjunctive Goal

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Clarify Goal

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Functional Overriding in Goal

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Functional Overriding in Hypothesis

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Partition Rewriter

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

One-Point Rule in Goal

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

One-Point Rule in Hypothesis

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Bounded Goal with Finite Hypothesis

  • Description: TODO
  • ID: TODO
  • Display: TODO
  • Auto-tactic: TODO
  • Post-tactic: TODO
  • Interactive: TODO
  • Example: TODO

Falsify Goal

conjI

allI

exI

Remove Negation

Review

Proof by cases

Add Hypothesis

Abstract Expression

Automatic Prover

Post tactic

Lasoo

Back Tracking

Prune

Search Hypothesis

Cache Hypothesis

Previous

Next

Information

Falsify Hypothesis

Modus Ponens

conjE

disjE

allE

exE

Double Implication Hypothesis

cont Implication Hypothesis

Functional Overriding

Modus Tollens

Remove Membership

Remove Inclusion

Remove Strict-Inclusion

Inclusion Set Minus Right

Remove Inclusion Universal

Implication Introduction

Disjunction to Implication

Forall Modus Ponens

Next Pending Sub-goal

Next Reviewed Sub-goal

impAndHyp

impAndGoal

impOrHyp

impOrGoal

relImgUnionRight

relImgUnionLeft

Set Equality

Equivalent

Functional Intersection Image

Functional Set Minus Image

Functional Singleton Image

Converse Relation

Domain Distribution to the Left

Domain Distribution to the Right

Range Distribution to the Left

Range Distribution to the Right

Set Minus

Conjunction and Disjunction Distribution

Union Conjunction Distribution

compUnionDist

Domain/Range Union Distribution

Relational Overriding

Composition Image

Domain Composition

Range Composition

Functional Composition Image

Finite Set in Goal

Finite Intersection in Goal

Finite Set Minus in Goal

Finite Relation in Goal

Finite Relation Image in Goal

Finite Domain in Goal

Finite Range in Goal

Finite Function in Goal

Finite Function Converse in Goal

Finite Functional Relational Image in Goal

Finite Functional Range in Goal

Finite Functional Domain in Goal

Finite Minimum in Goal

Finite Maximum in Goal

Finite Negative in Goal

Finite Positive in Goal

Cardinality Comparison in Goal

Cardinality Up to

Partition Rewrite

Arithmetic Rewrite

Total Domain in Hypothesis / Goal