# Rodin Proof Tactics

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: Details explanation of the tactic, when it is applicable, give the associated proof rule.
• 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.

## True Goal

• Description: Discharges any sequent whose goal is '⊤' (logical true).
 $\frac{}{\textbf{H} \;\;\vdash \;\; \textbf{\btrue HYP$}}
• ID: org.eventb.core.seqprover.trueGoalTac
• Auto-tactic: Default
• Post-tactic: Default
• Preference display: True Goal (Discharge)
• Interactive: No
• Proving interface display: ⊤ goal
Error creating thumbnail: Unable to save thumbnail to destination

## 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
Error creating thumbnail: Unable to save thumbnail to destination

## 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
Error creating thumbnail: Unable to save thumbnail to destination

## 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
Error creating thumbnail: Unable to save thumbnail to destination

## 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
Error creating thumbnail: Unable to save thumbnail to destination

## 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
Error creating thumbnail: Unable to save thumbnail to destination
After
Error creating thumbnail: Unable to save thumbnail to destination

## Type Rewriter

• Description: Simplifies predicates containing type expressions such as E ∈ T to ⊤ and T = ∅ to ⊥.
• 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
Error creating thumbnail: Unable to save thumbnail to destination
After
Error creating thumbnail: Unable to save thumbnail to destination

## 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.
Error creating thumbnail: Unable to save thumbnail to destination
• 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
Error creating thumbnail: Unable to save thumbnail to destination
After
Error creating thumbnail: Unable to save thumbnail to destination

## 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.
Error creating thumbnail: Unable to save thumbnail to destination
• 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
Error creating thumbnail: Unable to save thumbnail to destination
After
Error creating thumbnail: Unable to save thumbnail to destination

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
Error creating thumbnail: Unable to save thumbnail to destination
After
Error creating thumbnail: Unable to save thumbnail to destination

## 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.
Error creating thumbnail: Unable to save thumbnail to destination
• 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
Error creating thumbnail: Unable to save thumbnail to destination
After
Error creating thumbnail: Unable to save thumbnail to destination

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
Error creating thumbnail: Unable to save thumbnail to destination
After
Error creating thumbnail: Unable to save thumbnail to destination

• 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)
Error creating thumbnail: Unable to save thumbnail to destination

## 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
Error creating thumbnail: Unable to save thumbnail to destination
After the first application
Error creating thumbnail: Unable to save thumbnail to destination
After the second application
Error creating thumbnail: Unable to save thumbnail to destination

## 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