<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.event-b.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Guillaume</id>
	<title>Event-B - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.event-b.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Guillaume"/>
	<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php/Special:Contributions/Guillaume"/>
	<updated>2026-05-13T01:38:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Generic_Instantiation_Release_History&amp;diff=14592</id>
		<title>Generic Instantiation Release History</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Generic_Instantiation_Release_History&amp;diff=14592"/>
		<updated>2025-02-27T10:49:03Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Release 1.1.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Version 1.1.0 =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;27th February 2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This release fixes compatibility issues with Rodin.&lt;br /&gt;
&lt;br /&gt;
Version compatible with Rodin 3.8 and 3.9.&lt;br /&gt;
&lt;br /&gt;
= Version 1.0.1 =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;05th March 2013&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Version compatible with Rodin 2.7.x and 2.8.x &lt;br /&gt;
&lt;br /&gt;
*Bugs&lt;br /&gt;
** Dependency problem to [http://wiki.event-b.org/index.php/Refactoring_Framework#Version_1.2.2 Refactoring Framework (1.2.2)] (fixed)&lt;br /&gt;
&lt;br /&gt;
= Version 1.0.0 =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;21th January 2013&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Initial prototype release for Rodin 2.7.&lt;br /&gt;
&lt;br /&gt;
[[Category:Generic Instantiation Plug-in]]&lt;br /&gt;
[[Category:User documentation]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Refactoring_Framework&amp;diff=14591</id>
		<title>Refactoring Framework</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Refactoring_Framework&amp;diff=14591"/>
		<updated>2025-02-27T10:47:31Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Release 1.4.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==News ==&lt;br /&gt;
* &#039;&#039;27th February 2025&#039;&#039; : [[#Version_1.4.0|Version 1.4.0]] released. It is based on Rodin 3.8.x.&lt;br /&gt;
* &#039;&#039;6th May 2014&#039;&#039; : [[#Version_1.3.0|Version 1.3.0]] released. It is based on Rodin 3.0.x.&lt;br /&gt;
* &#039;&#039;25th June 2012&#039;&#039; : [[#Version_1.2.2|Version 1.2.2]] released. It is based on Rodin 2.5.x.&lt;br /&gt;
* &#039;&#039;29th June 2011&#039;&#039; : [[#Version_1.2.0|Version 1.2.0]] released. It is based on Rodin 2.2.x.&lt;br /&gt;
* &#039;&#039;8th Nov 2010&#039;&#039; : [[#Version_1.0.0|Version 1.0.0]] released. It is based on Rodin 2.0.x.&lt;br /&gt;
* &#039;&#039;28th May 2010&#039;&#039; : [[#Version_0.0.8|Version 0.0.8]] released. It is based on Rodin 1.3.x.&lt;br /&gt;
* &#039;&#039;30th March 2010&#039;&#039; : [[#Version_0.0.7|Version 0.0.7]] released. It is based on Rodin 1.2.x.&lt;br /&gt;
* &#039;&#039;25th February 2010&#039;&#039;: [[#Version_0.0.6|Version 0.0.6]] released. It is based on Rodin 1.2.x.&lt;br /&gt;
* &#039;&#039;13th January 2010&#039;&#039;: [[#Version_0.0.5|Version 0.0.5]] released. It is based on Rodin 1.1.0.&lt;br /&gt;
* &#039;&#039;5th November 2009&#039;&#039;: [[#Version_0.0.4|Version 0.0.4]] released. It is based on Rodin 1.1.0.&lt;br /&gt;
* &#039;&#039;2nd November 2009&#039;&#039;: [[#Version_0.0.4|Version 0.0.4]] released. It is based on Rodin 1.1.0.&lt;br /&gt;
* &#039;&#039;3rd July 2009&#039;&#039;: [[#Version_0.0.2|Version 0.0.2]] released. It is based on Rodin 1.0.&lt;br /&gt;
* &#039;&#039;1st July 2009&#039;&#039;: [[#Version_0.0.1|Version 0.0.1]] released. It is based on Rodin 1.0.0 RC1.&lt;br /&gt;
&lt;br /&gt;
==The Rename Refactoring Plug-in == &lt;br /&gt;
&lt;br /&gt;
One of the most recurring requirement from users of the Rodin platform is to have simple means for renaming modeling elements.  Users want to have a unique operation that will rename an element both at its declaration and all its occurrences. Moreover, they require that renaming an element doesn&#039;t modify their existing proof state (no loss of proof).&lt;br /&gt;
&lt;br /&gt;
This requirement falls in the more general context of &#039;&#039;refactoring&#039;&#039;. In software engineering, &amp;quot;refactoring&amp;quot; source code means improving it without changing its overall results, and is sometimes informally referred to as &amp;quot;cleaning it up&amp;quot;. In the case of the Rodin platform, the refactoring framework is related to the first option, where refactoring should not change the overall behaviour of the files/elements, nor loosing proofs.&lt;br /&gt;
&lt;br /&gt;
The following diagram shows the architecture of the refactoring framework.&lt;br /&gt;
&lt;br /&gt;
[[Image:Architecture_refactoring_framework.jpg|500x400px]]&lt;br /&gt;
&lt;br /&gt;
==The Rename Refactoring Framework Architecture == &lt;br /&gt;
&lt;br /&gt;
Currently, it is being developed the application of such framework to event-b files (context, machines, proofs obligations, etc) and elements (constants, variables, carrier sets, etc). There are still some tests to be run for the different elements of contexts and machines. The next goal would be to apply and use this framework on Rodin (together with file editors or perspectives).&lt;br /&gt;
&lt;br /&gt;
[[Image:RefTree.jpg|center|450x400px]]&lt;br /&gt;
&lt;br /&gt;
==== Refactoring Trees after processing the extension points ====&lt;br /&gt;
&lt;br /&gt;
Since there are proof obligations associated with Event-B files, while renaming the goal would be to cause the less effort as possible on re-proving and if possible re-using the proofs that are already discharged. The refactoring should not change the semantic of any of the elements/files. Instead, it should just change names or labels, so the proofs should not have to be re-generated (nor re-discharged). That is one of final goals while applying of this framework to Event-B.&lt;br /&gt;
&lt;br /&gt;
==Initial Work ==&lt;br /&gt;
&lt;br /&gt;
Initial work towards implementation of this framework is described in [http://stups.hhu.de/mediawiki/images/9/94/Holl2007_Bachelorarbeit.pdf Sonja Holl&#039;s Bachelor thesis]&lt;br /&gt;
&lt;br /&gt;
==Installing/Updating ==&lt;br /&gt;
&lt;br /&gt;
The installation or update for the renaming/refactoring plug-in is available under the main Rodin Update site (http://rodin-b-sharp.sourceforge.net/updates) and category &#039;Utilities&#039;. Like always, after the installation, restarting the application is recommended.&lt;br /&gt;
&lt;br /&gt;
==Usage ==&lt;br /&gt;
&lt;br /&gt;
The Renaming/Refactory plug-in allows the renaming of:	&lt;br /&gt;
&lt;br /&gt;
* Variables&lt;br /&gt;
* Parameters&lt;br /&gt;
* Carrier Sets&lt;br /&gt;
* Constants&lt;br /&gt;
* Events&lt;br /&gt;
* Other labelled elements (invariants, axioms, guards, etc)&lt;br /&gt;
&lt;br /&gt;
====Requirements before using ====&lt;br /&gt;
&lt;br /&gt;
Before using the renaming/refactory, all the files in the project should be saved ( it will be asked to save if there are unsaved files). There should be no errors in the project, otherwise it could lead to even more errors after applying the renaming (warning).&lt;br /&gt;
&lt;br /&gt;
==== Steps of usage ====&lt;br /&gt;
&lt;br /&gt;
# User selects element to be renamed at the Event-B Explorer&lt;br /&gt;
# By right clicking in the element, there should appear an option &#039;Refactory...&#039;. Selecting that option should open a wizard [[Image:refactory menu.png|300x300px]]&lt;br /&gt;
# User introduces new element name in the first page of the wizard. Then click in &#039;Next&#039;. [[Image:new_name_wizard2.png|400x350px]]&lt;br /&gt;
# If the option &#039;&#039;&#039;Wait for Indexer to update&#039;&#039;&#039; is selected, then &#039;&#039;&#039;if the rodin indexer is not up to date, the user has to wait for it. Otherwise, the user can cancel the operation and try later. &#039;&#039;&#039; [[Image:Refactory_progress_updating_rodin_indexer.png| middle |300x300px]]. If the option &#039;&#039;&#039;Wait for Indexer to update&#039;&#039;&#039; is not selected, the tool will use the previous version of the indexer and rename accordingly.  &lt;br /&gt;
# Once the indexer is up to date, the user can proceed with the operation.[[Image:refactory_rodin_indexer_updated.png|350x300px]]&lt;br /&gt;
# A list of related files is created and the plug-in check for possible clashes and returns a report&lt;br /&gt;
# User decides if he wants to execute renaming (by clicking in &#039;Finish&#039;)&lt;br /&gt;
&lt;br /&gt;
[[Image:refactory_report_wizard.png|400x300px]]&lt;br /&gt;
&lt;br /&gt;
== Bugs, Features and Comments == &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Any reports of bugs, features or comments are welcome. Please, use the SourceForge trackers to report a bug on existing features, or to request new features:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [https://sourceforge.net/tracker/?atid=651669&amp;amp;group_id=108850&amp;amp;category=1259297 Bugs]&lt;br /&gt;
* [https://sourceforge.net/tracker/?atid=651672&amp;amp;group_id=108850&amp;amp;category=1259298 Feature Requests]&lt;br /&gt;
&lt;br /&gt;
====Features Request====&lt;br /&gt;
* Implement UNDO for renaming&lt;br /&gt;
&lt;br /&gt;
== Releases ==&lt;br /&gt;
&lt;br /&gt;
=====Version 1.4.0 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;27th February 2025&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This new release fixes compatibility issues with Rodin. It requires Java 11+ and Rodin 3.8+.&lt;br /&gt;
&lt;br /&gt;
=====Version 1.3.0 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;6th May 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This new release is a port to Rodin 3.x.&lt;br /&gt;
&lt;br /&gt;
=====Version 1.2.2 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;25th June 2012&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v1.2.2) compatible with Rodin v2.5 is available in the main Rodin update site (Utilities category). &lt;br /&gt;
*Bug fix&lt;br /&gt;
** Fixed bug related with waiting for the rodin indexer to update&lt;br /&gt;
&lt;br /&gt;
*Feature Request:&lt;br /&gt;
** Added option to rename without having to wait for the rodin indexer to update.&lt;br /&gt;
&lt;br /&gt;
=====Version 1.2.0 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;29th June 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v1.2.0) compatible with Rodin v2.2.x is available in the main Rodin update site. &lt;br /&gt;
*Bug fix&lt;br /&gt;
** Before renaming, ignore unsaved files that finish with &#039;tmp&#039;.&lt;br /&gt;
** Sometimes platform would hang when renaming. This happens because the rodin indexer is still updating when the renaming operation is called and the platform would hang/block until the indexer had finished updating. To circumvent this problem, an additional wizard step is added corresponding to the indexer update. That step allows the user to stop the renaming and start later without hanging the platform.&lt;br /&gt;
&lt;br /&gt;
*Feature Request:&lt;br /&gt;
** More accurate monitor progress bar.&lt;br /&gt;
** Shorter description of reasoner version problem.&lt;br /&gt;
**Optimised rewriting of freeIdentifiers when renaming variables and constants.&lt;br /&gt;
&lt;br /&gt;
=====Version 1.0.0 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;8th Nov 2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v1.0.0) compatible with Rodin v2.0.x is available in the main Rodin update site. &lt;br /&gt;
&lt;br /&gt;
=====Version 0.0.8 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;28th May 2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v0.0.8) compatible with Rodin v1.3.x is available in the main Rodin update site. A bug related to assignment using the &amp;quot;become such that&amp;quot; operator was fixed. Also, when renaming proofs, this is done by running a job which can run in background.&lt;br /&gt;
&lt;br /&gt;
*Bug Fix&lt;br /&gt;
**Bug 3005170: &#039;&#039;If a variable is renamed, which is used in a &amp;quot;becomes such that&amp;quot;, the assignment does not type check any longer after the renaming operation, because the variable has disappeared.&#039;&#039;&lt;br /&gt;
**Bug 3005202: &#039;&#039;When a renaming operation is performed, the provers are launched. The waiting time may be quite long and it is impossible to do anything else.&lt;br /&gt;
It is always necessary to run the provers? If it is indeed mandatory, the provers should be temporarily disconnected until the renaming has been performed, and run when this operation has completed&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=====Version 0.0.7 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;30th March 2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v0.0.7) compatible with Rodin v1.2.x is available in the main Rodin update site.&lt;br /&gt;
&lt;br /&gt;
*Bug Fix&lt;br /&gt;
**Fix bug that occurred when renaming an event whose machine was refined.&lt;br /&gt;
&lt;br /&gt;
=====Version 0.0.6 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;25th February 2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v0.0.6) compatible with Rodin v1.2.x is available in the main Rodin update site.&lt;br /&gt;
&lt;br /&gt;
*Feature Request&lt;br /&gt;
**Renaming of all proofs after the element renaming. For each proof obligation, if proof rebuilding does not work, a new proofTree is created based on the initial proofTree and on the renamed element. By applying the ancient rule, if a proof is discharged before the renamed, it remains discharged after the renaming.&lt;br /&gt;
&lt;br /&gt;
=====Version 0.0.5 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;13th January 2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v0.0.5) fixing a few bugs found is already available.&lt;br /&gt;
&lt;br /&gt;
=====Version 0.0.4 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;5th November 2009&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v0.0.4) compatible with Rodin v1.1.0 is available in the main Rodin update site (bug fix from 0.0.3). Before starting the renaming, it is recommended to clean and build the project in order to have the indexer tables updated (IMPORTANT).&lt;br /&gt;
&lt;br /&gt;
*Bug fix&lt;br /&gt;
** Renaming of proofs would not save the proof files after renaming&lt;br /&gt;
** Renaming of labelled elements would not update the proofs.&lt;br /&gt;
&lt;br /&gt;
*Possible Problem&lt;br /&gt;
** If you try to rename and the operation runs successfully without any errors but does not have any effect, you should:&lt;br /&gt;
*** First, try to fix the renaming manually on the respective file (or using the renaming framework, revert to the original name)&lt;br /&gt;
*** Try to make a CLEAN and BUILD to ensure that the Rodin indexer is updated before the renaming.&lt;br /&gt;
*** Run the renaming again and should be working fine.&lt;br /&gt;
&lt;br /&gt;
=====Version 0.0.3 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;2nd November 2009&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v0.0.3) compatible with Rodin v1.1.0 is already available in the main Rodin update site. Before starting the renaming, it is recommended to clean and build the project in order to have the indexer tables updated.&lt;br /&gt;
&lt;br /&gt;
*Features&lt;br /&gt;
** Renaming of machines and contexts is possible using the indexers. After the renaming of a machine/context, the change is propagated over the related files&lt;br /&gt;
** Renaming of proofs: after the renaming, the proof obligations are also updated to reflect the renaming. It might be necessary to manually refresh the status of some proof obligations (although the proof is already discharged). This renaming is not fully-functional at the moment and some discharged proof obligations may have to be discharged again. We intend to fix this problem in the future.&lt;br /&gt;
&lt;br /&gt;
=====Version 0.0.2 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;3rd July 2009&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*Bugs&lt;br /&gt;
** Validate if new name is in the list of reserved words of Event-B (dom,ran, card, etc)&lt;br /&gt;
&lt;br /&gt;
=====Version 0.0.1 =====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;1st July 2009&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A release of renaming/refactory (v0.0.1) compatible with Rodin v1.0.0 is already available in the main Rodin update site. &lt;br /&gt;
&lt;br /&gt;
Note that this version is still a prototype so prone to errors. So it is suggested to back up the projects before starting to use the renaming plug-in. The plug-in uses the most recent version of Rodin Indexer. Before starting the renaming, it is recommended to clean and build the project in order to have the indexer tables updated.&lt;br /&gt;
&lt;br /&gt;
Although one of the goals is to the rename the respective proof obligations, this feature is not available in this version. It should be available in the next release. If you find bugs or errors, please let me know by updating this wiki-page or [mailto:ras07r@ecs.soton.ac.uk email].&lt;br /&gt;
&lt;br /&gt;
[[Category:Design]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugin]]&lt;br /&gt;
[[Category:User documentation]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14590</id>
		<title>Template:Dev News</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14590"/>
		<updated>2025-02-27T10:44:04Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Renaming Refactory 1.4 and Generic Instantiation 1.1 releases&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[http://wiki.event-b.org/index.php?title=Template:Dev_News/Archives&amp;amp;action=edit Edit Archives]&lt;br /&gt;
== Displayed as follow on the Main Page ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;width:50%;border:1px solid #AAAAAA;background:#FFFFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;!--- News to add here below : ==== ---&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;p style=&amp;quot;font-size:35px&amp;quot;&amp;gt;Rodin 3.8 is out&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
||&amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[[Rodin Platform 3.8 Release Notes | +Learn more... ]]&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.8/ Download now]&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* 27/02/25 : [[Generic_Instantiation|Generic Instantiation (Soton)]] plug-in 1.1.0 is now available&lt;br /&gt;
* 27/02/25 : [[Refactoring_Framework|Renaming Refactory]] plug-in 1.4.0 is now available&lt;br /&gt;
* 20/01/25 : Atelier B plug-in 2.4.1 is now available&lt;br /&gt;
* 12/11/24 : Atelier B plug-in 2.4.0 is now available&lt;br /&gt;
* 17/10/24 : [[B2Latex]] 0.8.0 is now available&lt;br /&gt;
* 03/04/23 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.8/ Release 3.8] of Rodin is now available [[Rodin Platform 3.8 Release Notes | +Learn more]]&lt;br /&gt;
* 25/04/22 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.7/ Release 3.7] of Rodin is now available [[Rodin Platform 3.7 Release Notes | +Learn more]]&lt;br /&gt;
* 01/04/22 : [[Theory_Plug-in]] Theory 4.0.4 is now available&lt;br /&gt;
* 14/01/22 : [[SMT_Solvers_Plug-in]] SMT Solvers 1.5 is now available&lt;br /&gt;
* 29/09/21 : [[Theory_Plug-in]] Theory 4.0.3 is now available&lt;br /&gt;
* 04/06/21 : [[Theory_Plug-in]] Theory 4.0.2 is now available&lt;br /&gt;
* 17/05/21 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Release 3.6] of Rodin is now available [[Rodin Platform 3.6 Release Notes | +Learn more]]&lt;br /&gt;
* 22/12/20 : [[Theory_Plug-in]] Theory 4.0.1 is now available&lt;br /&gt;
* 11/09/20 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/ Release 3.5] of Rodin is now available [[Rodin Platform 3.5 Release Notes | +Learn more]]&lt;br /&gt;
* 07/03/18 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.4/ Release 3.4] of Rodin is now available [[Rodin Platform 3.4 Release Notes | +Learn more]]&lt;br /&gt;
* 13/04/17 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.3/ Release 3.3] of Rodin is now available [[Rodin Platform 3.3 Release Notes | +Learn more]]&lt;br /&gt;
* 22/06/15 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.2/ Release 3.2] of Rodin is now available [[Rodin Platform 3.2 Release Notes | +Learn more]]&lt;br /&gt;
* 17/12/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.1/ Release 3.1] of Rodin is now available [[Rodin Platform 3.1 Release Notes | +Learn more]]&lt;br /&gt;
* 25/03/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.0/ Release 3.0] of Rodin is now available [[Rodin_Platform_3.0_Release_Notes | +Learn more]]&lt;br /&gt;
* 18/10/13 : [[SMT_Solvers_Plug-in]] SMT 1.1 is now available&lt;br /&gt;
* 20/06/13 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.8/ Release 2.8] of Rodin is now available [[Rodin_Platform_2.8_Release_Notes | +Learn more]]&lt;br /&gt;
* 03/06/13 : [[SMT_Solvers_Plug-in]] SMT 1.0 is now available&lt;br /&gt;
* 06/11/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.7/ Release 2.7] of Rodin is now available&lt;br /&gt;
* 03/08/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.6/ Release 2.6] of Rodin is now available&lt;br /&gt;
* 02/05/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.5/ Release 2.5] of Rodin is now available&lt;br /&gt;
* 03/02/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.4/ Release 2.4] of Rodin is now available&lt;br /&gt;
* 01/12/11 : [[Rodin_Editor | Rodin Editor]] plug-in v0.6 released for Rodin 2.3&lt;br /&gt;
* 04/10/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.3/ Release 2.3] of Rodin is now available&lt;br /&gt;
* 01/08/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2.2/ Release 2.2.2] of Rodin is now available&lt;br /&gt;
* 13/07/11 : [[Rodin_Editor | Rodin Editor]] plug-in released for Rodin 2.2.x&lt;br /&gt;
* 01/06/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2/ Release 2.2] of Rodin is now available&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 08/02/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.1/ Release 2.1] of Rodin is now available&lt;br /&gt;
* 16/11/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0.1/ Release 2.0.1] of Rodin is now available&lt;br /&gt;
* 13/10/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0/ Release 2.0] of Rodin is now available&lt;br /&gt;
* 08/06/10 : UML-B Statemachine Animation Version 1.0.0 released (for Rodin 1.3)&lt;br /&gt;
* 08/06/10 : UML-B Version 1.1.0 released (for Rodin 1.3)&lt;br /&gt;
* 03/02/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.2/ Release 1.2.0] of Rodin is now available&lt;br /&gt;
* 29/11/09 : B2Latex 0.5.1 is now available for Rodin 0.9.2 or later&lt;br /&gt;
* 20/10/09 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.1/ Release 1.1.0] of Rodin is now available&lt;br /&gt;
* 25/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/248437 Implemented new Prover Rules]&lt;br /&gt;
* 20/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/24160f New extensible plug-ins] org.rodinp.keyboard and org.eventb.keyboard&lt;br /&gt;
* 31/07/09 : UML-B plug-in released for Rodin 1.0.0&lt;br /&gt;
* 27/07/09 : Fixed requirement plug-in for rodin 1.0.0&lt;br /&gt;
* 01/07/09 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.0/ Release 1.0.0] of Rodin is now available ([http://sourceforge.net/project/shownotes.php?release_id=693928 changelog]--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Main page templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Rodin_Platform_3.5.0_External_Plug-ins&amp;diff=14586</id>
		<title>Rodin Platform 3.5.0 External Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Rodin_Platform_3.5.0_External_Plug-ins&amp;diff=14586"/>
		<updated>2025-01-21T13:05:26Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Atelier B plug-in release 2.4.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
  Please use one of the following templates for the Status column&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; not available &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Rodin Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://rodin-b-sharp.sourceforge.net/updates&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || [[SMT_Plug-in | SMT Solvers ]] || 1.5.0 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt; || || 14th January 2022|| [mailto:lvoisin@users.sourceforge.net Laurent Voisin]  || Automatic prover using SMT solvers&lt;br /&gt;
|-&lt;br /&gt;
| || Relevance Filter || 1.1.1 ||  &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;  || ?.x.x || || || Improves chance of automatic proof by selecting relevant hypotheses&lt;br /&gt;
|-&lt;br /&gt;
| || [[B2Latex | B2Latex export]] || 0.7.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 2.5.x || 27th May 2015 || [mailto:lvoisin@users.sourceforge.net Laurent Voisin] || generates a Latex documentation of the Event-B&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Rose.gif|30px]]||[[Rose_(Structured)_Editor|Rose editor]] || 1.7.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 4 Nov 2018 || [mailto:umlb@soton.ac.uk umlb] || Tree-structured editor for Event-B EMF that handles extensions without modification. Mainly useful for Plug-in developers.&lt;br /&gt;
|-&lt;br /&gt;
| CODA || CODA Component Diagrams || 6.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || ? || [mailto:umlb@soton.ac.uk umlb] || Component diagrams with timed channels. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| CODA || CODA Simulator for Component Diagrams || 3.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || ? || [mailto:umlb@soton.ac.uk umlb] || Component based simulation. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Project diagram icon s.png|30px]]||[[Project_Diagram|Project Diagram]]|| 1.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 1st Feb. 2015 || [mailto:umlb@soton.ac.uk umlb] || Machine - Context relationship diagram. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Umlb32.gif|30px]] || [[UML-B|UML-B]] || 2.3.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 18th Oct. 2014 || [mailto:umlb@soton.ac.uk umlb] || Original UML-B modelling environment&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Cmp_mch_obj.gif|20px]] ||[[Parallel_Composition_using_Event-B | Shared Event Composition]] || 1.7.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || || 5th July 2017 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.x.x&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:DecompositionPlug-in_logo.png|30px]] || [[Decomposition Plug-in User Guide | Decomposition]] || 1.3.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;|| || 4th July 2017 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.x.x&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Refactoring Framework | Refactory ]]|| 1.3.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt;|| 3.x.x || 6th May 2014 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.0.x.&lt;br /&gt;
|-&lt;br /&gt;
| || [[Theory Plug-in| Theory Plug-in]] || 4.0.4 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available&amp;lt;/span&amp;gt;||  || 1st April 2022|| [mailto:gverdier@users.sourceforge.net Guillaume Verdier] ||&lt;br /&gt;
|-.x&lt;br /&gt;
| || [[Code Generation Activity | Code Generation]] || 0.2.5 ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt;||  || 29th Aug. 2013|| [mailto:umlb@soton.ac.uk umlb] || For Java, Ada, and OpenMP C code&lt;br /&gt;
|-.x&lt;br /&gt;
|-&lt;br /&gt;
| || [[Isabelle for Rodin]] || || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || 2.x.x || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || [[Pattern | Pattern]] || 0.9.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || 3.x.x || 13th March 2015 || [mailto:tshoang@users.sourceforge.net Thai Son Hoang] || &lt;br /&gt;
|-&lt;br /&gt;
| || [[Event-B Qualitative Probability User Guide | Qualitative Probability]] || 0.2.3 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not working&amp;lt;/span&amp;gt; || 3.x.x || 9th October 2015 || [mailto:tshoang@users.sourceforge.net Thai Son Hoang] || Needs updating to be compatible with changes in Rodin 3.5&lt;br /&gt;
|-&lt;br /&gt;
| || [[Generic Instantiation Plug-in User Guide | Generic Instantiation (Soton)]] || 1.0.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || || 05th March 2013 || [mailto:asf08r@ecs.soton.ac.uk Asieh] || &lt;br /&gt;
|-&lt;br /&gt;
| ||[[Records|Records]] || 2.0.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 2.x.x || 16th Oct. 2010 || [mailto:umlb@soton.ac.uk umlb] || no longer supported - use CamilleX instead&lt;br /&gt;
|-	&lt;br /&gt;
| ||[[EMF_Compare_Editor_installation|Teamwork]] || 1.2.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;  || 3.2.x || 5th Sept. 2016 || [mailto:umlb@soton.ac.uk umlb] || No longer supported - use CamilleX instead. Provides a synchronised copy of Machines and Contexts for committing into a repository.  &lt;br /&gt;
|-	&lt;br /&gt;
| [[Image:Umlb32.gif|30px]] ||[[UML-B_-_Statemachine_Animation|UML-B Statemachine Animation]] || 1.3.0 ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 3.x.x || 18th Oct. 2014 || [mailto:umlb@soton.ac.uk umlb] || no longer supported - use new UML-B from Soton update site instead&lt;br /&gt;
|-	&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||iUML-B plugins ||  ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 3.x.x ||  || [mailto:umlb@soton.ac.uk umlb] || New versions are now available on the Soton Update Site. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Atelier B Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://methode-b.com/update_site/atelierb_provers&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || Atelier B provers || 2.4.1 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.8 || 20 Jan 2025  || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ProB Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://www.stups.hhu.de/prob_updates_rodin3&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || ProB || 3.0.10 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || The ProB animator and model checker&lt;br /&gt;
|-&lt;br /&gt;
| || ProB (Dis)Prover || 3.0.9 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || The ProB counter-example finder and prover&lt;br /&gt;
|-&lt;br /&gt;
| || ProB Symbolic constants support || 3.0.9 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Southampton Releases Update Site ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Available from http://eventb-soton.github.io/updateSite/releases&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:CamilleX.png|CmX]] || [[CamilleX|CamilleX]] || 2.0.2 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 21 Jan 2021  || [mailto:T.S.Hoang@ecs.soton.ac.uk Thai Son Hoang] || CamilleX provides text editors for Event-B models and support modelling mechanisms such as machine inclusion.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] || [[Event-B_Classdiagrams|UML-B Class Diagrams]] || 3.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 11 Sept 2020  || [mailto:umlb@soton.ac.uk umlb] || UML-B Class diagrams translate into Event-B Machines.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] || [[Event-B_Statemachines|UML-B State-machines]] || 4.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 13 Aug 2020  || [mailto:umlb@soton.ac.uk umlb] || UML-B State-machines translate into Event-B Machines.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||[[Event-B_Statemachines|UML-B State-machine Animation]] || 3.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 13 Aug 2020 || [mailto:umlb@soton.ac.uk umlb] || Animate UML-B State-machines. Compatible with UML-B statemachines  4.x.x and ProB 3.0.x.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||[[Scenario Checker|Scenario Checker]] || 0.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 31 July 2020 || [mailto:umlb@soton.ac.uk umlb] || Validation tool for recording and replaying scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following framework plug-ins are also provided on the Southampton Releases Update Site. These plugins are installed automatically when required and are not usually installed explicitly by users.&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| ||[[EMF_framework_for_Event-B|Event-B EMF framework]] || 6.1.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 4 July 2020 || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Generic_Event-B_EMF_extensions|Event-B EMF extensions]] || 6.1.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 4 July 2020  || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Generic_Event-B_EMF_extensions|UML-B diagrams]] || 8.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.2.x || 13 Aug 2020  || [mailto:umlb@soton.ac.uk umlb] ||  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.&lt;br /&gt;
|-&lt;br /&gt;
|  ||[[ProB Support|ProB Support]] || 0.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 28 July 2020 || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14585</id>
		<title>Template:Dev News</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14585"/>
		<updated>2025-01-21T13:03:20Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Atelier B plug-in release 2.4.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[http://wiki.event-b.org/index.php?title=Template:Dev_News/Archives&amp;amp;action=edit Edit Archives]&lt;br /&gt;
== Displayed as follow on the Main Page ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;width:50%;border:1px solid #AAAAAA;background:#FFFFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;!--- News to add here below : ==== ---&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;p style=&amp;quot;font-size:35px&amp;quot;&amp;gt;Rodin 3.8 is out&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
||&amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[[Rodin Platform 3.8 Release Notes | +Learn more... ]]&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.8/ Download now]&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* 20/01/25 : Atelier B plug-in 2.4.1 is now available&lt;br /&gt;
* 12/11/24 : Atelier B plug-in 2.4.0 is now available&lt;br /&gt;
* 17/10/24 : [[B2Latex]] 0.8.0 is now available&lt;br /&gt;
* 03/04/23 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.8/ Release 3.8] of Rodin is now available [[Rodin Platform 3.8 Release Notes | +Learn more]]&lt;br /&gt;
* 25/04/22 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.7/ Release 3.7] of Rodin is now available [[Rodin Platform 3.7 Release Notes | +Learn more]]&lt;br /&gt;
* 01/04/22 : [[Theory_Plug-in]] Theory 4.0.4 is now available&lt;br /&gt;
* 14/01/22 : [[SMT_Solvers_Plug-in]] SMT Solvers 1.5 is now available&lt;br /&gt;
* 29/09/21 : [[Theory_Plug-in]] Theory 4.0.3 is now available&lt;br /&gt;
* 04/06/21 : [[Theory_Plug-in]] Theory 4.0.2 is now available&lt;br /&gt;
* 17/05/21 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Release 3.6] of Rodin is now available [[Rodin Platform 3.6 Release Notes | +Learn more]]&lt;br /&gt;
* 22/12/20 : [[Theory_Plug-in]] Theory 4.0.1 is now available&lt;br /&gt;
* 11/09/20 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/ Release 3.5] of Rodin is now available [[Rodin Platform 3.5 Release Notes | +Learn more]]&lt;br /&gt;
* 07/03/18 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.4/ Release 3.4] of Rodin is now available [[Rodin Platform 3.4 Release Notes | +Learn more]]&lt;br /&gt;
* 13/04/17 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.3/ Release 3.3] of Rodin is now available [[Rodin Platform 3.3 Release Notes | +Learn more]]&lt;br /&gt;
* 22/06/15 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.2/ Release 3.2] of Rodin is now available [[Rodin Platform 3.2 Release Notes | +Learn more]]&lt;br /&gt;
* 17/12/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.1/ Release 3.1] of Rodin is now available [[Rodin Platform 3.1 Release Notes | +Learn more]]&lt;br /&gt;
* 25/03/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.0/ Release 3.0] of Rodin is now available [[Rodin_Platform_3.0_Release_Notes | +Learn more]]&lt;br /&gt;
* 18/10/13 : [[SMT_Solvers_Plug-in]] SMT 1.1 is now available&lt;br /&gt;
* 20/06/13 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.8/ Release 2.8] of Rodin is now available [[Rodin_Platform_2.8_Release_Notes | +Learn more]]&lt;br /&gt;
* 03/06/13 : [[SMT_Solvers_Plug-in]] SMT 1.0 is now available&lt;br /&gt;
* 06/11/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.7/ Release 2.7] of Rodin is now available&lt;br /&gt;
* 03/08/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.6/ Release 2.6] of Rodin is now available&lt;br /&gt;
* 02/05/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.5/ Release 2.5] of Rodin is now available&lt;br /&gt;
* 03/02/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.4/ Release 2.4] of Rodin is now available&lt;br /&gt;
* 01/12/11 : [[Rodin_Editor | Rodin Editor]] plug-in v0.6 released for Rodin 2.3&lt;br /&gt;
* 04/10/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.3/ Release 2.3] of Rodin is now available&lt;br /&gt;
* 01/08/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2.2/ Release 2.2.2] of Rodin is now available&lt;br /&gt;
* 13/07/11 : [[Rodin_Editor | Rodin Editor]] plug-in released for Rodin 2.2.x&lt;br /&gt;
* 01/06/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2/ Release 2.2] of Rodin is now available&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 08/02/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.1/ Release 2.1] of Rodin is now available&lt;br /&gt;
* 16/11/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0.1/ Release 2.0.1] of Rodin is now available&lt;br /&gt;
* 13/10/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0/ Release 2.0] of Rodin is now available&lt;br /&gt;
* 08/06/10 : UML-B Statemachine Animation Version 1.0.0 released (for Rodin 1.3)&lt;br /&gt;
* 08/06/10 : UML-B Version 1.1.0 released (for Rodin 1.3)&lt;br /&gt;
* 03/02/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.2/ Release 1.2.0] of Rodin is now available&lt;br /&gt;
* 29/11/09 : B2Latex 0.5.1 is now available for Rodin 0.9.2 or later&lt;br /&gt;
* 20/10/09 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.1/ Release 1.1.0] of Rodin is now available&lt;br /&gt;
* 25/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/248437 Implemented new Prover Rules]&lt;br /&gt;
* 20/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/24160f New extensible plug-ins] org.rodinp.keyboard and org.eventb.keyboard&lt;br /&gt;
* 31/07/09 : UML-B plug-in released for Rodin 1.0.0&lt;br /&gt;
* 27/07/09 : Fixed requirement plug-in for rodin 1.0.0&lt;br /&gt;
* 01/07/09 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.0/ Release 1.0.0] of Rodin is now available ([http://sourceforge.net/project/shownotes.php?release_id=693928 changelog]--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Main page templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14584</id>
		<title>Theory Plug-in Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14584"/>
		<updated>2024-11-15T15:35:25Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add step to speed up composite sites&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides some documentation for developers of the Theory plug-in. Documentation for users of the plug-in is available in [[Theory Plug-in|this page]].&lt;br /&gt;
&lt;br /&gt;
== Eclipse setup ==&lt;br /&gt;
&lt;br /&gt;
* Clone the [https://sourceforge.net/p/rodin-b-sharp/theory git repository] from Sourceforge&lt;br /&gt;
* Import the subdirectories of the git repository in Eclipse (each subdirectory corresponds to an Eclipse project providing an Eclipse feature or plug-in)&lt;br /&gt;
* Open &amp;lt;code&amp;gt;org.eventb.theory.feature/org.eventb.theory.feature.target&amp;lt;/code&amp;gt; and click on &#039;&#039;Set as Active Target Platform&#039;&#039;, at the top right of the window; this assumes that the [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/org.rodinp.dev-3.5.0-9f39f1653.zip/download Rodin target platform] has been downloaded and put in &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt;: if this location is not available, or if another version of Rodin is should be targeted, edit the &amp;lt;code&amp;gt;.target&amp;lt;/code&amp;gt; file accordingly&lt;br /&gt;
&lt;br /&gt;
== Release checklist ==&lt;br /&gt;
&lt;br /&gt;
To release a new version of the plug-in:&lt;br /&gt;
&lt;br /&gt;
* Tag the last commit with the version number (remember to pass the &amp;lt;code&amp;gt;--tags&amp;lt;/code&amp;gt; flag to &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; to publish it)&lt;br /&gt;
* On Sourceforge, create a new folder with the version number in the [https://sourceforge.net/projects/rodin-b-sharp/files/Plugin_Theory/ plug-in&#039;s directory] and upload the files of the update site there (they are built in &amp;lt;code&amp;gt;org.eventb.theory.repository/target/repository&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Update the composite Eclipse repository that provides the Rodin plug-ins:&lt;br /&gt;
** Clone the &amp;lt;code&amp;gt;RodinUpdateSite&amp;lt;/code&amp;gt; folder from the [https://sourceforge.net/p/rodin-b-sharp/svn/HEAD/tree/trunk/RodinUpdateSite/ Subversion repository] and import it in Eclipse&lt;br /&gt;
** Open the &amp;lt;code&amp;gt;composite/compSite.xml&amp;lt;/code&amp;gt; file, copy the &amp;lt;code&amp;gt;&amp;amp;lt;repository location=&amp;quot;https&amp;amp;#58;//rodin-b-sharp.sourceforge.net/updates/Plugin_Theory/X.Y.Z&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt; line, then update the version number in that line&lt;br /&gt;
** Open the &amp;lt;code&amp;gt;composite-archive/compSite.xml&amp;lt;/code&amp;gt; file and paste the old &amp;lt;code&amp;gt;&amp;amp;lt;repository&amp;amp;gt;&amp;lt;/code&amp;gt; line copied previously&lt;br /&gt;
** Follow the instructions in the files&#039; comments to build the repositories&lt;br /&gt;
** Connect with an SFTP client to &amp;lt;code&amp;gt;web.sourceforge.net&amp;lt;/code&amp;gt; (see [https://sourceforge.net/p/forge/documentation/SFTP#for-managing-project-web-space Sourceforge&#039;s documentation]) and upload the files built previously (&amp;lt;code&amp;gt;p2.index&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeArtifacts.jar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeContent.jar&amp;lt;/code&amp;gt;):&lt;br /&gt;
*** in &amp;lt;code&amp;gt;/home/project-web/rodin-b-sharp/htdocs/updates&amp;lt;/code&amp;gt; for the files built from &amp;lt;code&amp;gt;composite/compSite.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
*** in &amp;lt;code&amp;gt;/home/project-web/rodin-b-sharp/htdocs/updates-archive&amp;lt;/code&amp;gt; for the files built from &amp;lt;code&amp;gt;composite-archive/compSite.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
*** to speed up the composite site, create a directory with the version number in &amp;lt;code&amp;gt;/home/project-web/rodin-b-sharp/htdocs/updates/Plugin_Theory&amp;lt;/code&amp;gt; and put in that directory a copy of the files &amp;lt;code&amp;gt;p2.index&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;content.xml.xz&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;artifacts.xml.xz&amp;lt;/code&amp;gt; that were uploaded to Sourceforge  in step 2&lt;br /&gt;
* Publish the release notes in the [[Theory Release History]] page, update the table in the [[Rodin Platform Releases]] page and list the release in [[Template:Dev News]] (it is included in the front page)&lt;br /&gt;
* Announce the release on the Rodin mailing lists rodin-b-sharp-user@lists.sourceforge.net and rodin-b-sharp-announce@lists.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer documentation]]&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14583</id>
		<title>Template:Dev News</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14583"/>
		<updated>2024-11-12T08:10:14Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Atelier B plug-in release 2.4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[http://wiki.event-b.org/index.php?title=Template:Dev_News/Archives&amp;amp;action=edit Edit Archives]&lt;br /&gt;
== Displayed as follow on the Main Page ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;width:50%;border:1px solid #AAAAAA;background:#FFFFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;!--- News to add here below : ==== ---&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;p style=&amp;quot;font-size:35px&amp;quot;&amp;gt;Rodin 3.8 is out&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
||&amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[[Rodin Platform 3.8 Release Notes | +Learn more... ]]&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.8/ Download now]&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* 12/11/24 : Atelier B plug-in 2.4.0 is now available&lt;br /&gt;
* 17/10/24 : [[B2Latex]] 0.8.0 is now available&lt;br /&gt;
* 03/04/23 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.8/ Release 3.8] of Rodin is now available [[Rodin Platform 3.8 Release Notes | +Learn more]]&lt;br /&gt;
* 25/04/22 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.7/ Release 3.7] of Rodin is now available [[Rodin Platform 3.7 Release Notes | +Learn more]]&lt;br /&gt;
* 01/04/22 : [[Theory_Plug-in]] Theory 4.0.4 is now available&lt;br /&gt;
* 14/01/22 : [[SMT_Solvers_Plug-in]] SMT Solvers 1.5 is now available&lt;br /&gt;
* 29/09/21 : [[Theory_Plug-in]] Theory 4.0.3 is now available&lt;br /&gt;
* 04/06/21 : [[Theory_Plug-in]] Theory 4.0.2 is now available&lt;br /&gt;
* 17/05/21 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Release 3.6] of Rodin is now available [[Rodin Platform 3.6 Release Notes | +Learn more]]&lt;br /&gt;
* 22/12/20 : [[Theory_Plug-in]] Theory 4.0.1 is now available&lt;br /&gt;
* 11/09/20 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/ Release 3.5] of Rodin is now available [[Rodin Platform 3.5 Release Notes | +Learn more]]&lt;br /&gt;
* 07/03/18 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.4/ Release 3.4] of Rodin is now available [[Rodin Platform 3.4 Release Notes | +Learn more]]&lt;br /&gt;
* 13/04/17 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.3/ Release 3.3] of Rodin is now available [[Rodin Platform 3.3 Release Notes | +Learn more]]&lt;br /&gt;
* 22/06/15 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.2/ Release 3.2] of Rodin is now available [[Rodin Platform 3.2 Release Notes | +Learn more]]&lt;br /&gt;
* 17/12/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.1/ Release 3.1] of Rodin is now available [[Rodin Platform 3.1 Release Notes | +Learn more]]&lt;br /&gt;
* 25/03/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.0/ Release 3.0] of Rodin is now available [[Rodin_Platform_3.0_Release_Notes | +Learn more]]&lt;br /&gt;
* 18/10/13 : [[SMT_Solvers_Plug-in]] SMT 1.1 is now available&lt;br /&gt;
* 20/06/13 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.8/ Release 2.8] of Rodin is now available [[Rodin_Platform_2.8_Release_Notes | +Learn more]]&lt;br /&gt;
* 03/06/13 : [[SMT_Solvers_Plug-in]] SMT 1.0 is now available&lt;br /&gt;
* 06/11/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.7/ Release 2.7] of Rodin is now available&lt;br /&gt;
* 03/08/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.6/ Release 2.6] of Rodin is now available&lt;br /&gt;
* 02/05/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.5/ Release 2.5] of Rodin is now available&lt;br /&gt;
* 03/02/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.4/ Release 2.4] of Rodin is now available&lt;br /&gt;
* 01/12/11 : [[Rodin_Editor | Rodin Editor]] plug-in v0.6 released for Rodin 2.3&lt;br /&gt;
* 04/10/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.3/ Release 2.3] of Rodin is now available&lt;br /&gt;
* 01/08/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2.2/ Release 2.2.2] of Rodin is now available&lt;br /&gt;
* 13/07/11 : [[Rodin_Editor | Rodin Editor]] plug-in released for Rodin 2.2.x&lt;br /&gt;
* 01/06/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2/ Release 2.2] of Rodin is now available&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 08/02/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.1/ Release 2.1] of Rodin is now available&lt;br /&gt;
* 16/11/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0.1/ Release 2.0.1] of Rodin is now available&lt;br /&gt;
* 13/10/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0/ Release 2.0] of Rodin is now available&lt;br /&gt;
* 08/06/10 : UML-B Statemachine Animation Version 1.0.0 released (for Rodin 1.3)&lt;br /&gt;
* 08/06/10 : UML-B Version 1.1.0 released (for Rodin 1.3)&lt;br /&gt;
* 03/02/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.2/ Release 1.2.0] of Rodin is now available&lt;br /&gt;
* 29/11/09 : B2Latex 0.5.1 is now available for Rodin 0.9.2 or later&lt;br /&gt;
* 20/10/09 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.1/ Release 1.1.0] of Rodin is now available&lt;br /&gt;
* 25/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/248437 Implemented new Prover Rules]&lt;br /&gt;
* 20/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/24160f New extensible plug-ins] org.rodinp.keyboard and org.eventb.keyboard&lt;br /&gt;
* 31/07/09 : UML-B plug-in released for Rodin 1.0.0&lt;br /&gt;
* 27/07/09 : Fixed requirement plug-in for rodin 1.0.0&lt;br /&gt;
* 01/07/09 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.0/ Release 1.0.0] of Rodin is now available ([http://sourceforge.net/project/shownotes.php?release_id=693928 changelog]--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Main page templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14580</id>
		<title>Template:Dev News</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14580"/>
		<updated>2024-10-17T13:32:35Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: B2Latex plug-in version 0.8.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[http://wiki.event-b.org/index.php?title=Template:Dev_News/Archives&amp;amp;action=edit Edit Archives]&lt;br /&gt;
== Displayed as follow on the Main Page ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;width:50%;border:1px solid #AAAAAA;background:#FFFFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;!--- News to add here below : ==== ---&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;p style=&amp;quot;font-size:35px&amp;quot;&amp;gt;Rodin 3.8 is out&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
||&amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[[Rodin Platform 3.8 Release Notes | +Learn more... ]]&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.8/ Download now]&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* 17/10/24 : [[B2Latex]] 0.8.0 is now available&lt;br /&gt;
* 03/04/23 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.8/ Release 3.8] of Rodin is now available [[Rodin Platform 3.8 Release Notes | +Learn more]]&lt;br /&gt;
* 25/04/22 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.7/ Release 3.7] of Rodin is now available [[Rodin Platform 3.7 Release Notes | +Learn more]]&lt;br /&gt;
* 01/04/22 : [[Theory_Plug-in]] Theory 4.0.4 is now available&lt;br /&gt;
* 14/01/22 : [[SMT_Solvers_Plug-in]] SMT Solvers 1.5 is now available&lt;br /&gt;
* 29/09/21 : [[Theory_Plug-in]] Theory 4.0.3 is now available&lt;br /&gt;
* 04/06/21 : [[Theory_Plug-in]] Theory 4.0.2 is now available&lt;br /&gt;
* 17/05/21 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Release 3.6] of Rodin is now available [[Rodin Platform 3.6 Release Notes | +Learn more]]&lt;br /&gt;
* 22/12/20 : [[Theory_Plug-in]] Theory 4.0.1 is now available&lt;br /&gt;
* 11/09/20 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/ Release 3.5] of Rodin is now available [[Rodin Platform 3.5 Release Notes | +Learn more]]&lt;br /&gt;
* 07/03/18 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.4/ Release 3.4] of Rodin is now available [[Rodin Platform 3.4 Release Notes | +Learn more]]&lt;br /&gt;
* 13/04/17 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.3/ Release 3.3] of Rodin is now available [[Rodin Platform 3.3 Release Notes | +Learn more]]&lt;br /&gt;
* 22/06/15 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.2/ Release 3.2] of Rodin is now available [[Rodin Platform 3.2 Release Notes | +Learn more]]&lt;br /&gt;
* 17/12/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.1/ Release 3.1] of Rodin is now available [[Rodin Platform 3.1 Release Notes | +Learn more]]&lt;br /&gt;
* 25/03/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.0/ Release 3.0] of Rodin is now available [[Rodin_Platform_3.0_Release_Notes | +Learn more]]&lt;br /&gt;
* 18/10/13 : [[SMT_Solvers_Plug-in]] SMT 1.1 is now available&lt;br /&gt;
* 20/06/13 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.8/ Release 2.8] of Rodin is now available [[Rodin_Platform_2.8_Release_Notes | +Learn more]]&lt;br /&gt;
* 03/06/13 : [[SMT_Solvers_Plug-in]] SMT 1.0 is now available&lt;br /&gt;
* 06/11/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.7/ Release 2.7] of Rodin is now available&lt;br /&gt;
* 03/08/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.6/ Release 2.6] of Rodin is now available&lt;br /&gt;
* 02/05/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.5/ Release 2.5] of Rodin is now available&lt;br /&gt;
* 03/02/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.4/ Release 2.4] of Rodin is now available&lt;br /&gt;
* 01/12/11 : [[Rodin_Editor | Rodin Editor]] plug-in v0.6 released for Rodin 2.3&lt;br /&gt;
* 04/10/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.3/ Release 2.3] of Rodin is now available&lt;br /&gt;
* 01/08/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2.2/ Release 2.2.2] of Rodin is now available&lt;br /&gt;
* 13/07/11 : [[Rodin_Editor | Rodin Editor]] plug-in released for Rodin 2.2.x&lt;br /&gt;
* 01/06/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2/ Release 2.2] of Rodin is now available&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 08/02/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.1/ Release 2.1] of Rodin is now available&lt;br /&gt;
* 16/11/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0.1/ Release 2.0.1] of Rodin is now available&lt;br /&gt;
* 13/10/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0/ Release 2.0] of Rodin is now available&lt;br /&gt;
* 08/06/10 : UML-B Statemachine Animation Version 1.0.0 released (for Rodin 1.3)&lt;br /&gt;
* 08/06/10 : UML-B Version 1.1.0 released (for Rodin 1.3)&lt;br /&gt;
* 03/02/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.2/ Release 1.2.0] of Rodin is now available&lt;br /&gt;
* 29/11/09 : B2Latex 0.5.1 is now available for Rodin 0.9.2 or later&lt;br /&gt;
* 20/10/09 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.1/ Release 1.1.0] of Rodin is now available&lt;br /&gt;
* 25/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/248437 Implemented new Prover Rules]&lt;br /&gt;
* 20/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/24160f New extensible plug-ins] org.rodinp.keyboard and org.eventb.keyboard&lt;br /&gt;
* 31/07/09 : UML-B plug-in released for Rodin 1.0.0&lt;br /&gt;
* 27/07/09 : Fixed requirement plug-in for rodin 1.0.0&lt;br /&gt;
* 01/07/09 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.0/ Release 1.0.0] of Rodin is now available ([http://sourceforge.net/project/shownotes.php?release_id=693928 changelog]--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Main page templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=B2Latex&amp;diff=14579</id>
		<title>B2Latex</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=B2Latex&amp;diff=14579"/>
		<updated>2024-10-17T13:30:11Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Release 0.8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;B2Latex is a plug-in for Rodin that allows you to export Event-B contexts and machines in Latex files that can then be further rendered.&lt;br /&gt;
&lt;br /&gt;
Current Version : 0.8.0&lt;br /&gt;
&lt;br /&gt;
== Installation/Upgrade ==&lt;br /&gt;
The B2latex plugin or &amp;quot;Event-B to Latex exporter&amp;quot; is available from the Main Rodin update site.&lt;br /&gt;
Select the main Rodin Update site from the &amp;quot;work with:&amp;quot; field in the Help &amp;gt; Install New Software menu in Rodin.&lt;br /&gt;
The plug-in is available under the &#039;&#039;Utilities&#039;&#039; category.&lt;br /&gt;
&lt;br /&gt;
== How to use B2Latex? ==&lt;br /&gt;
Right click on a machine, a context or an Event-B project directly from the project explorer and select &#039;Generate Latex Document&#039; command to produce latex documents.&lt;br /&gt;
The latex docs are generated in the &#039;latex&#039; folder in your Event-B project directory (i.e. ...\workspaceName\projectName\latex\*.tex) together with a style file named &#039;&#039;b2latex.sty&#039;&#039;. bsymb.sty and b2latex.sty are required to process the latex.&lt;br /&gt;
&lt;br /&gt;
You can then run Latex on the source files using your own latex installation.&lt;br /&gt;
&lt;br /&gt;
The file &#039;&#039;b2latex.sty&#039;&#039; which is generated in the &#039;&#039;latex&#039;&#039; directory can be modified to change the style of the documentation.&lt;br /&gt;
&lt;br /&gt;
Since B2Latex 0.6.1, this file won&#039;t be overwritten if already exists, so no user modifications are accidentally lost.&lt;br /&gt;
&lt;br /&gt;
Note: B2Latex 0.7.0 has changed the structure of the &#039;&#039;b2latex.sty&#039;&#039;. For upgrade to new format simple delete this file and&lt;br /&gt;
B2Latex will regenerate it again. However, any custom modifications are lost and you have to apply them again.&lt;br /&gt;
&lt;br /&gt;
bsymb.sty can be dowloaded from http://www.event-b.org or https://sourceforge.net/projects/rodin-b-sharp/files/Doc_%20Event%20B%20LaTeX%20style/1.9/&lt;br /&gt;
== News? ==&lt;br /&gt;
The B2Latex 0.8.0 is now available from the Rodin update site and has been tested with Rodin 3.8 and 3.9.&lt;br /&gt;
&lt;br /&gt;
Since B2Latex 0.5.1, the command to export files has been moved to the Event-B project explorer.&lt;br /&gt;
Users can select a machine, a context or a whole Event-B project to produce latex documents directly from&lt;br /&gt;
the project explorer by pressing right click and then select menu &#039;Generate Latex Document&#039; on the component of their choice. The latex documents are generated in the &#039;latex&#039; folder like it was done in other previous releases.&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
&lt;br /&gt;
- If you wish to have math formulas or B code in a comment, you need to put them in $..$.&lt;br /&gt;
&lt;br /&gt;
- To avoid copying &#039;&#039;bsymb.sty&#039;&#039; to every folder where it is used, please follow the procedure below:&lt;br /&gt;
  (If you have used MikTex) &lt;br /&gt;
   (1) copy the bsmb.sty file into the MikTex directory&lt;br /&gt;
      (somewhere like C:\Program Files\MiKTeX 2.7\tex\latex),&lt;br /&gt;
   (2) select start -&amp;gt; program -&amp;gt; MikTex 2.x -&amp;gt; setting. &lt;br /&gt;
       You will see a dialog box &amp;quot;MikTeX Options&amp;quot;.&lt;br /&gt;
   (3) Select &amp;quot;General&amp;quot; tab and then click &amp;quot;Refresh FNDB&amp;quot; to update to the miktex database.&lt;br /&gt;
   &lt;br /&gt;
  This process makes the bsymb.sty can be used everywhere without copying to any folders.&lt;br /&gt;
&lt;br /&gt;
== Old releases ==&lt;br /&gt;
B2Latex 0.7.0 is now available from the Rodin update site.&lt;br /&gt;
This release has been tested with Rodin 3.2.&lt;br /&gt;
&lt;br /&gt;
B2Latex 0.5.5, is now available from the Rodin update site.&lt;br /&gt;
This release is for the Rodin 2.5 up to Rodin 3.x.&lt;br /&gt;
&lt;br /&gt;
B2Latex 0.5.4, is now available from the Rodin update site.&lt;br /&gt;
This release is for the Rodin 2.4.x or higher&lt;br /&gt;
&lt;br /&gt;
B2Latex 0.5.3, is now available from the Rodin update site.&lt;br /&gt;
This release is for the Rodin 2.4.x or higher&lt;br /&gt;
&lt;br /&gt;
B2Latex 0.5.2, is now available from the Rodin update site.&lt;br /&gt;
This release is for the Rodin 2.4.x or higher&lt;br /&gt;
&lt;br /&gt;
B2Latex 0.5.1, is now available from the Rodin update site.&lt;br /&gt;
This release is for the Rodin 2.4.x or higher&lt;br /&gt;
&lt;br /&gt;
B2Latex 0.5.0, is now available from the Rodin update site.&lt;br /&gt;
This release is for the Rodin 0.9.2.x or higher. &lt;br /&gt;
&lt;br /&gt;
B2Latex 0.4.1 is required for the Rodin 0.9.1. &lt;br /&gt;
If you want to use the Rodin 0.8.x, you need to install the release 0.3.0 instead.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;How to use old versions?&#039;&#039;&lt;br /&gt;
After installation, releases 0.3.x up to 0.5.0, you will see an LX entry in the context menu in the Event-B perspective. &lt;br /&gt;
Select the Machine or Context you want to translate to Latex and then press the LX button. &lt;br /&gt;
A latex source file will be generated in a folder named &#039;&#039;latex&#039;&#039; &lt;br /&gt;
in your Event-B project directory (i.e. ...\workspaceName\projectName\latex\*.tex) together &lt;br /&gt;
with a style file named &#039;&#039;b2latex.sty&#039;&#039;. bsymb.sty and b2latex.sty are required to process the latex.&lt;br /&gt;
Run latex on the source files using your own latex installation. &lt;br /&gt;
&lt;br /&gt;
bsymb.sty can be dowloaded from http://www.event-b.org or http://sourceforge.net/projects/rodin-b-sharp/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation]]&lt;br /&gt;
[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Relation_Rewrite_Rules&amp;diff=14562</id>
		<title>Relation Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Relation_Rewrite_Rules&amp;diff=14562"/>
		<updated>2024-06-03T15:13:55Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Rules DEF_EQUAL_FUN_IMAGE and SIMP_SPECIAL_IN_*ID have been implemented in Rodin 3.9&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_SETENUM}}||&amp;lt;math&amp;gt;  \dom (\{ x \mapsto  a, \ldots , y \mapsto  b\} ) \;\;\defi\;\;  \{ x, \ldots , y\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_CONVERSE}}||&amp;lt;math&amp;gt;  \dom (r^{-1} ) \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_SETENUM}}||&amp;lt;math&amp;gt;  \ran (\{ x \mapsto  a, \ldots , y \mapsto  b\} ) \;\;\defi\;\;  \{ a, \ldots , b\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_CONVERSE}}||&amp;lt;math&amp;gt;  \ran (r^{-1} ) \;\;\defi\;\;  \dom (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||&amp;lt;math&amp;gt;  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OVERL}}||&amp;lt;math&amp;gt;r_1 \ovl  \cdots  \ovl r_n \defi r_1 \ovl \cdots \ovl r_{i-1} \ovl r_{i+1} \ovl \cdots \ovl r_n&amp;lt;/math&amp;gt;|| there is a &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;1\leq i &amp;lt; j \leq n&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r_j&amp;lt;/math&amp;gt; are syntactically equal. ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_OVERL_CPROD}}||&amp;lt;math&amp;gt; r\ovl\cdots\ovl\mathit{Ty}\ovl\cdots\ovl s \;\defi\;\; \mathit{Ty}\ovl\cdots\ovl s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMRES_L}}||&amp;lt;math&amp;gt;  \emptyset  \domres  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMRES_R}}||&amp;lt;math&amp;gt;  S \domres  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOMRES}}||&amp;lt;math&amp;gt; \mathit{Ty} \domres  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMRES_DOM}}||&amp;lt;math&amp;gt;  \dom (r) \domres  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMRES_RAN}}||&amp;lt;math&amp;gt;  \ran (r) \domres  r^{-1}  \;\;\defi\;\;  r^{-1} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMRES_DOMRES_ID}}||&amp;lt;math&amp;gt;  S \domres  (T \domres \id) \;\;\defi\;\;  (S \binter  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMRES_DOMSUB_ID}}||&amp;lt;math&amp;gt;  S \domres  (T \domsub \id) \;\;\defi\;\;  (S \setminus  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANRES_R}}||&amp;lt;math&amp;gt;  r \ranres  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANRES_L}}||&amp;lt;math&amp;gt;  \emptyset  \ranres  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RANRES}}||&amp;lt;math&amp;gt;  r \ranres  \mathit{Ty} \;\;\defi\;\;  r &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANRES_RAN}}||&amp;lt;math&amp;gt;  r \ranres  \ran (r) \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANRES_DOM}}||&amp;lt;math&amp;gt;  r^{-1}  \ranres  \dom (r) \;\;\defi\;\;  r^{-1} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_ID}}||&amp;lt;math&amp;gt;  \id  \ranres  S \;\;\defi\;\;  S  \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_ID}}||&amp;lt;math&amp;gt;  \id  \ransub  S \;\;\defi\;\;  S  \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id) \ranres  T \;\;\defi\;\;  (S \binter  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id) \ranres  T \;\;\defi\;\;  (T \setminus  S) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMSUB_L}}||&amp;lt;math&amp;gt;  \emptyset  \domsub  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMSUB_R}}||&amp;lt;math&amp;gt;  S \domsub  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOMSUB}}||&amp;lt;math&amp;gt; \mathit{Ty} \domsub  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMSUB_DOM}}||&amp;lt;math&amp;gt;  \dom (r) \domsub  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMSUB_RAN}}||&amp;lt;math&amp;gt;  \ran (r) \domsub  r^{-1} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMSUB_DOMRES_ID}}||&amp;lt;math&amp;gt;  S \domsub (T \domres \id ) \;\;\defi\;\;  (T \setminus S) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMSUB_DOMSUB_ID}}||&amp;lt;math&amp;gt;  S \domsub (T \domsub \id ) \;\;\defi\;\;  (S \bunion T) \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANSUB_R}}||&amp;lt;math&amp;gt;  r \ransub  \emptyset  \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANSUB_L}}||&amp;lt;math&amp;gt;  \emptyset  \ransub  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RANSUB}}||&amp;lt;math&amp;gt;  r \ransub  \mathit{Ty} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANSUB_DOM}}||&amp;lt;math&amp;gt;  r^{-1} \ransub  \dom (r) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANSUB_RAN}}||&amp;lt;math&amp;gt;  r \ransub  \ran (r) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id) \ransub  T \;\;\defi\;\;  (S \setminus T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id) \ransub  T \;\;\defi\;\;  (S \bunion T) \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FCOMP}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp \emptyset  \fcomp \ldots  \fcomp s \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_ID}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp \id \fcomp \ldots  \fcomp s \;\;\defi\;\;  r \fcomp \ldots  \fcomp s &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_R}}||&amp;lt;math&amp;gt;  r \fcomp \mathit{Ty} \;\;\defi\;\;  \dom (r) \cprod  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_L}}||&amp;lt;math&amp;gt; \mathit{Ty} \fcomp r \;\;\defi\;\;  \mathit{Ta} \cprod  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp S \domres \id \fcomp T \domres \id \fcomp \ldots  s \;\;\defi\;\;  r \fcomp \ldots  \fcomp (S \binter  T) \domres \id \fcomp \ldots  \fcomp s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BCOMP}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  \emptyset  \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_ID}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  \id \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  r \bcomp  \ldots  \bcomp  s &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_L}}||&amp;lt;math&amp;gt; \mathit{Ty} \bcomp  r \;\;\defi\;\;  \dom (r) \cprod  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_R}}||&amp;lt;math&amp;gt;  r \bcomp  \mathit{Ty} \;\;\defi\;\;  \mathit{Ta} \cprod  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_BCOMP_ID}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp S \domres \id \bcomp T \domres \id \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  r \bcomp  \ldots  \bcomp (S \binter  T) \domres \id \bcomp  \ldots  \bcomp  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DPROD_R}}||&amp;lt;math&amp;gt;  r \dprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \dprod  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DPROD_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})  \dprod  (\mathit{U} \cprod \mathit{V})  \;\;\defi\;\;  \mathit{S}  \binter  \mathit{U}  \cprod  (\mathit{T}  \cprod  \mathit{V}) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PPROD_R}}||&amp;lt;math&amp;gt;  r \pprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \pprod  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_PPROD_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})  \pprod  (\mathit{U} \cprod \mathit{V}) \;\;\defi\;\;  (\mathit{S} \cprod \mathit{U}) \cprod (\mathit{T} \cprod \mathit{V}) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RELIMAGE_R}}||&amp;lt;math&amp;gt;  r[\emptyset ] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RELIMAGE_L}}||&amp;lt;math&amp;gt;  \emptyset [S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RELIMAGE}}||&amp;lt;math&amp;gt;  r[Ty] \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_DOM}}||&amp;lt;math&amp;gt;  r[\dom (r)] \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_ID}}||&amp;lt;math&amp;gt;  \id[T] \;\;\defi\;\;  T &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id)[T] \;\;\defi\;\;  S \binter  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id)[T] \;\;\defi\;\;  T \setminus S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CPROD_SING}}||&amp;lt;math&amp;gt;  (\{ E\}  \cprod  S)[\{ E\} ] \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_SING_MAPSTO}}||&amp;lt;math&amp;gt;  \{ E \mapsto  F\} [\{ E\} ] \;\;\defi\;\;  \{ F\} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CONVERSE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  S)^{-1} [S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CONVERSE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  S)^{-1} [S] \;\;\defi\;\;  r^{-1} [S] &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_CONVERSE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)^{-1} [T] \;\;\defi\;\;  r^{-1} [T] \setminus S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  S)[T] \;\;\defi\;\;  r[T] \setminus S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  S)[T] \;\;\defi\;\;  r[T] \binter  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)[S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)[T] \;\;\defi\;\;  r[T \setminus S] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_DOMRES}}||&amp;lt;math&amp;gt;  (S \domres  r)[T] \;\;\defi\;\;  r[S \binter  T] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CONVERSE}}||&amp;lt;math&amp;gt;  \emptyset ^{-1}  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_ID}}||&amp;lt;math&amp;gt;  \id^{-1}  \;\;\defi\;\;  \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})^{-1}  \;\;\defi\;\;  \mathit{T} \cprod \mathit{S} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_SETENUM}}||&amp;lt;math&amp;gt;  \{ x \mapsto  a, \ldots , y \mapsto  b\} ^{-1}  \;\;\defi\;\;  \{ a \mapsto  x, \ldots , b \mapsto  y\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_COMPSET}}||&amp;lt;math&amp;gt;  \{ X \qdot  P \mid  x\mapsto y\} ^{-1}  \;\;\defi\;\;  \{ X \qdot  P \mid  y\mapsto x\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_ID}}||&amp;lt;math&amp;gt;  \dom (\id) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_ID}}||&amp;lt;math&amp;gt;  \ran (\id) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID_L}}||&amp;lt;math&amp;gt;  (S \domres \id) \fcomp r \;\;\defi\;\;  S \domres  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID_R}}||&amp;lt;math&amp;gt;  r \fcomp (S \domres \id) \;\;\defi\;\;  r \ranres  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_REL_R}}||&amp;lt;math&amp;gt;  S \rel  \emptyset  \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\srel  \pfun  \pinj  \psur&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_REL_L}}||&amp;lt;math&amp;gt;  \emptyset  \rel  S \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\trel  \pfun  \tfun  \pinj  \tinj&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_PRJ1}}||&amp;lt;math&amp;gt;  \prjone (E \mapsto  F) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_PRJ2}}||&amp;lt;math&amp;gt;  \prjtwo (E \mapsto  F) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_PRJ1}}||&amp;lt;math&amp;gt;  \dom (\prjone) \;\;\defi\;\;  S \cprod T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_PRJ2}}||&amp;lt;math&amp;gt;  \dom (\prjtwo) \;\;\defi\;\; S \cprod T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_PRJ1}}||&amp;lt;math&amp;gt;  \ran (\prjone) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_PRJ2}}||&amp;lt;math&amp;gt;  \ran (\prjtwo) \;\;\defi\;\;  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_LAMBDA}}||&amp;lt;math&amp;gt;  (\lambda x \qdot  P(x) \mid  E(x))(y) \;\;\defi\;\;  E(y) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_LAMBDA}}||&amp;lt;math&amp;gt;\dom(\{x\qdot P\mid E\mapsto F) \;\;\defi\;\; \{x\qdot P\mid E\}&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_LAMBDA}}||&amp;lt;math&amp;gt;\ran(\{x\qdot P\mid E\mapsto F) \;\;\defi\;\; \{x\qdot P\mid F\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE}}||&amp;lt;math&amp;gt;E\mapsto F(E)\in F \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE_CONVERSE_L}}||&amp;lt;math&amp;gt;F^{-1}(E)\mapsto E\in F \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE_CONVERSE_R}}||&amp;lt;math&amp;gt;F(E)\mapsto E\in F^{-1} \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_SETENUM_LL}}||&amp;lt;math&amp;gt;  \{ A \mapsto  E, \ldots  , B \mapsto  E\} (x) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_SETENUM_LR}}||&amp;lt;math&amp;gt;  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} (x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_OVERL_SETENUM}}||&amp;lt;math&amp;gt;  (r \ovl  \ldots  \ovl  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} )(x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_BUNION_SETENUM}}||&amp;lt;math&amp;gt;  (r \bunion  \ldots  \bunion  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} )(x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_CPROD}}||&amp;lt;math&amp;gt;  (S \cprod  \{ F\} )(x) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_ID}}||&amp;lt;math&amp;gt;  \id (x) \;\;\defi\;\;  x &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_FUNIMAGE_CONVERSE}}||&amp;lt;math&amp;gt;  f(f^{-1} (E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_CONVERSE_FUNIMAGE}}||&amp;lt;math&amp;gt;  f^{-1}(f(E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_FUNIMAGE_CONVERSE_SETENUM}}||&amp;lt;math&amp;gt;  \{x \mapsto a, \ldots, y \mapsto b\}(\{a \mapsto x, \ldots, b \mapsto y\}(E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_DOMRES}}||&amp;lt;math&amp;gt;(E \domres F)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;(E \domsub F)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_RANRES}}||&amp;lt;math&amp;gt;(F\ranres E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_RANSUB}}||&amp;lt;math&amp;gt;(F \ransub E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_SETMINUS}}||&amp;lt;math&amp;gt;(F \setminus E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_FUNIMAGE}}||&amp;lt;math&amp;gt; f(x) = y \;\;\defi\;\; x \mapsto y \in f &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_BCOMP}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  s \fcomp \ldots  \fcomp r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_ID_SING}}||&amp;lt;math&amp;gt;  \{ E\} \domres \id \;\;\defi\;\;  \{ E \mapsto  E\} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOM}}||&amp;lt;math&amp;gt;  \dom (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RAN}}||&amp;lt;math&amp;gt;  \ran (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_CONVERSE}}||&amp;lt;math&amp;gt;  r^{-1-1}  \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_RELIMAGE_FCOMP}}||&amp;lt;math&amp;gt;  (p \fcomp q)[s] \;\;\defi\;\;  q[p[s]] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_DOMRES}}||&amp;lt;math&amp;gt;  (s \domres  p) \fcomp q \;\;\defi\;\;  s \domres  (p \fcomp q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_DOMSUB}}||&amp;lt;math&amp;gt;  (s \domsub  p) \fcomp q \;\;\defi\;\;  s \domsub  (p \fcomp q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_RANRES}}||&amp;lt;math&amp;gt;  p \fcomp (q \ranres  s) \;\;\defi\;\;  (p \fcomp q) \ranres  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_RANSUB}}||&amp;lt;math&amp;gt;  p \fcomp (q \ransub  s) \;\;\defi\;\;  (p \fcomp q) \ransub  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_FCOMP_SING}}||&amp;lt;math&amp;gt;  \{E\mapsto F\}\fcomp\{F\mapsto G\} \;\;\defi\;\;  \{E\mapsto G\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_RELDOMRAN}}||&amp;lt;math&amp;gt;  \emptyset  \strel  \emptyset  \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\tsur  \tbij&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOM}}||&amp;lt;math&amp;gt;  \dom (\mathit{Ty}) \;\;\defi\;\;  \mathit{Ta} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RAN}}||&amp;lt;math&amp;gt;  \ran (\mathit{Ty}) \;\;\defi\;\;  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_CPROD}}||&amp;lt;math&amp;gt;  \dom (E \cprod  E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_CPROD}}||&amp;lt;math&amp;gt;  \ran (E \cprod  E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_DOMRES}}||&amp;lt;math&amp;gt;\dom(A\domres f) \;\;\defi\;\; \dom(f)\binter A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_DOMSUB}}||&amp;lt;math&amp;gt;\dom(A\domsub f) \;\;\defi\;\; \dom(f)\setminus A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_RANRES}}||&amp;lt;math&amp;gt;\ran(f\ranres A) \;\;\defi\;\; \ran(f)\binter A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_RANSUB}}||&amp;lt;math&amp;gt;\ran(f\ransub A) \;\;\defi\;\; \ran(f)\setminus A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOM}}||&amp;lt;math&amp;gt;  E \in  \dom (r) \;\;\defi\;\;  \exists y \qdot  E \mapsto  y \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RAN}}||&amp;lt;math&amp;gt;  F \in  \ran (r) \;\;\defi\;\;  \exists x \qdot  x \mapsto  F  \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_CONVERSE}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r^{-1}  \;\;\defi\;\;  F \mapsto  E \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOMRES}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \domres  r \;\;\defi\;\;  E \in  S \land  E \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RANRES}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r \ranres  T \;\;\defi\;\;  E \mapsto  F \in  r \land  F \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOMSUB}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \domsub  r \;\;\defi\;\;  E \notin  S \land  E \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RANSUB}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r \ranres  T \;\;\defi\;\;  E \mapsto  F \in  r \land  F \notin  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELIMAGE}}||&amp;lt;math&amp;gt;  F \in  r[w] \;\;\defi\;\;  \exists x \qdot  x \in  w \land  x \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_FCOMP}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  (p \fcomp q) \;\;\defi\;\;  \exists x \qdot  E \mapsto  x \in  p \land  x \mapsto  F \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_OVERL}}||&amp;lt;math&amp;gt;  p \ovl  q \;\;\defi\;\;  (\dom (q) \domsub  p) \bunion  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_ID}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  \id \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DPROD}}||&amp;lt;math&amp;gt;  E \mapsto  (F \mapsto  G) \in  p \dprod  q \;\;\defi\;\;  E \mapsto  F \in  p \land  E \mapsto  G \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_PPROD}}||&amp;lt;math&amp;gt;  (E \mapsto  G) \mapsto  (F \mapsto  H) \in  p \pprod  q \;\;\defi\;\;  E \mapsto  F \in  p \land  G \mapsto  H \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_REL}}||&amp;lt;math&amp;gt;  r \in  S \rel  T \;\;\defi\;\;  r\subseteq S\cprod T&amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELDOM}}||&amp;lt;math&amp;gt;  r \in  S \trel  T \;\;\defi\;\;  r \in  S \rel  T \land  \dom (r) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELRAN}}||&amp;lt;math&amp;gt;  r \in  S \srel  T \;\;\defi\;\;  r \in  S \rel  T \land  \ran (r) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELDOMRAN}}||&amp;lt;math&amp;gt;  r \in  S \strel  T \;\;\defi\;\;  r \in  S \rel  T \land  \dom (r) = S \land  \ran (r) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_FCT}}||&amp;lt;math&amp;gt;\begin{array}{rcl}&lt;br /&gt;
 f \in  S \pfun  T &amp;amp; \defi &amp;amp; f \in  S \rel  T  \\  &amp;amp; \land &amp;amp; (\forall x,y,z \qdot  x \mapsto  y \in  f \land  x \mapsto  z \in  f \limp  y = z) \\ \end{array} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TFCT}}||&amp;lt;math&amp;gt;  f \in  S \tfun  T \;\;\defi\;\;  f \in  S \pfun  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_INJ}}||&amp;lt;math&amp;gt;  f \in  S \pinj  T \;\;\defi\;\;  f \in  S \pfun  T \land  f^{-1}  \in  T \pfun  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TINJ}}||&amp;lt;math&amp;gt;  f \in  S \tinj  T \;\;\defi\;\;  f \in  S \pinj  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SURJ}}||&amp;lt;math&amp;gt;  f \in  S \psur  T \;\;\defi\;\;  f \in  S \pfun  T \land  \ran (f) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TSURJ}}||&amp;lt;math&amp;gt;  f \in  S \tsur  T \;\;\defi\;\;  f \in  S \psur  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BIJ}}||&amp;lt;math&amp;gt;  f \in  S \tbij  T \;\;\defi\;\;  f \in  S \tinj  T \land  \ran (f) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DISTRI_BCOMP_BUNION}}||&amp;lt;math&amp;gt;  r \bcomp  (s \bunion  t) \;\;\defi\;\;  (r \bcomp  s) \bunion  (r \bcomp  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_FCOMP_BUNION_R}}||&amp;lt;math&amp;gt;  p \fcomp (q \bunion  r) \;\;\defi\;\;  (p \fcomp q) \bunion  (p \fcomp r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_FCOMP_BUNION_L}}||&amp;lt;math&amp;gt;  (q \bunion  r) \fcomp p \;\;\defi\;\;  (q \fcomp p) \bunion  (r \fcomp p) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_BUNION}}||&amp;lt;math&amp;gt;  r \dprod  (s \bunion  t) \;\;\defi\;\;  (r \dprod  s) \bunion  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_BINTER}}||&amp;lt;math&amp;gt;  r \dprod  (s \binter  t) \;\;\defi\;\;  (r \dprod  s) \binter  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_SETMINUS}}||&amp;lt;math&amp;gt;  r \dprod  (s \setminus t) \;\;\defi\;\;  (r \dprod  s) \setminus (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_OVERL}}||&amp;lt;math&amp;gt;  r \dprod  (s \ovl  t) \;\;\defi\;\;  (r \dprod  s) \ovl  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_BUNION}}||&amp;lt;math&amp;gt;  r \pprod  (s \bunion  t) \;\;\defi\;\;  (r \pprod  s) \bunion  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_BINTER}}||&amp;lt;math&amp;gt;  r \pprod  (s \binter  t) \;\;\defi\;\;  (r \pprod  s) \binter  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_SETMINUS}}||&amp;lt;math&amp;gt;  r \pprod  (s \setminus t) \;\;\defi\;\;  (r \pprod  s) \setminus (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_OVERL}}||&amp;lt;math&amp;gt;  r \pprod  (s \ovl  t) \;\;\defi\;\;  (r \pprod  s) \ovl  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_OVERL_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ovl  r \;\;\defi\;\;  (p \ovl  r) \bunion  (q \ovl  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_OVERL_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ovl  r \;\;\defi\;\;  (p \ovl  r) \binter  (q \ovl  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BUNION_R}}||&amp;lt;math&amp;gt;  s \domres  (p \bunion  q) \;\;\defi\;\;  (s \domres  p) \bunion  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BUNION_L}}||&amp;lt;math&amp;gt;  (s \bunion  t) \domres  r \;\;\defi\;\;  (s \domres  r) \bunion  (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BINTER_R}}||&amp;lt;math&amp;gt;  s \domres  (p \binter  q) \;\;\defi\;\;  (s \domres  p) \binter  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BINTER_L}}||&amp;lt;math&amp;gt;  (s \binter  t) \domres  r \;\;\defi\;\;  (s \domres  r) \binter  (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_SETMINUS_R}}||&amp;lt;math&amp;gt;  s \domres  (p \setminus q) \;\;\defi\;\;  (s \domres  p) \setminus (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_SETMINUS_L}}||&amp;lt;math&amp;gt;  (s \setminus t) \domres  r \;\;\defi\;\;  (s \domres  r) \setminus (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_DPROD}}||&amp;lt;math&amp;gt;  s \domres  (p \dprod  q) \;\;\defi\;\;  (s \domres  p) \dprod  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_OVERL}}||&amp;lt;math&amp;gt;  s \domres  (r \ovl  q) \;\;\defi\;\;  (s \domres  r) \ovl  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BUNION_R}}||&amp;lt;math&amp;gt;  s \domsub  (p \bunion  q) \;\;\defi\;\;  (s \domsub  p) \bunion  (s \domsub  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BUNION_L}}||&amp;lt;math&amp;gt;  (s \bunion  t) \domsub  r \;\;\defi\;\;  (s \domsub  r) \binter  (t \domsub  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BINTER_R}}||&amp;lt;math&amp;gt;  s \domsub  (p \binter  q) \;\;\defi\;\;  (s \domsub  p) \binter  (s \domsub  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BINTER_L}}||&amp;lt;math&amp;gt;  (s \binter  t) \domsub  r \;\;\defi\;\;  (s \domsub  r) \bunion  (t \domsub  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMSUB_DPROD}}||&amp;lt;math&amp;gt;  A \domsub  (r \dprod  s) \;\;\defi\;\;  (A \domsub  r) \dprod  (A \domsub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMSUB_OVERL}}||&amp;lt;math&amp;gt;  A \domsub  (r \ovl  s) \;\;\defi\;\;  (A \domsub  r) \ovl  (A \domsub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BUNION_R}}||&amp;lt;math&amp;gt;  r \ranres (s \bunion t) \;\;\defi\;\;  (r \ranres  s) \bunion  (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \bunion  (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BINTER_R}}||&amp;lt;math&amp;gt;  r \ranres (s \binter t) \;\;\defi\;\;  (r \ranres  s) \binter  (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \binter  (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_RANRES_SETMINUS_R}}||&amp;lt;math&amp;gt;  r \ranres  (s \setminus t) \;\;\defi\;\;  (r \ranres  s) \setminus (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_RANRES_SETMINUS_L}}||&amp;lt;math&amp;gt;  (p \setminus q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \setminus (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BUNION_R}}||&amp;lt;math&amp;gt;  r \ransub (s\bunion t) \;\;\defi\;\;  (r \ransub  s) \binter  (r \ransub  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ransub  s \;\;\defi\;\;  (p \ransub  s) \bunion  (q \ransub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BINTER_R}}||&amp;lt;math&amp;gt;  r \ransub (s \binter t) \;\;\defi\;\;  (r \ransub  s) \bunion  (r \ransub  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ransub  s \;\;\defi\;\;  (p \ransub  s) \binter  (q \ransub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_CONVERSE_BUNION}}||&amp;lt;math&amp;gt;  (p \bunion  q)^{-1}  \;\;\defi\;\;  p^{-1}  \bunion  q^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_BINTER}}||&amp;lt;math&amp;gt;  (p \binter  q)^{-1}  \;\;\defi\;\;  p^{-1}  \binter  q^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_SETMINUS}}||&amp;lt;math&amp;gt;  (r \setminus s)^{-1}  \;\;\defi\;\;  r^{-1}  \setminus s^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_BCOMP}}||&amp;lt;math&amp;gt;  (r \bcomp  s)^{-1}  \;\;\defi\;\;  (s^{-1}  \bcomp  r^{-1} ) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_FCOMP}}||&amp;lt;math&amp;gt;  (p \fcomp q)^{-1}  \;\;\defi\;\;  (q^{-1}  \fcomp p^{-1} ) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_PPROD}}||&amp;lt;math&amp;gt;  (r \pprod  s)^{-1}  \;\;\defi\;\;  r^{-1}  \pprod  s^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_DOMRES}}||&amp;lt;math&amp;gt;  (s \domres  r)^{-1}  \;\;\defi\;\;  r^{-1}  \ranres  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_DOMSUB}}||&amp;lt;math&amp;gt;  (s \domsub  r)^{-1}  \;\;\defi\;\;  r^{-1}  \ransub  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  s)^{-1}  \;\;\defi\;\;  s \domres  r^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  s)^{-1}  \;\;\defi\;\;  s \domsub  r^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOM_BUNION}}||&amp;lt;math&amp;gt;  \dom (r \bunion  s) \;\;\defi\;\;  \dom (r) \bunion  \dom (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RAN_BUNION}}||&amp;lt;math&amp;gt;  \ran (r \bunion  s) \;\;\defi\;\;  \ran (r) \bunion  \ran (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RELIMAGE_BUNION_R}}||&amp;lt;math&amp;gt;  r[S \bunion  T] \;\;\defi\;\;  r[S] \bunion  r[T] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RELIMAGE_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q)[S] \;\;\defi\;\;  p[S] \bunion  q[S] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_DOM_TOTALREL}}||&amp;lt;math&amp;gt;  \dom (r) \;\;\defi\;\;  E &amp;lt;/math&amp;gt; || with hypothesis &amp;lt;math&amp;gt;r \in E \ \mathit{op}\  F&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel, \strel, \tfun, \tinj, \tsur, \tbij&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_RAN_SURJREL}}||&amp;lt;math&amp;gt;  \ran (r) \;\;\defi\;\;  F &amp;lt;/math&amp;gt; || with hypothesis &amp;lt;math&amp;gt;r \in E \ \mathit{op}\  F&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\srel,\strel, \psur, \tsur, \tbij&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_PRJ1_SURJ}}||&amp;lt;math&amp;gt;\prjone \in\mathit{Ty}_1\ \mathit{op}\ \mathit{Ty}_2\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathit{Ty}_2&amp;lt;/math&amp;gt; are types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel, \trel, \srel, \strel, \pfun, \tfun, \psur, \tsur &amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_PRJ2_SURJ}}||&amp;lt;math&amp;gt;\prjtwo \in\mathit{Ty}_1\ \mathit{op}\ \mathit{Ty}_2\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathit{Ty}_2&amp;lt;/math&amp;gt; are types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel, \trel, \srel, \strel, \pfun, \tfun, \psur, \tsur &amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_ID_BIJ}}||&amp;lt;math&amp;gt;\id \in\mathit{Ty}\ \mathit{op}\ \mathit{Ty}\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is any arrow ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAPSTO_PRJ1_PRJ2}}||&amp;lt;math&amp;gt;\prjone(E)\mapsto\prjtwo(E)\;\;\defi\;\; E &amp;lt;/math&amp;gt; ||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_EXPAND_PRJS}}||&amp;lt;math&amp;gt; E \;\;\defi\;\; \prjone(E) \mapsto \prjtwo(E) &amp;lt;/math&amp;gt; || ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_SUCC}}||&amp;lt;math&amp;gt;\dom(\usucc) \;\;\defi\;\; \intg&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_SUCC}}||&amp;lt;math&amp;gt;\ran(\usucc) \;\;\defi\;\; \intg&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_MULTI_IN_BUNION}}||&amp;lt;math&amp;gt; E\in A\bunion\cdots\bunion\left\{\cdots, E,\cdots\right\}\bunion\cdots\bunion B\;\;\defi\;\; \btrue&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_MULTI_IN_SETMINUS}}||&amp;lt;math&amp;gt; E\in S\setminus\left\{\cdots, E,\cdots\right\} \;\;\defi\;\; \bfalse&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_PRED}}||&amp;lt;math&amp;gt; \upred\;\;\defi\;\; \usucc^{-1}&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN_ID}}||&amp;lt;math&amp;gt; E \mapsto E \in \id \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN_SETMINUS_ID}}||&amp;lt;math&amp;gt;E \mapsto E \in r \setminus \id \;\;\defi\;\; \bfalse&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN_DOMRES_ID}}||&amp;lt;math&amp;gt;E \mapsto E \in S \domres \id \;\;\defi\;\; E \in S&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN_SETMINUS_DOMRES_ID}}||&amp;lt;math&amp;gt;E \mapsto E \in r \setminus (S \domres \id) \;\;\defi\;\; E \mapsto E \in S \domsub r&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14561</id>
		<title>Arithmetic Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14561"/>
		<updated>2024-06-03T15:11:31Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Rules DEF_EXPN_STEP, SIMP_{MIN,MAX}_IN and SIMP_KBOOL_LIT_EQUAL_TRUE have been implemented in Rodin 3.9&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_0}}||&amp;lt;math&amp;gt;  0 \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_1}}||&amp;lt;math&amp;gt;  E \,\bmod\,  1 \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_SING}}||&amp;lt;math&amp;gt;  \min (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_SING}}||&amp;lt;math&amp;gt;  \max (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL}}||&amp;lt;math&amp;gt;  \min (\nat ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL1}}||&amp;lt;math&amp;gt;  \min (\natn ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \min (S \bunion  \ldots  \bunion  \{ \min (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp; \min (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\ \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \max (S \bunion  \ldots  \bunion  \{ \max (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp;  \max (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\  \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_UPTO}}||&amp;lt;math&amp;gt;  \min (E \upto  F) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_UPTO}}||&amp;lt;math&amp;gt;  \max (E \upto  F) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_IN}}||&amp;lt;math&amp;gt;  \min (S) \in S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_IN}}||&amp;lt;math&amp;gt;  \max (S) \in S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MIN}}||&amp;lt;math&amp;gt;  \min (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \min (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MAX}}||&amp;lt;math&amp;gt;  \max (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \max (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \geq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CARD}}||&amp;lt;math&amp;gt;  \card (\emptyset ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_SING}}||&amp;lt;math&amp;gt;  \card (\{ E\} ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_CARD}}||&amp;lt;math&amp;gt;  \card (S) = 0 \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_POW}}||&amp;lt;math&amp;gt;  \card (\pow (S)) \;\;\defi\;\;  2\expn{\card(S)} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_BUNION}}||&amp;lt;math&amp;gt;  \card (S \bunion  T) \;\;\defi\;\;  \card (S) + \card (T) - \card (S \binter  T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS}}||&amp;lt;math&amp;gt;\card(S\setminus T)\;\;\defi\;\;\card(S) - \card(T)&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;T\subseteq S&amp;lt;/math&amp;gt; and either &amp;lt;math&amp;gt;\finite(S)&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;\finite(T)&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_SETENUM}}||&amp;lt;math&amp;gt;\card(S\setminus\{E_1,\ldots,E_n\})\;\;\defi\;\;\card(S) - \card(\{E_1,\ldots,E_n\})&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;E_i\in S&amp;lt;/math&amp;gt; for all &amp;lt;math&amp;gt;i\in 1\upto n&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_CONVERSE}}||&amp;lt;math&amp;gt;  \card (r^{-1} ) \;\;\defi\;\;  \card (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID}}||&amp;lt;math&amp;gt;  \card (\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow (S \cprod S) &amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID_DOMRES}}||&amp;lt;math&amp;gt;  \card (S\domres\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1}}||&amp;lt;math&amp;gt;  \card (\prjone) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2}}||&amp;lt;math&amp;gt;  \card (\prjtwo) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjone) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjtwo) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_LAMBDA}}||&amp;lt;math&amp;gt; \card(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\; \card(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_CARD_UPTO}}||&amp;lt;math&amp;gt;  \card (i \upto  j) \;\;\defi\;\;  j-i+1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_TYPE_CARD}}||&amp;lt;math&amp;gt;  \card (\mathit{Tenum}) \;\;\defi\;\;  N &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Tenum}&amp;lt;/math&amp;gt; is a carrier set containing &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; elements ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) \geq  1 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_1}}||&amp;lt;math&amp;gt;  1 \leq  \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_0}}||&amp;lt;math&amp;gt;  0 \leq  \card (S) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) \geq  0 \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) &amp;gt; 0 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT_CARD_0}}||&amp;lt;math&amp;gt;  0 &amp;lt; \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) = 1 \;\;\defi\;\;  \exists x \qdot  S = \{ x\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL}}||&amp;lt;math&amp;gt;  \card (S) \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL1}}||&amp;lt;math&amp;gt;  \card (S) \in  \natn  \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL}}||&amp;lt;math&amp;gt;  i \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN_NATURAL1}}||&amp;lt;math&amp;gt;  0 \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL1}}||&amp;lt;math&amp;gt;  i \in  \natn  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_UPTO}}||&amp;lt;math&amp;gt;  i \upto  j \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;j &amp;lt; i&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL}}||&amp;lt;math&amp;gt;  -i \in  \nat  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL1}}||&amp;lt;math&amp;gt;  -i \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL}}||&amp;lt;math&amp;gt;x \in \nat  \;\;\defi\;\;  0 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL1}}||&amp;lt;math&amp;gt;x \in \natn  \;\;\defi\;\;  1 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_TRUE}}||&amp;lt;math&amp;gt;  \bool (P) = \True  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_FALSE}}||&amp;lt;math&amp;gt;  \bool (P) = \False  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KBOOL_LIT_EQUAL_TRUE}}||&amp;lt;math&amp;gt; \bool (B = \True) \;\;\defi\;\; B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MIN}}||&amp;lt;math&amp;gt;  E = \min (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \leq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MAX}}||&amp;lt;math&amp;gt;  E = \max (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \geq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PLUS}}||&amp;lt;math&amp;gt;  E + \ldots  + 0 + \ldots  + F \;\;\defi\;\;  E + \ldots  + F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_R}}||&amp;lt;math&amp;gt;  E - 0 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_L}}||&amp;lt;math&amp;gt;  0 - E \;\;\defi\;\;  -E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_MINUS}}||&amp;lt;math&amp;gt;   - (- E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_UNMINUS}}||&amp;lt;math&amp;gt; E  - (- F) \;\;\defi\;\;  E + F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;(-F)&amp;lt;/math&amp;gt; is a unary minus expression or a negative literal ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS}}||&amp;lt;math&amp;gt;  E - E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_L}}||&amp;lt;math&amp;gt; (A + \ldots + C + \ldots + B) - C \;\;\defi\;\; A + \ldots + B &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_R}}||&amp;lt;math&amp;gt; C - (A + \ldots + C + \ldots + B)  \;\;\defi\;\;  -(A + \ldots + B) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_PLUS}}||&amp;lt;math&amp;gt; (A + \ldots + E + \ldots + B) - (C + \ldots + E + \ldots + D)  \;\;\defi\;\; (A + \ldots + B) - (C + \ldots + D) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_PLUS_MINUS}}||&amp;lt;math&amp;gt;(A + \ldots + D + \ldots + (C - D) + \ldots + B) \;\;\defi\;\; A + \ldots + C + \ldots + B  &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_PLUS}}||&amp;lt;math&amp;gt; A + \ldots + E + \ldots + B  &amp;lt; C + \ldots + E + \ldots + D   \;\;\defi\;\; A + \ldots + B &amp;lt; C + \ldots + D &amp;lt;/math&amp;gt;|| where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt;||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_R}}||&amp;lt;math&amp;gt; C &amp;lt; A + \ldots + C \ldots + B   \;\;\defi\;\;   0 &amp;lt; A + \ldots + B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_L}}||&amp;lt;math&amp;gt; A + \ldots + C \ldots + B &amp;lt; C   \;\;\defi\;\;   A + \ldots + B &amp;lt; 0 &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_R}}||&amp;lt;math&amp;gt; A - C &amp;lt; B - C  \;\;\defi\;\; A &amp;lt; B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_L}}||&amp;lt;math&amp;gt; C - A &amp;lt; C - B  \;\;\defi\;\; B &amp;lt; A &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_0}}||&amp;lt;math&amp;gt;  E * \ldots  * 0 * \ldots  * F \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_1}}||&amp;lt;math&amp;gt;  E * \ldots  * 1 * \ldots  * F \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_EVEN}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;|| if an even number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_ODD}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  -(E * \ldots  * F) &amp;lt;/math&amp;gt;|| if an odd number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MINUS}}||&amp;lt;math&amp;gt;   - (i) \;\;\defi\;\;  (-i) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL}}||&amp;lt;math&amp;gt;  i = j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE}}||&amp;lt;math&amp;gt;  i \leq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT}}||&amp;lt;math&amp;gt;  i &amp;lt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE}}||&amp;lt;math&amp;gt;  i \geq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT}}||&amp;lt;math&amp;gt;  i &amp;gt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DIV_MINUS}}||&amp;lt;math&amp;gt;  (- E) \div  (-F) \;\;\defi\;\;  E \div  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_1}}||&amp;lt;math&amp;gt;  E \div  1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_0}}||&amp;lt;math&amp;gt;  0 \div  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_R}}||&amp;lt;math&amp;gt;  E ^ 1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_L}}||&amp;lt;math&amp;gt;  1 ^ E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_0}}||&amp;lt;math&amp;gt;  E ^ 0 \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EXPN_STEP}}||&amp;lt;math&amp;gt; E ^ P \;\;\defi\;\; E * E ^{(P - 1)} &amp;lt;/math&amp;gt;|| with an additional PO &amp;lt;math&amp;gt;\lnot\, P = 0&amp;lt;/math&amp;gt; || M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LE}}||&amp;lt;math&amp;gt;  E \leq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LT}}||&amp;lt;math&amp;gt;  E &amp;lt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GE}}||&amp;lt;math&amp;gt;  E \geq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GT}}||&amp;lt;math&amp;gt;  E &amp;gt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV}}||&amp;lt;math&amp;gt;  E \div  E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV_PROD}}||&amp;lt;math&amp;gt;  (X * \ldots * E * \ldots * Y) \div  E \;\;\defi\;\;  X * \ldots * Y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MOD}}||&amp;lt;math&amp;gt;  E \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_PLUS}}||&amp;lt;math&amp;gt;  a * (b + c) \;\;\defi\;\;  (a * b) + (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_MINUS}}||&amp;lt;math&amp;gt;  a * (b - c) \;\;\defi\;\;  (a * b) - (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_NOT_EQUAL}}||&amp;lt;math&amp;gt;    \lnot E = F \;\;\defi\;\;  E &amp;lt; F \lor E &amp;gt; F  &amp;lt;/math&amp;gt;|| &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; must be of Integer type ||  M &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14560</id>
		<title>Inference Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14560"/>
		<updated>2024-06-03T15:10:06Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Rule FIN_COMPSET_R has been implemented in Rodin 3.9&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;font color=red&amp;gt;CAUTION! Any modification to this page shall be announced on the [[#Mailing_lists |User]] mailing list!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Inference_Rules]].&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; in the first column are currently broken in Rodin 1.1 (see [http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2895507&amp;amp;group_id=108850&amp;amp;atid=651669 bug 2895507]).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{P} \;\;\vdash \;\; \textbf{P}^{\dagger}} &amp;lt;/math&amp;gt;|| see below for &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP_OR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{Q} \;\;\vdash \;\; \textbf{P} \lor \ldots \lor  \textbf{Q}^{\dagger} \lor \ldots \lor \textbf{R}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{Q}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CNTR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\textbf{P},\;\textbf{nP}^{\dagger} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FALSE_HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\bfalse \;\;\vdash \;\; \textbf{P}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|TRUE_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H} \;\;\vdash \;\; \btrue}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in E\;\mathit{op}\;F \;\;\vdash\;\; f\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_IMAGE_GOAL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2,\; f(E)\in S_2\;\;\vdash\;\; \mathbf{P}(f(E))}{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2\;\;\vdash\;\; \mathbf{P}(f(E))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FUN_GOAL_REC}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S_1\;\mathit{op_1}\;(S_2\;\mathit{op_2}\;(\ldots(S_n\;\mathit{op_n}(U\;\mathit{opf}\;V\;))\ldots)) \;\vdash\;\; f(E_1)(E_2)...(E_n)\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types, &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathit{opf}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DBL_HYP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H},\;\textbf{P},\;\textbf{P}  \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P},\textbf{Q} \; \; \vdash \; \;  \textbf{R}}{\textbf{H},\; \textbf{P} \land \textbf{Q} \; \; \vdash \; \;  &lt;br /&gt;
\textbf{R}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \;  \textbf{P} \qquad \textbf{H} \; \; \vdash \; \; \textbf{Q}}{\textbf{H} \; \; \vdash \; \;  \textbf{P} \; \land \; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|IMP_L1}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T}}{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{Q} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H} \;\;\vdash \;\; \textbf{P} \limp \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P} \limp \textbf{Q},  \textbf{P} \limp \textbf{R}\;\;\vdash \;\; \textbf{S}}{\textbf{H},\;\textbf{P} \limp  \textbf{Q} \land \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_OR_L}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P} \limp \textbf{R},  \textbf{Q} \limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P} \lor  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AUTO_MH}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P},\;\textbf{Q}\limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P},\; \textbf{P} \land  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (E=b)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (E=b) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (b=E)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (b=E) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|XST_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;  \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}{&lt;br /&gt;
\textbf{H},\;  \exists \, \textbf{x}\, \qdot\, \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ALL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}\; \; \vdash \; \;  \textbf{P(x)} }{ \textbf{H} \; \; \vdash \; \;  \forall \textbf{x}\, \qdot\, \textbf{P(x)} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; x=E \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; E=x \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SUBSET_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{V})}&lt;br /&gt;
{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U} \binter \dots \binter \textbf{V})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{U}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|IN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{U})}&lt;br /&gt;
{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|NOTIN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\emptyset)}&lt;br /&gt;
{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \neg\,\textbf{P}}{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \bfalse}{\textbf{H} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad\ldots\qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \lor \ldots \lor \textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \lnot\textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \limp\textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|MH}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\textbf{P} \qquad \textbf{H},\; \textbf{Q} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HM}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\neg\,\textbf{Q} \qquad \textbf{H},\; \neg\,\textbf{P} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQV_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(Q)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(Q)}}{\textbf{H(P)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(P)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQV_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(P)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(P)}}{\textbf{H(Q)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(Q)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E  &lt;br /&gt;
,\;\textbf{P}(F)\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,(G=E)  &lt;br /&gt;
,\;\textbf{P}((\{E\}) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl\{E &lt;br /&gt;
\mapsto F\})(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E \;\;\vdash\;\;\textbf{Q}(F) &lt;br /&gt;
\qquad \textbf{H},\; \neg\,(G=E)  \;\;\vdash\;\;\textbf{Q}((\{E\}) \domsub f)(G))}{\textbf{H} &lt;br /&gt;
\;\;\vdash \;\; \textbf{Q}((f\ovl\{E \mapsto F\})(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g)  ,\;\textbf{P}(g(G))\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,G \in \dom(g)  ,\;\textbf{P}((\dom(g) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl g)(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g) \;\;\vdash\;\;\textbf{Q}(g(G)) \qquad \textbf{H},\; \neg\, G \in \dom(g) \;\;\vdash\;\;\textbf{Q}((\dom(g) \domsub f)(G))}{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f\ovl g)(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \binter f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \binter T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \binter f[T]) \;\;\vdash\;\;\textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \binter T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \setminus f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \setminus T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \setminus f[T]) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \setminus T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H} \; \; \vdash \; \; \textbf{Q}(\{ f(E)\} ) }{\textbf{H} \; \; \vdash \; \;  \textbf{Q}(f[\{ E\} ])} &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H},\; \textbf{Q}(\{ f(E)\}) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[\{ E\} ]) \;\;\vdash\;\; \textbf{G} } &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(g(f(x))) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f \fcomp g)(x))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H},\; \textbf{Q}(g(f(x))) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}((f \fcomp g)(x)) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SUBSETEQ_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(T) \qquad\textbf{H} \;\;\vdash \;\; S \subseteq T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(S)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\lor\;\ldots \;\lor\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\binter\;\ldots \;\binter\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_KINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, s \in S \land \finite\,(s)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\inter(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_QINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, P \land \finite\,(E)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Inter s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\land\;\ldots \;\land\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\bunion\;\ldots \;\bunion\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_KUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S) \;\land\; (\forall s\, \qdot\, s \in S \limp \finite\,(s))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\union(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_QUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite(\{s\qdot P\mid E\})\;\land\;(\forall s\, \qdot\, P \limp \finite\,(E))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Union s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S)}{\textbf{H} \;\;\vdash \;\; \finite\,(S \;\setminus\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_COMPSET_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(\{x \,\mid\, P(x)\})}{\textbf{H} \;\;\vdash \;\; \finite\,(\{x \,\qdot\, P(x) \,\mid\, F(x)\})}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_REL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; r\in S\;\mathit{op}\;T,\; \finite\,(S),\; \finite\,(T) \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\rel T) \qquad\textbf{H} \;\;\vdash \;\; r \;\in\; S \rel T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S \rel T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(r[s])}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_DOM}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(S) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_RAN}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(T) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN1_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN2_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(s) }{\textbf{H} \;\;\vdash \;\; \finite\,(f[s])}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_LT_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \intg \setminus \natn }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_GE_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \nat }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|CARD_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b \;\;\vdash \;\; \textbf{Q}(b-a+1) \qquad \textbf{H},\, b &amp;lt; a \;\;\vdash \;\; \textbf{Q}(0) }{\textbf{H} \;\;\vdash\;\; \textbf{Q}(\card\,(a\upto b))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|CARD_EMPTY_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b,\,\textbf{P}(b-a+1)  \;\;\vdash \;\; \textbf{Q} \qquad \textbf{H},\, b &amp;lt; a ,\, \textbf{P}(0)\;\;\vdash \;\; \textbf{Q} }{\textbf{H},\,\textbf{P}(\card\,(a\upto b))  \;\;\vdash\;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subseteq T}{\textbf{H} \;\;\vdash\;\; \card(S) \leq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subseteq S}{\textbf{H} \;\;\vdash\;\; \card(S) \geq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subset T}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;lt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subset S}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;gt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S = T}{\textbf{H} \;\;\vdash\;\; \card(S) = \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card(S) - \card(S\binter T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) - \card(S\binter T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \setminus  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(T) \qquad \textbf{H},\, \textbf{P}(\card(S) * \card(T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \finite(T) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) * \card(T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \cprod  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} , [x \bcmeq E]\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\textbf{P} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\textbf{Q} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Ponens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\lnot\textbf{Q} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\lnot\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Tollens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CUT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}) \;\;\vdash \;\; \textbf{\textbf{P}} \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || hypothesis &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; is added || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EXISTS_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(E)}{\textbf{H} \;\;\vdash\;\; \exists x \qdot \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTINCT_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{\textbf{G}} \qquad  \textbf{H}, {WD}(\textbf{P}), \lnot \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || case distinction on predicate &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} \;\;\vdash \;\; \textbf{G}}{ \textbf{H}, \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H} \;\;\vdash \;\; \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} }{ \textbf{H}  \;\;\vdash\;\; \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R} }&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_REL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\rel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TREL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\trel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_PFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\pfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\tfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H}, x=0 \;\;\vdash \;\; \textbf{P}(x) \qquad \textbf{H}, n\in\nat, \textbf{P}(n) \;\;\vdash \;\; \textbf{P}(n+1)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT_COMPL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(0) \qquad \textbf{H}, n\in\nat, \forall k\qdot 0\leq k\land k &amp;lt; n \limp \textbf{P}(k) \;\;\vdash \;\; \textbf{P}(n)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Those following rules have been implemented in the reasoner GeneralizedModusPonens.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{P,\varphi(\btrue) \vdash G}{P,\varphi(P^{\dagger}) \vdash G} &amp;lt;/math&amp;gt; ||  see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger},\varphi(\bfalse) \vdash G}{nP^{\dagger},\varphi(P) \vdash G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{P \vdash \varphi(\btrue)}{P \vdash \varphi(P^{\dagger})} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger} \vdash \varphi(\bfalse)}{nP^{\dagger} \vdash \varphi(P)} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash \lnot nG^{\dagger}}{H,\varphi(G)\vdash \lnot nG^{\dagger}} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash \lnot G}{H,\varphi(G^{\dagger})\vdash \lnot G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n}{H,\varphi(G_i)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n}{H,\varphi(G_i^{\dagger})\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thos following rules have been implemented in the MembershipGoal reasoner.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SUBSET_SUBSETEQ}}|| &amp;lt;math&amp;gt; A\subset B\vdash A\subseteq B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DOM_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \dom(A)\subseteq\dom(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RAN_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \ran(A)\subseteq\ran(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_LR}}|| &amp;lt;math&amp;gt; A=B\vdash A\subseteq B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_RL}}|| &amp;lt;math&amp;gt; A=B\vdash B\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_CPROD}}|| &amp;lt;math&amp;gt; x\in\dom(A\cprod B)\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_CPROD}}|| &amp;lt;math&amp;gt; y\in\ran(A\cprod B)\vdash y\in B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash x\in\dom(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash y\in\ran(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SETENUM_SUBSET}}|| &amp;lt;math&amp;gt; \left\{a,\cdots,x,\cdots, z\right\}\subseteq A\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OVR_RIGHT_SUBSET}}|| &amp;lt;math&amp;gt; f\ovl\cdots\ovl g\ovl\cdots\ovl h\subseteq A\vdash g\ovl\cdots\ovl h\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RELSET_SUBSET_CPROD}}|| &amp;lt;math&amp;gt; f\in A\;op\;B\vdash f\subseteq A\cprod B&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IN_SUBSET}}|| &amp;lt;math&amp;gt; x\in A,\;\; A\subseteq B\vdash x\in B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The conventions used in this table are described in [[Variations in HYP, CNTR and GenMP]].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;RRHeader&amp;quot; text-align=&amp;quot;left&amp;quot; border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;8&amp;quot; rules=&amp;quot;all&amp;quot; frame=&amp;quot;box&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border-style:solid; border-color:#AAAAAA;  display:table; {{{style|}}}&amp;quot;&lt;br /&gt;
! &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; !! Side Condition&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b , \ \ b \ge a  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b , \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; || where a and b are integers&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;lt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;gt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a  &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \le b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \ge b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A \subseteq B, \ \ B \subseteq A  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \ \ A \subset B, \ \ B \subset A &amp;lt;/math&amp;gt; || where A and B are sets&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, B \subset A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B, \ \ A \subseteq B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot B \subset A, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot A \subseteq B  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; B \subset A, \ \ B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt;||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \ \ A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot f = e &amp;lt;/math&amp;gt; || where e and f are scalars&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot  f = e &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; || || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also [[Extension Proof Rules#Inference Rules]].&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14559</id>
		<title>Theory Plug-in Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14559"/>
		<updated>2024-05-30T14:31:11Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Update instructions to manage composite update sites&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides some documentation for developers of the Theory plug-in. Documentation for users of the plug-in is available in [[Theory Plug-in|this page]].&lt;br /&gt;
&lt;br /&gt;
== Eclipse setup ==&lt;br /&gt;
&lt;br /&gt;
* Clone the [https://sourceforge.net/p/rodin-b-sharp/theory git repository] from Sourceforge&lt;br /&gt;
* Import the subdirectories of the git repository in Eclipse (each subdirectory corresponds to an Eclipse project providing an Eclipse feature or plug-in)&lt;br /&gt;
* Open &amp;lt;code&amp;gt;org.eventb.theory.feature/org.eventb.theory.feature.target&amp;lt;/code&amp;gt; and click on &#039;&#039;Set as Active Target Platform&#039;&#039;, at the top right of the window; this assumes that the [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/org.rodinp.dev-3.5.0-9f39f1653.zip/download Rodin target platform] has been downloaded and put in &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt;: if this location is not available, or if another version of Rodin is should be targeted, edit the &amp;lt;code&amp;gt;.target&amp;lt;/code&amp;gt; file accordingly&lt;br /&gt;
&lt;br /&gt;
== Release checklist ==&lt;br /&gt;
&lt;br /&gt;
To release a new version of the plug-in:&lt;br /&gt;
&lt;br /&gt;
* Tag the last commit with the version number (remember to pass the &amp;lt;code&amp;gt;--tags&amp;lt;/code&amp;gt; flag to &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; to publish it)&lt;br /&gt;
* On Sourceforge, create a new folder with the version number in the [https://sourceforge.net/projects/rodin-b-sharp/files/Plugin_Theory/ plug-in&#039;s directory] and upload the files of the update site there (they are built in &amp;lt;code&amp;gt;org.eventb.theory.repository/target/repository&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Update the composite Eclipse repository that provides the Rodin plug-ins:&lt;br /&gt;
** Clone the &amp;lt;code&amp;gt;RodinUpdateSite&amp;lt;/code&amp;gt; folder from the [https://sourceforge.net/p/rodin-b-sharp/svn/HEAD/tree/trunk/RodinUpdateSite/ Subversion repository] and import it in Eclipse&lt;br /&gt;
** Open the &amp;lt;code&amp;gt;composite/compSite.xml&amp;lt;/code&amp;gt; file, copy the &amp;lt;code&amp;gt;&amp;amp;lt;repository location=&amp;quot;https&amp;amp;#58;//rodin-b-sharp.sourceforge.net/updates/Plugin_Theory/X.Y.Z&amp;quot; /&amp;amp;gt;&amp;lt;/code&amp;gt; line, then update the version number in that line&lt;br /&gt;
** Open the &amp;lt;code&amp;gt;composite-archive/compSite.xml&amp;lt;/code&amp;gt; file and paste the old &amp;lt;code&amp;gt;&amp;amp;lt;repository&amp;amp;gt;&amp;lt;/code&amp;gt; line copied previously&lt;br /&gt;
** Follow the instructions in the files&#039; comments to build the repositories&lt;br /&gt;
** Connect with an SFTP client to &amp;lt;code&amp;gt;web.sourceforge.net&amp;lt;/code&amp;gt; (see [https://sourceforge.net/p/forge/documentation/SFTP#for-managing-project-web-space Sourceforge&#039;s documentation]) and upload the files built previously (&amp;lt;code&amp;gt;p2.index&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeArtifacts.jar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeContent.jar&amp;lt;/code&amp;gt;):&lt;br /&gt;
*** in &amp;lt;code&amp;gt;/home/project-web/rodin-b-sharp/htdocs/updates&amp;lt;/code&amp;gt; for the files built from &amp;lt;code&amp;gt;composite/compSite.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
*** in &amp;lt;code&amp;gt;/home/project-web/rodin-b-sharp/htdocs/updates-archive&amp;lt;/code&amp;gt; for the files built from &amp;lt;code&amp;gt;composite-archive/compSite.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
* Publish the release notes in the [[Theory Release History]] page, update the table in the [[Rodin Platform Releases]] page and list the release in [[Template:Dev News]] (it is included in the front page)&lt;br /&gt;
* Announce the release on the Rodin mailing lists rodin-b-sharp-user@lists.sourceforge.net and rodin-b-sharp-announce@lists.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer documentation]]&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Rodin_Workshop_2024&amp;diff=14558</id>
		<title>Rodin Workshop 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Rodin_Workshop_2024&amp;diff=14558"/>
		<updated>2024-04-15T12:49:34Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Remove link to the website of a lawyer named Guillaume Verdier who is not me&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==11th Rodin User and Developer Workshop==&lt;br /&gt;
&lt;br /&gt;
The 11th Rodin User and Developer Workshop, 25th June, 2024, Bergamo, Italy&lt;br /&gt;
&lt;br /&gt;
Event-B is a formal method for system-level modelling and analysis. The&lt;br /&gt;
Rodin Platform is an Eclipse-based toolset for Event-B that provides&lt;br /&gt;
effective support for modelling and automated proof. The platform is open&lt;br /&gt;
source and is further extendable with plug-ins. A range of plug-ins have&lt;br /&gt;
already been developed.&lt;br /&gt;
&lt;br /&gt;
The 11th Rodin workshop will be collocated with the [https://abz-conf.org/site/2024/ ABZ 2024 Conference]. &lt;br /&gt;
&lt;br /&gt;
The purpose of this workshop  is to bring together existing and potential &lt;br /&gt;
users and developers of the Rodin  toolset and to foster a broader community &lt;br /&gt;
of Rodin users and developers.&lt;br /&gt;
&lt;br /&gt;
For Rodin users the workshop will provide an opportunity to share tool&lt;br /&gt;
experiences and to gain an understanding of on-going tool developments.&lt;br /&gt;
For plug-in developers the workshop will provide an opportunity to showcase &lt;br /&gt;
their tools and to achieve better coordination of tool development effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Call For Papers ==&lt;br /&gt;
If you are interested in giving a presentation or plug-in demonstration at the Rodin workshop please submit an abstract. We will endeavour to accommodate all submissions that are clearly relevant to Rodin and Event-B.&lt;br /&gt;
The proceedings of the workshop will be available as a technical report at the University of Southampton.&lt;br /&gt;
&lt;br /&gt;
;Submission deadline : 31st May 2024&lt;br /&gt;
;Submission to:  rodin@ecs.soton.ac.uk&lt;br /&gt;
;Submission format : extended abstract (1 to 2 page description with title and authors and references - PDF)&lt;br /&gt;
;Submission Instructions: Please indicate within the text whether the submission is about tool usage or tool development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Registration==&lt;br /&gt;
To register for the workshop, please follow the instructions on the [https://abz-conf.org/site/2024/registration/ ABZ 2024 registration page].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Organisers ==&lt;br /&gt;
&amp;lt;p&amp;gt;[https://www.southampton.ac.uk/people/5xb2d2/doctor-asieh-salehi-fathabadi Asieh Salehi Fathabadi], Senior Research Fellow, University of Southampton&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Guillaume Verdier, Université de Paris-Est Créteil&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[https://www.cs.hhu.de/lehrstuehle-und-arbeitsgruppen/softwaretechnik-und-programmiersprachen/unser-team/team/rutenkolk Kristin Rutenkolk], Heinrich Heine University Düsseldorf&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[https://sites.google.com/site/singhnne/ Neeraj Kumar Singh], Associate Professor, INPT-ENSEEIHT / IRIT, University of Toulouse&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;[https://www.jku.at/en/institute-of-software-systems-engineering/about-us/team/sebastian-stock/ Sebastian Stock], Junior Researcher, Johannes Kepler University&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Laurent Voisin, R&amp;amp;D Manager, [https://www.systerel.fr/en/ Systerel]&amp;lt;/p&amp;gt;&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Template:Main_Page/Community&amp;diff=14557</id>
		<title>Template:Main Page/Community</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Template:Main_Page/Community&amp;diff=14557"/>
		<updated>2024-04-15T12:45:57Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add Rodin workshop 2024 and remove old links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
== Displayed as follow on the Main Page ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;width:43%;border:1px solid #AAAAAA;background:#FFFFFF&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[https://wiki.event-b.org/index.php/Rodin_Workshop_2024 Rodin 2024 -- The 11th Rodin User and Developer Workshop on 25 June 2024 (co-located with ABZ2024).]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.event-b.org/index.php/Rodin_Workshop_2023 Rodin 2023 -- The 10th Rodin User and Developer Workshop on 30 May 2023 (co-located with ABZ2023).]&lt;br /&gt;
&lt;br /&gt;
[https://wiki.event-b.org/index.php/Rodin_Workshop_2021 Rodin 2021 -- The 9th Rodin User and Developer Workshop on 8 June 2021 (co-located with ABZ2021).]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.event-b.org/index.php/Rodin_Workshop_2020 Rodin 2020 (POSTPONED TO 2021) -- The 8th Rodin User and Developer Workshop on 26 May 2020 (co-located with ABZ2020).]&lt;br /&gt;
&lt;br /&gt;
[http://research.nii.ac.jp/eventb2016/ The Event-B Day at NII. November 21, 2016. NII, Tokyo, Japan.]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.event-b.org/index.php/Rodin_Workshop_2016 Rodin 2016 Workshop on 23-24 May 2016 co-located with ABZ2016.]&lt;br /&gt;
&lt;br /&gt;
[http://www.cdcc.faw.jku.at/ABZ2016/ ABZ 2016: The 5th International ABZ Conference, for ASM, Alloy, B, TLA, VDM, Z May 23-27, 2016 Linz, Austria]&lt;br /&gt;
&lt;br /&gt;
[http://research.nii.ac.jp/eventb2014/ The Event-B Day at NII. October 31, 2014. NII, Tokyo, Japan.]&lt;br /&gt;
&lt;br /&gt;
[http://wiki.event-b.org/index.php/Rodin_Workshop_2014 Rodin 2014 Workshop on 2+3 June 2014 co-located with ABZ2014.]&lt;br /&gt;
&lt;br /&gt;
[http://link.springer.com/book/10.1007/978-3-642-33170-1/page/1 The DEPLOY book was published by Springer in July 2013: Industrial deployment of system engineering methods providing high dependability and productivity, A. Romanovsky, M. Thomas (Eds). ISBN: 978-3-642-33169-5] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[[Rodin Workshop 2010]] - Programme for Rodin 2010 Workshop&lt;br /&gt;
[[Dagstuhl Seminar 2009|Industry Challenges identifed at Dagstuhl refinement seminar 2009]]&lt;br /&gt;
[[DEPLOY_Plenary_Workshop_2009|DEPLOY Plenary Meeting 2009]] - Call for Papers&lt;br /&gt;
[[Rodin Workshop 2009]] - Abstracts and slides from Rodin 2009 Workshop --&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[[Mailing lists]] - Rodin related mailing lists.&lt;br /&gt;
&lt;br /&gt;
[[Rodin Platform Releases]] - Track releases.&lt;br /&gt;
&lt;br /&gt;
[[Bugs and Feature Requests]] - Report a bug or request a new feature.&lt;br /&gt;
&lt;br /&gt;
[[Plug-in_Wishlist|Plug-in Wishlist]]&lt;br /&gt;
&lt;br /&gt;
[http://www.fm4industry.org FAQ about the use and the impact of formal engineering methods in Industry]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Do not hesitate to improve this wiki.&#039;&#039; You may find some help within the following pages:&lt;br /&gt;
&lt;br /&gt;
[[Help:Contents|Wiki Help]] - Some technical documentation about this wiki.&lt;br /&gt;
&lt;br /&gt;
[[EB:VP|Village Pump]] - Ask your questions and keep track of the main wiki events.&lt;br /&gt;
&lt;br /&gt;
[[Special:Recentchanges|Recent Changes]] - Monitor the wiki activity.&lt;br /&gt;
&lt;br /&gt;
[[Test area|Test Area]] - Wiki editing is simple. Try by yourself.&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Main page templates|Community]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Relation_Rewrite_Rules&amp;diff=14556</id>
		<title>Relation Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Relation_Rewrite_Rules&amp;diff=14556"/>
		<updated>2024-03-08T16:17:24Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add four rules related to set membership and identity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_SETENUM}}||&amp;lt;math&amp;gt;  \dom (\{ x \mapsto  a, \ldots , y \mapsto  b\} ) \;\;\defi\;\;  \{ x, \ldots , y\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_CONVERSE}}||&amp;lt;math&amp;gt;  \dom (r^{-1} ) \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_SETENUM}}||&amp;lt;math&amp;gt;  \ran (\{ x \mapsto  a, \ldots , y \mapsto  b\} ) \;\;\defi\;\;  \{ a, \ldots , b\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_CONVERSE}}||&amp;lt;math&amp;gt;  \ran (r^{-1} ) \;\;\defi\;\;  \dom (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||&amp;lt;math&amp;gt;  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OVERL}}||&amp;lt;math&amp;gt;r_1 \ovl  \cdots  \ovl r_n \defi r_1 \ovl \cdots \ovl r_{i-1} \ovl r_{i+1} \ovl \cdots \ovl r_n&amp;lt;/math&amp;gt;|| there is a &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;1\leq i &amp;lt; j \leq n&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r_j&amp;lt;/math&amp;gt; are syntactically equal. ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_OVERL_CPROD}}||&amp;lt;math&amp;gt; r\ovl\cdots\ovl\mathit{Ty}\ovl\cdots\ovl s \;\defi\;\; \mathit{Ty}\ovl\cdots\ovl s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMRES_L}}||&amp;lt;math&amp;gt;  \emptyset  \domres  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMRES_R}}||&amp;lt;math&amp;gt;  S \domres  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOMRES}}||&amp;lt;math&amp;gt; \mathit{Ty} \domres  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMRES_DOM}}||&amp;lt;math&amp;gt;  \dom (r) \domres  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMRES_RAN}}||&amp;lt;math&amp;gt;  \ran (r) \domres  r^{-1}  \;\;\defi\;\;  r^{-1} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMRES_DOMRES_ID}}||&amp;lt;math&amp;gt;  S \domres  (T \domres \id) \;\;\defi\;\;  (S \binter  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMRES_DOMSUB_ID}}||&amp;lt;math&amp;gt;  S \domres  (T \domsub \id) \;\;\defi\;\;  (S \setminus  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANRES_R}}||&amp;lt;math&amp;gt;  r \ranres  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANRES_L}}||&amp;lt;math&amp;gt;  \emptyset  \ranres  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RANRES}}||&amp;lt;math&amp;gt;  r \ranres  \mathit{Ty} \;\;\defi\;\;  r &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANRES_RAN}}||&amp;lt;math&amp;gt;  r \ranres  \ran (r) \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANRES_DOM}}||&amp;lt;math&amp;gt;  r^{-1}  \ranres  \dom (r) \;\;\defi\;\;  r^{-1} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_ID}}||&amp;lt;math&amp;gt;  \id  \ranres  S \;\;\defi\;\;  S  \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_ID}}||&amp;lt;math&amp;gt;  \id  \ransub  S \;\;\defi\;\;  S  \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id) \ranres  T \;\;\defi\;\;  (S \binter  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id) \ranres  T \;\;\defi\;\;  (T \setminus  S) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMSUB_L}}||&amp;lt;math&amp;gt;  \emptyset  \domsub  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMSUB_R}}||&amp;lt;math&amp;gt;  S \domsub  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOMSUB}}||&amp;lt;math&amp;gt; \mathit{Ty} \domsub  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMSUB_DOM}}||&amp;lt;math&amp;gt;  \dom (r) \domsub  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMSUB_RAN}}||&amp;lt;math&amp;gt;  \ran (r) \domsub  r^{-1} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMSUB_DOMRES_ID}}||&amp;lt;math&amp;gt;  S \domsub (T \domres \id ) \;\;\defi\;\;  (T \setminus S) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMSUB_DOMSUB_ID}}||&amp;lt;math&amp;gt;  S \domsub (T \domsub \id ) \;\;\defi\;\;  (S \bunion T) \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANSUB_R}}||&amp;lt;math&amp;gt;  r \ransub  \emptyset  \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANSUB_L}}||&amp;lt;math&amp;gt;  \emptyset  \ransub  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RANSUB}}||&amp;lt;math&amp;gt;  r \ransub  \mathit{Ty} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANSUB_DOM}}||&amp;lt;math&amp;gt;  r^{-1} \ransub  \dom (r) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANSUB_RAN}}||&amp;lt;math&amp;gt;  r \ransub  \ran (r) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id) \ransub  T \;\;\defi\;\;  (S \setminus T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id) \ransub  T \;\;\defi\;\;  (S \bunion T) \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FCOMP}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp \emptyset  \fcomp \ldots  \fcomp s \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_ID}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp \id \fcomp \ldots  \fcomp s \;\;\defi\;\;  r \fcomp \ldots  \fcomp s &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_R}}||&amp;lt;math&amp;gt;  r \fcomp \mathit{Ty} \;\;\defi\;\;  \dom (r) \cprod  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_L}}||&amp;lt;math&amp;gt; \mathit{Ty} \fcomp r \;\;\defi\;\;  \mathit{Ta} \cprod  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp S \domres \id \fcomp T \domres \id \fcomp \ldots  s \;\;\defi\;\;  r \fcomp \ldots  \fcomp (S \binter  T) \domres \id \fcomp \ldots  \fcomp s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BCOMP}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  \emptyset  \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_ID}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  \id \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  r \bcomp  \ldots  \bcomp  s &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_L}}||&amp;lt;math&amp;gt; \mathit{Ty} \bcomp  r \;\;\defi\;\;  \dom (r) \cprod  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_R}}||&amp;lt;math&amp;gt;  r \bcomp  \mathit{Ty} \;\;\defi\;\;  \mathit{Ta} \cprod  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_BCOMP_ID}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp S \domres \id \bcomp T \domres \id \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  r \bcomp  \ldots  \bcomp (S \binter  T) \domres \id \bcomp  \ldots  \bcomp  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DPROD_R}}||&amp;lt;math&amp;gt;  r \dprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \dprod  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DPROD_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})  \dprod  (\mathit{U} \cprod \mathit{V})  \;\;\defi\;\;  \mathit{S}  \binter  \mathit{U}  \cprod  (\mathit{T}  \cprod  \mathit{V}) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PPROD_R}}||&amp;lt;math&amp;gt;  r \pprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \pprod  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_PPROD_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})  \pprod  (\mathit{U} \cprod \mathit{V}) \;\;\defi\;\;  (\mathit{S} \cprod \mathit{U}) \cprod (\mathit{T} \cprod \mathit{V}) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RELIMAGE_R}}||&amp;lt;math&amp;gt;  r[\emptyset ] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RELIMAGE_L}}||&amp;lt;math&amp;gt;  \emptyset [S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RELIMAGE}}||&amp;lt;math&amp;gt;  r[Ty] \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_DOM}}||&amp;lt;math&amp;gt;  r[\dom (r)] \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_ID}}||&amp;lt;math&amp;gt;  \id[T] \;\;\defi\;\;  T &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id)[T] \;\;\defi\;\;  S \binter  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id)[T] \;\;\defi\;\;  T \setminus S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CPROD_SING}}||&amp;lt;math&amp;gt;  (\{ E\}  \cprod  S)[\{ E\} ] \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_SING_MAPSTO}}||&amp;lt;math&amp;gt;  \{ E \mapsto  F\} [\{ E\} ] \;\;\defi\;\;  \{ F\} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CONVERSE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  S)^{-1} [S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CONVERSE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  S)^{-1} [S] \;\;\defi\;\;  r^{-1} [S] &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_CONVERSE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)^{-1} [T] \;\;\defi\;\;  r^{-1} [T] \setminus S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  S)[T] \;\;\defi\;\;  r[T] \setminus S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  S)[T] \;\;\defi\;\;  r[T] \binter  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)[S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)[T] \;\;\defi\;\;  r[T \setminus S] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_DOMRES}}||&amp;lt;math&amp;gt;  (S \domres  r)[T] \;\;\defi\;\;  r[S \binter  T] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CONVERSE}}||&amp;lt;math&amp;gt;  \emptyset ^{-1}  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_ID}}||&amp;lt;math&amp;gt;  \id^{-1}  \;\;\defi\;\;  \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})^{-1}  \;\;\defi\;\;  \mathit{T} \cprod \mathit{S} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_SETENUM}}||&amp;lt;math&amp;gt;  \{ x \mapsto  a, \ldots , y \mapsto  b\} ^{-1}  \;\;\defi\;\;  \{ a \mapsto  x, \ldots , b \mapsto  y\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_COMPSET}}||&amp;lt;math&amp;gt;  \{ X \qdot  P \mid  x\mapsto y\} ^{-1}  \;\;\defi\;\;  \{ X \qdot  P \mid  y\mapsto x\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_ID}}||&amp;lt;math&amp;gt;  \dom (\id) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_ID}}||&amp;lt;math&amp;gt;  \ran (\id) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID_L}}||&amp;lt;math&amp;gt;  (S \domres \id) \fcomp r \;\;\defi\;\;  S \domres  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID_R}}||&amp;lt;math&amp;gt;  r \fcomp (S \domres \id) \;\;\defi\;\;  r \ranres  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_REL_R}}||&amp;lt;math&amp;gt;  S \rel  \emptyset  \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\srel  \pfun  \pinj  \psur&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_REL_L}}||&amp;lt;math&amp;gt;  \emptyset  \rel  S \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\trel  \pfun  \tfun  \pinj  \tinj&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_PRJ1}}||&amp;lt;math&amp;gt;  \prjone (E \mapsto  F) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_PRJ2}}||&amp;lt;math&amp;gt;  \prjtwo (E \mapsto  F) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_PRJ1}}||&amp;lt;math&amp;gt;  \dom (\prjone) \;\;\defi\;\;  S \cprod T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_PRJ2}}||&amp;lt;math&amp;gt;  \dom (\prjtwo) \;\;\defi\;\; S \cprod T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_PRJ1}}||&amp;lt;math&amp;gt;  \ran (\prjone) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_PRJ2}}||&amp;lt;math&amp;gt;  \ran (\prjtwo) \;\;\defi\;\;  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_LAMBDA}}||&amp;lt;math&amp;gt;  (\lambda x \qdot  P(x) \mid  E(x))(y) \;\;\defi\;\;  E(y) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_LAMBDA}}||&amp;lt;math&amp;gt;\dom(\{x\qdot P\mid E\mapsto F) \;\;\defi\;\; \{x\qdot P\mid E\}&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_LAMBDA}}||&amp;lt;math&amp;gt;\ran(\{x\qdot P\mid E\mapsto F) \;\;\defi\;\; \{x\qdot P\mid F\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE}}||&amp;lt;math&amp;gt;E\mapsto F(E)\in F \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE_CONVERSE_L}}||&amp;lt;math&amp;gt;F^{-1}(E)\mapsto E\in F \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE_CONVERSE_R}}||&amp;lt;math&amp;gt;F(E)\mapsto E\in F^{-1} \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_SETENUM_LL}}||&amp;lt;math&amp;gt;  \{ A \mapsto  E, \ldots  , B \mapsto  E\} (x) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_SETENUM_LR}}||&amp;lt;math&amp;gt;  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} (x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_OVERL_SETENUM}}||&amp;lt;math&amp;gt;  (r \ovl  \ldots  \ovl  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} )(x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_BUNION_SETENUM}}||&amp;lt;math&amp;gt;  (r \bunion  \ldots  \bunion  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} )(x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_CPROD}}||&amp;lt;math&amp;gt;  (S \cprod  \{ F\} )(x) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_ID}}||&amp;lt;math&amp;gt;  \id (x) \;\;\defi\;\;  x &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_FUNIMAGE_CONVERSE}}||&amp;lt;math&amp;gt;  f(f^{-1} (E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_CONVERSE_FUNIMAGE}}||&amp;lt;math&amp;gt;  f^{-1}(f(E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_FUNIMAGE_CONVERSE_SETENUM}}||&amp;lt;math&amp;gt;  \{x \mapsto a, \ldots, y \mapsto b\}(\{a \mapsto x, \ldots, b \mapsto y\}(E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_DOMRES}}||&amp;lt;math&amp;gt;(E \domres F)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;(E \domsub F)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_RANRES}}||&amp;lt;math&amp;gt;(F\ranres E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_RANSUB}}||&amp;lt;math&amp;gt;(F \ransub E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_SETMINUS}}||&amp;lt;math&amp;gt;(F \setminus E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|||{{Rulename|DEF_EQUAL_FUNIMAGE}}||&amp;lt;math&amp;gt; f(x) = y \;\;\defi\;\; x \mapsto y \in f &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_BCOMP}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  s \fcomp \ldots  \fcomp r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_ID_SING}}||&amp;lt;math&amp;gt;  \{ E\} \domres \id \;\;\defi\;\;  \{ E \mapsto  E\} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOM}}||&amp;lt;math&amp;gt;  \dom (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RAN}}||&amp;lt;math&amp;gt;  \ran (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_CONVERSE}}||&amp;lt;math&amp;gt;  r^{-1-1}  \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_RELIMAGE_FCOMP}}||&amp;lt;math&amp;gt;  (p \fcomp q)[s] \;\;\defi\;\;  q[p[s]] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_DOMRES}}||&amp;lt;math&amp;gt;  (s \domres  p) \fcomp q \;\;\defi\;\;  s \domres  (p \fcomp q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_DOMSUB}}||&amp;lt;math&amp;gt;  (s \domsub  p) \fcomp q \;\;\defi\;\;  s \domsub  (p \fcomp q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_RANRES}}||&amp;lt;math&amp;gt;  p \fcomp (q \ranres  s) \;\;\defi\;\;  (p \fcomp q) \ranres  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_RANSUB}}||&amp;lt;math&amp;gt;  p \fcomp (q \ransub  s) \;\;\defi\;\;  (p \fcomp q) \ransub  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_FCOMP_SING}}||&amp;lt;math&amp;gt;  \{E\mapsto F\}\fcomp\{F\mapsto G\} \;\;\defi\;\;  \{E\mapsto G\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_RELDOMRAN}}||&amp;lt;math&amp;gt;  \emptyset  \strel  \emptyset  \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\tsur  \tbij&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOM}}||&amp;lt;math&amp;gt;  \dom (\mathit{Ty}) \;\;\defi\;\;  \mathit{Ta} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RAN}}||&amp;lt;math&amp;gt;  \ran (\mathit{Ty}) \;\;\defi\;\;  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_CPROD}}||&amp;lt;math&amp;gt;  \dom (E \cprod  E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_CPROD}}||&amp;lt;math&amp;gt;  \ran (E \cprod  E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_DOMRES}}||&amp;lt;math&amp;gt;\dom(A\domres f) \;\;\defi\;\; \dom(f)\binter A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_DOMSUB}}||&amp;lt;math&amp;gt;\dom(A\domsub f) \;\;\defi\;\; \dom(f)\setminus A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_RANRES}}||&amp;lt;math&amp;gt;\ran(f\ranres A) \;\;\defi\;\; \ran(f)\binter A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_RANSUB}}||&amp;lt;math&amp;gt;\ran(f\ransub A) \;\;\defi\;\; \ran(f)\setminus A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOM}}||&amp;lt;math&amp;gt;  E \in  \dom (r) \;\;\defi\;\;  \exists y \qdot  E \mapsto  y \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RAN}}||&amp;lt;math&amp;gt;  F \in  \ran (r) \;\;\defi\;\;  \exists x \qdot  x \mapsto  F  \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_CONVERSE}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r^{-1}  \;\;\defi\;\;  F \mapsto  E \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOMRES}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \domres  r \;\;\defi\;\;  E \in  S \land  E \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RANRES}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r \ranres  T \;\;\defi\;\;  E \mapsto  F \in  r \land  F \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOMSUB}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \domsub  r \;\;\defi\;\;  E \notin  S \land  E \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RANSUB}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r \ranres  T \;\;\defi\;\;  E \mapsto  F \in  r \land  F \notin  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELIMAGE}}||&amp;lt;math&amp;gt;  F \in  r[w] \;\;\defi\;\;  \exists x \qdot  x \in  w \land  x \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_FCOMP}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  (p \fcomp q) \;\;\defi\;\;  \exists x \qdot  E \mapsto  x \in  p \land  x \mapsto  F \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_OVERL}}||&amp;lt;math&amp;gt;  p \ovl  q \;\;\defi\;\;  (\dom (q) \domsub  p) \bunion  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_ID}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  \id \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DPROD}}||&amp;lt;math&amp;gt;  E \mapsto  (F \mapsto  G) \in  p \dprod  q \;\;\defi\;\;  E \mapsto  F \in  p \land  E \mapsto  G \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_PPROD}}||&amp;lt;math&amp;gt;  (E \mapsto  G) \mapsto  (F \mapsto  H) \in  p \pprod  q \;\;\defi\;\;  E \mapsto  F \in  p \land  G \mapsto  H \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_REL}}||&amp;lt;math&amp;gt;  r \in  S \rel  T \;\;\defi\;\;  r\subseteq S\cprod T&amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELDOM}}||&amp;lt;math&amp;gt;  r \in  S \trel  T \;\;\defi\;\;  r \in  S \rel  T \land  \dom (r) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELRAN}}||&amp;lt;math&amp;gt;  r \in  S \srel  T \;\;\defi\;\;  r \in  S \rel  T \land  \ran (r) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELDOMRAN}}||&amp;lt;math&amp;gt;  r \in  S \strel  T \;\;\defi\;\;  r \in  S \rel  T \land  \dom (r) = S \land  \ran (r) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_FCT}}||&amp;lt;math&amp;gt;\begin{array}{rcl}&lt;br /&gt;
 f \in  S \pfun  T &amp;amp; \defi &amp;amp; f \in  S \rel  T  \\  &amp;amp; \land &amp;amp; (\forall x,y,z \qdot  x \mapsto  y \in  f \land  x \mapsto  z \in  f \limp  y = z) \\ \end{array} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TFCT}}||&amp;lt;math&amp;gt;  f \in  S \tfun  T \;\;\defi\;\;  f \in  S \pfun  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_INJ}}||&amp;lt;math&amp;gt;  f \in  S \pinj  T \;\;\defi\;\;  f \in  S \pfun  T \land  f^{-1}  \in  T \pfun  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TINJ}}||&amp;lt;math&amp;gt;  f \in  S \tinj  T \;\;\defi\;\;  f \in  S \pinj  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SURJ}}||&amp;lt;math&amp;gt;  f \in  S \psur  T \;\;\defi\;\;  f \in  S \pfun  T \land  \ran (f) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TSURJ}}||&amp;lt;math&amp;gt;  f \in  S \tsur  T \;\;\defi\;\;  f \in  S \psur  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BIJ}}||&amp;lt;math&amp;gt;  f \in  S \tbij  T \;\;\defi\;\;  f \in  S \tinj  T \land  \ran (f) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DISTRI_BCOMP_BUNION}}||&amp;lt;math&amp;gt;  r \bcomp  (s \bunion  t) \;\;\defi\;\;  (r \bcomp  s) \bunion  (r \bcomp  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_FCOMP_BUNION_R}}||&amp;lt;math&amp;gt;  p \fcomp (q \bunion  r) \;\;\defi\;\;  (p \fcomp q) \bunion  (p \fcomp r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_FCOMP_BUNION_L}}||&amp;lt;math&amp;gt;  (q \bunion  r) \fcomp p \;\;\defi\;\;  (q \fcomp p) \bunion  (r \fcomp p) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_BUNION}}||&amp;lt;math&amp;gt;  r \dprod  (s \bunion  t) \;\;\defi\;\;  (r \dprod  s) \bunion  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_BINTER}}||&amp;lt;math&amp;gt;  r \dprod  (s \binter  t) \;\;\defi\;\;  (r \dprod  s) \binter  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_SETMINUS}}||&amp;lt;math&amp;gt;  r \dprod  (s \setminus t) \;\;\defi\;\;  (r \dprod  s) \setminus (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_OVERL}}||&amp;lt;math&amp;gt;  r \dprod  (s \ovl  t) \;\;\defi\;\;  (r \dprod  s) \ovl  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_BUNION}}||&amp;lt;math&amp;gt;  r \pprod  (s \bunion  t) \;\;\defi\;\;  (r \pprod  s) \bunion  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_BINTER}}||&amp;lt;math&amp;gt;  r \pprod  (s \binter  t) \;\;\defi\;\;  (r \pprod  s) \binter  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_SETMINUS}}||&amp;lt;math&amp;gt;  r \pprod  (s \setminus t) \;\;\defi\;\;  (r \pprod  s) \setminus (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_OVERL}}||&amp;lt;math&amp;gt;  r \pprod  (s \ovl  t) \;\;\defi\;\;  (r \pprod  s) \ovl  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_OVERL_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ovl  r \;\;\defi\;\;  (p \ovl  r) \bunion  (q \ovl  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_OVERL_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ovl  r \;\;\defi\;\;  (p \ovl  r) \binter  (q \ovl  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BUNION_R}}||&amp;lt;math&amp;gt;  s \domres  (p \bunion  q) \;\;\defi\;\;  (s \domres  p) \bunion  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BUNION_L}}||&amp;lt;math&amp;gt;  (s \bunion  t) \domres  r \;\;\defi\;\;  (s \domres  r) \bunion  (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BINTER_R}}||&amp;lt;math&amp;gt;  s \domres  (p \binter  q) \;\;\defi\;\;  (s \domres  p) \binter  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BINTER_L}}||&amp;lt;math&amp;gt;  (s \binter  t) \domres  r \;\;\defi\;\;  (s \domres  r) \binter  (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_SETMINUS_R}}||&amp;lt;math&amp;gt;  s \domres  (p \setminus q) \;\;\defi\;\;  (s \domres  p) \setminus (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_SETMINUS_L}}||&amp;lt;math&amp;gt;  (s \setminus t) \domres  r \;\;\defi\;\;  (s \domres  r) \setminus (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_DPROD}}||&amp;lt;math&amp;gt;  s \domres  (p \dprod  q) \;\;\defi\;\;  (s \domres  p) \dprod  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_OVERL}}||&amp;lt;math&amp;gt;  s \domres  (r \ovl  q) \;\;\defi\;\;  (s \domres  r) \ovl  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BUNION_R}}||&amp;lt;math&amp;gt;  s \domsub  (p \bunion  q) \;\;\defi\;\;  (s \domsub  p) \bunion  (s \domsub  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BUNION_L}}||&amp;lt;math&amp;gt;  (s \bunion  t) \domsub  r \;\;\defi\;\;  (s \domsub  r) \binter  (t \domsub  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BINTER_R}}||&amp;lt;math&amp;gt;  s \domsub  (p \binter  q) \;\;\defi\;\;  (s \domsub  p) \binter  (s \domsub  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BINTER_L}}||&amp;lt;math&amp;gt;  (s \binter  t) \domsub  r \;\;\defi\;\;  (s \domsub  r) \bunion  (t \domsub  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMSUB_DPROD}}||&amp;lt;math&amp;gt;  A \domsub  (r \dprod  s) \;\;\defi\;\;  (A \domsub  r) \dprod  (A \domsub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMSUB_OVERL}}||&amp;lt;math&amp;gt;  A \domsub  (r \ovl  s) \;\;\defi\;\;  (A \domsub  r) \ovl  (A \domsub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BUNION_R}}||&amp;lt;math&amp;gt;  r \ranres (s \bunion t) \;\;\defi\;\;  (r \ranres  s) \bunion  (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \bunion  (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BINTER_R}}||&amp;lt;math&amp;gt;  r \ranres (s \binter t) \;\;\defi\;\;  (r \ranres  s) \binter  (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \binter  (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_RANRES_SETMINUS_R}}||&amp;lt;math&amp;gt;  r \ranres  (s \setminus t) \;\;\defi\;\;  (r \ranres  s) \setminus (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_RANRES_SETMINUS_L}}||&amp;lt;math&amp;gt;  (p \setminus q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \setminus (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BUNION_R}}||&amp;lt;math&amp;gt;  r \ransub (s\bunion t) \;\;\defi\;\;  (r \ransub  s) \binter  (r \ransub  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ransub  s \;\;\defi\;\;  (p \ransub  s) \bunion  (q \ransub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BINTER_R}}||&amp;lt;math&amp;gt;  r \ransub (s \binter t) \;\;\defi\;\;  (r \ransub  s) \bunion  (r \ransub  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ransub  s \;\;\defi\;\;  (p \ransub  s) \binter  (q \ransub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_CONVERSE_BUNION}}||&amp;lt;math&amp;gt;  (p \bunion  q)^{-1}  \;\;\defi\;\;  p^{-1}  \bunion  q^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_BINTER}}||&amp;lt;math&amp;gt;  (p \binter  q)^{-1}  \;\;\defi\;\;  p^{-1}  \binter  q^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_SETMINUS}}||&amp;lt;math&amp;gt;  (r \setminus s)^{-1}  \;\;\defi\;\;  r^{-1}  \setminus s^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_BCOMP}}||&amp;lt;math&amp;gt;  (r \bcomp  s)^{-1}  \;\;\defi\;\;  (s^{-1}  \bcomp  r^{-1} ) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_FCOMP}}||&amp;lt;math&amp;gt;  (p \fcomp q)^{-1}  \;\;\defi\;\;  (q^{-1}  \fcomp p^{-1} ) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_PPROD}}||&amp;lt;math&amp;gt;  (r \pprod  s)^{-1}  \;\;\defi\;\;  r^{-1}  \pprod  s^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_DOMRES}}||&amp;lt;math&amp;gt;  (s \domres  r)^{-1}  \;\;\defi\;\;  r^{-1}  \ranres  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_DOMSUB}}||&amp;lt;math&amp;gt;  (s \domsub  r)^{-1}  \;\;\defi\;\;  r^{-1}  \ransub  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  s)^{-1}  \;\;\defi\;\;  s \domres  r^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  s)^{-1}  \;\;\defi\;\;  s \domsub  r^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOM_BUNION}}||&amp;lt;math&amp;gt;  \dom (r \bunion  s) \;\;\defi\;\;  \dom (r) \bunion  \dom (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RAN_BUNION}}||&amp;lt;math&amp;gt;  \ran (r \bunion  s) \;\;\defi\;\;  \ran (r) \bunion  \ran (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RELIMAGE_BUNION_R}}||&amp;lt;math&amp;gt;  r[S \bunion  T] \;\;\defi\;\;  r[S] \bunion  r[T] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RELIMAGE_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q)[S] \;\;\defi\;\;  p[S] \bunion  q[S] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_DOM_TOTALREL}}||&amp;lt;math&amp;gt;  \dom (r) \;\;\defi\;\;  E &amp;lt;/math&amp;gt; || with hypothesis &amp;lt;math&amp;gt;r \in E \ \mathit{op}\  F&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel, \strel, \tfun, \tinj, \tsur, \tbij&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_RAN_SURJREL}}||&amp;lt;math&amp;gt;  \ran (r) \;\;\defi\;\;  F &amp;lt;/math&amp;gt; || with hypothesis &amp;lt;math&amp;gt;r \in E \ \mathit{op}\  F&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\srel,\strel, \psur, \tsur, \tbij&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_PRJ1_SURJ}}||&amp;lt;math&amp;gt;\prjone \in\mathit{Ty}_1\ \mathit{op}\ \mathit{Ty}_2\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathit{Ty}_2&amp;lt;/math&amp;gt; are types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel, \trel, \srel, \strel, \pfun, \tfun, \psur, \tsur &amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_PRJ2_SURJ}}||&amp;lt;math&amp;gt;\prjtwo \in\mathit{Ty}_1\ \mathit{op}\ \mathit{Ty}_2\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathit{Ty}_2&amp;lt;/math&amp;gt; are types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel, \trel, \srel, \strel, \pfun, \tfun, \psur, \tsur &amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_ID_BIJ}}||&amp;lt;math&amp;gt;\id \in\mathit{Ty}\ \mathit{op}\ \mathit{Ty}\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is any arrow ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAPSTO_PRJ1_PRJ2}}||&amp;lt;math&amp;gt;\prjone(E)\mapsto\prjtwo(E)\;\;\defi\;\; E &amp;lt;/math&amp;gt; ||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_EXPAND_PRJS}}||&amp;lt;math&amp;gt; E \;\;\defi\;\; \prjone(E) \mapsto \prjtwo(E) &amp;lt;/math&amp;gt; || ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_SUCC}}||&amp;lt;math&amp;gt;\dom(\usucc) \;\;\defi\;\; \intg&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_SUCC}}||&amp;lt;math&amp;gt;\ran(\usucc) \;\;\defi\;\; \intg&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_MULTI_IN_BUNION}}||&amp;lt;math&amp;gt; E\in A\bunion\cdots\bunion\left\{\cdots, E,\cdots\right\}\bunion\cdots\bunion B\;\;\defi\;\; \btrue&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_MULTI_IN_SETMINUS}}||&amp;lt;math&amp;gt; E\in S\setminus\left\{\cdots, E,\cdots\right\} \;\;\defi\;\; \bfalse&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_PRED}}||&amp;lt;math&amp;gt; \upred\;\;\defi\;\; \usucc^{-1}&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_IN_ID}}||&amp;lt;math&amp;gt; E \mapsto E \in \id \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_IN_SETMINUS_ID}}||&amp;lt;math&amp;gt;E \mapsto E \in r \setminus \id \;\;\defi\;\; \bfalse&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_IN_DOMRES_ID}}||&amp;lt;math&amp;gt;E \mapsto E \in S \domres \id \;\;\defi\;\; E \in S&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_SPECIAL_IN_SETMINUS_DOMRES_ID}}||&amp;lt;math&amp;gt;E \mapsto E \in r \setminus (S \domres \id) \;\;\defi\;\; E \mapsto E \in S \domsub r&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14555</id>
		<title>Arithmetic Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14555"/>
		<updated>2024-02-19T16:50:42Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add rule for exponentiation step&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_0}}||&amp;lt;math&amp;gt;  0 \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_1}}||&amp;lt;math&amp;gt;  E \,\bmod\,  1 \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_SING}}||&amp;lt;math&amp;gt;  \min (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_SING}}||&amp;lt;math&amp;gt;  \max (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL}}||&amp;lt;math&amp;gt;  \min (\nat ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL1}}||&amp;lt;math&amp;gt;  \min (\natn ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \min (S \bunion  \ldots  \bunion  \{ \min (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp; \min (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\ \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \max (S \bunion  \ldots  \bunion  \{ \max (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp;  \max (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\  \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_UPTO}}||&amp;lt;math&amp;gt;  \min (E \upto  F) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_UPTO}}||&amp;lt;math&amp;gt;  \max (E \upto  F) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_MIN_IN}}||&amp;lt;math&amp;gt;  \min (S) \in S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_MAX_IN}}||&amp;lt;math&amp;gt;  \max (S) \in S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MIN}}||&amp;lt;math&amp;gt;  \min (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \min (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MAX}}||&amp;lt;math&amp;gt;  \max (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \max (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \geq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CARD}}||&amp;lt;math&amp;gt;  \card (\emptyset ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_SING}}||&amp;lt;math&amp;gt;  \card (\{ E\} ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_CARD}}||&amp;lt;math&amp;gt;  \card (S) = 0 \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_POW}}||&amp;lt;math&amp;gt;  \card (\pow (S)) \;\;\defi\;\;  2\expn{\card(S)} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_BUNION}}||&amp;lt;math&amp;gt;  \card (S \bunion  T) \;\;\defi\;\;  \card (S) + \card (T) - \card (S \binter  T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS}}||&amp;lt;math&amp;gt;\card(S\setminus T)\;\;\defi\;\;\card(S) - \card(T)&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;T\subseteq S&amp;lt;/math&amp;gt; and either &amp;lt;math&amp;gt;\finite(S)&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;\finite(T)&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_SETENUM}}||&amp;lt;math&amp;gt;\card(S\setminus\{E_1,\ldots,E_n\})\;\;\defi\;\;\card(S) - \card(\{E_1,\ldots,E_n\})&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;E_i\in S&amp;lt;/math&amp;gt; for all &amp;lt;math&amp;gt;i\in 1\upto n&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_CONVERSE}}||&amp;lt;math&amp;gt;  \card (r^{-1} ) \;\;\defi\;\;  \card (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID}}||&amp;lt;math&amp;gt;  \card (\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow (S \cprod S) &amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID_DOMRES}}||&amp;lt;math&amp;gt;  \card (S\domres\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1}}||&amp;lt;math&amp;gt;  \card (\prjone) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2}}||&amp;lt;math&amp;gt;  \card (\prjtwo) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjone) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjtwo) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_LAMBDA}}||&amp;lt;math&amp;gt; \card(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\; \card(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_CARD_UPTO}}||&amp;lt;math&amp;gt;  \card (i \upto  j) \;\;\defi\;\;  j-i+1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_TYPE_CARD}}||&amp;lt;math&amp;gt;  \card (\mathit{Tenum}) \;\;\defi\;\;  N &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Tenum}&amp;lt;/math&amp;gt; is a carrier set containing &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; elements ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) \geq  1 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_1}}||&amp;lt;math&amp;gt;  1 \leq  \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_0}}||&amp;lt;math&amp;gt;  0 \leq  \card (S) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) \geq  0 \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) &amp;gt; 0 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT_CARD_0}}||&amp;lt;math&amp;gt;  0 &amp;lt; \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) = 1 \;\;\defi\;\;  \exists x \qdot  S = \{ x\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL}}||&amp;lt;math&amp;gt;  \card (S) \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL1}}||&amp;lt;math&amp;gt;  \card (S) \in  \natn  \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL}}||&amp;lt;math&amp;gt;  i \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN_NATURAL1}}||&amp;lt;math&amp;gt;  0 \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL1}}||&amp;lt;math&amp;gt;  i \in  \natn  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_UPTO}}||&amp;lt;math&amp;gt;  i \upto  j \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;j &amp;lt; i&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL}}||&amp;lt;math&amp;gt;  -i \in  \nat  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL1}}||&amp;lt;math&amp;gt;  -i \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL}}||&amp;lt;math&amp;gt;x \in \nat  \;\;\defi\;\;  0 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL1}}||&amp;lt;math&amp;gt;x \in \natn  \;\;\defi\;\;  1 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_TRUE}}||&amp;lt;math&amp;gt;  \bool (P) = \True  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_FALSE}}||&amp;lt;math&amp;gt;  \bool (P) = \False  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_KBOOL_LIT_EQUAL_TRUE}}||&amp;lt;math&amp;gt; \bool (B = \True) \;\;\defi\;\; B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MIN}}||&amp;lt;math&amp;gt;  E = \min (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \leq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MAX}}||&amp;lt;math&amp;gt;  E = \max (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \geq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PLUS}}||&amp;lt;math&amp;gt;  E + \ldots  + 0 + \ldots  + F \;\;\defi\;\;  E + \ldots  + F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_R}}||&amp;lt;math&amp;gt;  E - 0 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_L}}||&amp;lt;math&amp;gt;  0 - E \;\;\defi\;\;  -E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_MINUS}}||&amp;lt;math&amp;gt;   - (- E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_UNMINUS}}||&amp;lt;math&amp;gt; E  - (- F) \;\;\defi\;\;  E + F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;(-F)&amp;lt;/math&amp;gt; is a unary minus expression or a negative literal ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS}}||&amp;lt;math&amp;gt;  E - E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_L}}||&amp;lt;math&amp;gt; (A + \ldots + C + \ldots + B) - C \;\;\defi\;\; A + \ldots + B &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_R}}||&amp;lt;math&amp;gt; C - (A + \ldots + C + \ldots + B)  \;\;\defi\;\;  -(A + \ldots + B) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_PLUS}}||&amp;lt;math&amp;gt; (A + \ldots + E + \ldots + B) - (C + \ldots + E + \ldots + D)  \;\;\defi\;\; (A + \ldots + B) - (C + \ldots + D) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_PLUS_MINUS}}||&amp;lt;math&amp;gt;(A + \ldots + D + \ldots + (C - D) + \ldots + B) \;\;\defi\;\; A + \ldots + C + \ldots + B  &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_PLUS}}||&amp;lt;math&amp;gt; A + \ldots + E + \ldots + B  &amp;lt; C + \ldots + E + \ldots + D   \;\;\defi\;\; A + \ldots + B &amp;lt; C + \ldots + D &amp;lt;/math&amp;gt;|| where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt;||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_R}}||&amp;lt;math&amp;gt; C &amp;lt; A + \ldots + C \ldots + B   \;\;\defi\;\;   0 &amp;lt; A + \ldots + B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_L}}||&amp;lt;math&amp;gt; A + \ldots + C \ldots + B &amp;lt; C   \;\;\defi\;\;   A + \ldots + B &amp;lt; 0 &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_R}}||&amp;lt;math&amp;gt; A - C &amp;lt; B - C  \;\;\defi\;\; A &amp;lt; B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_L}}||&amp;lt;math&amp;gt; C - A &amp;lt; C - B  \;\;\defi\;\; B &amp;lt; A &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_0}}||&amp;lt;math&amp;gt;  E * \ldots  * 0 * \ldots  * F \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_1}}||&amp;lt;math&amp;gt;  E * \ldots  * 1 * \ldots  * F \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_EVEN}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;|| if an even number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_ODD}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  -(E * \ldots  * F) &amp;lt;/math&amp;gt;|| if an odd number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MINUS}}||&amp;lt;math&amp;gt;   - (i) \;\;\defi\;\;  (-i) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL}}||&amp;lt;math&amp;gt;  i = j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE}}||&amp;lt;math&amp;gt;  i \leq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT}}||&amp;lt;math&amp;gt;  i &amp;lt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE}}||&amp;lt;math&amp;gt;  i \geq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT}}||&amp;lt;math&amp;gt;  i &amp;gt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DIV_MINUS}}||&amp;lt;math&amp;gt;  (- E) \div  (-F) \;\;\defi\;\;  E \div  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_1}}||&amp;lt;math&amp;gt;  E \div  1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_0}}||&amp;lt;math&amp;gt;  0 \div  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_R}}||&amp;lt;math&amp;gt;  E ^ 1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_L}}||&amp;lt;math&amp;gt;  1 ^ E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_0}}||&amp;lt;math&amp;gt;  E ^ 0 \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DEF_EXPN_STEP}}||&amp;lt;math&amp;gt; E ^ P \;\;\defi\;\; E * E ^{(P - 1)} &amp;lt;/math&amp;gt;|| with an additional PO &amp;lt;math&amp;gt;\lnot\, P = 0&amp;lt;/math&amp;gt; || M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LE}}||&amp;lt;math&amp;gt;  E \leq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LT}}||&amp;lt;math&amp;gt;  E &amp;lt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GE}}||&amp;lt;math&amp;gt;  E \geq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GT}}||&amp;lt;math&amp;gt;  E &amp;gt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV}}||&amp;lt;math&amp;gt;  E \div  E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV_PROD}}||&amp;lt;math&amp;gt;  (X * \ldots * E * \ldots * Y) \div  E \;\;\defi\;\;  X * \ldots * Y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MOD}}||&amp;lt;math&amp;gt;  E \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_PLUS}}||&amp;lt;math&amp;gt;  a * (b + c) \;\;\defi\;\;  (a * b) + (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_MINUS}}||&amp;lt;math&amp;gt;  a * (b - c) \;\;\defi\;\;  (a * b) - (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_NOT_EQUAL}}||&amp;lt;math&amp;gt;    \lnot E = F \;\;\defi\;\;  E &amp;lt; F \lor E &amp;gt; F  &amp;lt;/math&amp;gt;|| &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; must be of Integer type ||  M &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Relation_Rewrite_Rules&amp;diff=14554</id>
		<title>Relation Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Relation_Rewrite_Rules&amp;diff=14554"/>
		<updated>2024-02-05T14:31:19Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add rule DEF_EQUAL_FUNIMAGE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_SETENUM}}||&amp;lt;math&amp;gt;  \dom (\{ x \mapsto  a, \ldots , y \mapsto  b\} ) \;\;\defi\;\;  \{ x, \ldots , y\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_CONVERSE}}||&amp;lt;math&amp;gt;  \dom (r^{-1} ) \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_SETENUM}}||&amp;lt;math&amp;gt;  \ran (\{ x \mapsto  a, \ldots , y \mapsto  b\} ) \;\;\defi\;\;  \{ a, \ldots , b\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_CONVERSE}}||&amp;lt;math&amp;gt;  \ran (r^{-1} ) \;\;\defi\;\;  \dom (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||&amp;lt;math&amp;gt;  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OVERL}}||&amp;lt;math&amp;gt;r_1 \ovl  \cdots  \ovl r_n \defi r_1 \ovl \cdots \ovl r_{i-1} \ovl r_{i+1} \ovl \cdots \ovl r_n&amp;lt;/math&amp;gt;|| there is a &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;1\leq i &amp;lt; j \leq n&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r_j&amp;lt;/math&amp;gt; are syntactically equal. ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_OVERL_CPROD}}||&amp;lt;math&amp;gt; r\ovl\cdots\ovl\mathit{Ty}\ovl\cdots\ovl s \;\defi\;\; \mathit{Ty}\ovl\cdots\ovl s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMRES_L}}||&amp;lt;math&amp;gt;  \emptyset  \domres  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMRES_R}}||&amp;lt;math&amp;gt;  S \domres  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOMRES}}||&amp;lt;math&amp;gt; \mathit{Ty} \domres  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMRES_DOM}}||&amp;lt;math&amp;gt;  \dom (r) \domres  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMRES_RAN}}||&amp;lt;math&amp;gt;  \ran (r) \domres  r^{-1}  \;\;\defi\;\;  r^{-1} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMRES_DOMRES_ID}}||&amp;lt;math&amp;gt;  S \domres  (T \domres \id) \;\;\defi\;\;  (S \binter  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMRES_DOMSUB_ID}}||&amp;lt;math&amp;gt;  S \domres  (T \domsub \id) \;\;\defi\;\;  (S \setminus  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANRES_R}}||&amp;lt;math&amp;gt;  r \ranres  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANRES_L}}||&amp;lt;math&amp;gt;  \emptyset  \ranres  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RANRES}}||&amp;lt;math&amp;gt;  r \ranres  \mathit{Ty} \;\;\defi\;\;  r &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANRES_RAN}}||&amp;lt;math&amp;gt;  r \ranres  \ran (r) \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANRES_DOM}}||&amp;lt;math&amp;gt;  r^{-1}  \ranres  \dom (r) \;\;\defi\;\;  r^{-1} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_ID}}||&amp;lt;math&amp;gt;  \id  \ranres  S \;\;\defi\;\;  S  \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_ID}}||&amp;lt;math&amp;gt;  \id  \ransub  S \;\;\defi\;\;  S  \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id) \ranres  T \;\;\defi\;\;  (S \binter  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id) \ranres  T \;\;\defi\;\;  (T \setminus  S) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMSUB_L}}||&amp;lt;math&amp;gt;  \emptyset  \domsub  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMSUB_R}}||&amp;lt;math&amp;gt;  S \domsub  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOMSUB}}||&amp;lt;math&amp;gt; \mathit{Ty} \domsub  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMSUB_DOM}}||&amp;lt;math&amp;gt;  \dom (r) \domsub  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMSUB_RAN}}||&amp;lt;math&amp;gt;  \ran (r) \domsub  r^{-1} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMSUB_DOMRES_ID}}||&amp;lt;math&amp;gt;  S \domsub (T \domres \id ) \;\;\defi\;\;  (T \setminus S) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMSUB_DOMSUB_ID}}||&amp;lt;math&amp;gt;  S \domsub (T \domsub \id ) \;\;\defi\;\;  (S \bunion T) \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANSUB_R}}||&amp;lt;math&amp;gt;  r \ransub  \emptyset  \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANSUB_L}}||&amp;lt;math&amp;gt;  \emptyset  \ransub  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RANSUB}}||&amp;lt;math&amp;gt;  r \ransub  \mathit{Ty} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANSUB_DOM}}||&amp;lt;math&amp;gt;  r^{-1} \ransub  \dom (r) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANSUB_RAN}}||&amp;lt;math&amp;gt;  r \ransub  \ran (r) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id) \ransub  T \;\;\defi\;\;  (S \setminus T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id) \ransub  T \;\;\defi\;\;  (S \bunion T) \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FCOMP}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp \emptyset  \fcomp \ldots  \fcomp s \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_ID}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp \id \fcomp \ldots  \fcomp s \;\;\defi\;\;  r \fcomp \ldots  \fcomp s &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_R}}||&amp;lt;math&amp;gt;  r \fcomp \mathit{Ty} \;\;\defi\;\;  \dom (r) \cprod  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_L}}||&amp;lt;math&amp;gt; \mathit{Ty} \fcomp r \;\;\defi\;\;  \mathit{Ta} \cprod  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp S \domres \id \fcomp T \domres \id \fcomp \ldots  s \;\;\defi\;\;  r \fcomp \ldots  \fcomp (S \binter  T) \domres \id \fcomp \ldots  \fcomp s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BCOMP}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  \emptyset  \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_ID}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  \id \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  r \bcomp  \ldots  \bcomp  s &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_L}}||&amp;lt;math&amp;gt; \mathit{Ty} \bcomp  r \;\;\defi\;\;  \dom (r) \cprod  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_R}}||&amp;lt;math&amp;gt;  r \bcomp  \mathit{Ty} \;\;\defi\;\;  \mathit{Ta} \cprod  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_BCOMP_ID}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp S \domres \id \bcomp T \domres \id \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  r \bcomp  \ldots  \bcomp (S \binter  T) \domres \id \bcomp  \ldots  \bcomp  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DPROD_R}}||&amp;lt;math&amp;gt;  r \dprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \dprod  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DPROD_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})  \dprod  (\mathit{U} \cprod \mathit{V})  \;\;\defi\;\;  \mathit{S}  \binter  \mathit{U}  \cprod  (\mathit{T}  \cprod  \mathit{V}) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PPROD_R}}||&amp;lt;math&amp;gt;  r \pprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \pprod  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_PPROD_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})  \pprod  (\mathit{U} \cprod \mathit{V}) \;\;\defi\;\;  (\mathit{S} \cprod \mathit{U}) \cprod (\mathit{T} \cprod \mathit{V}) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RELIMAGE_R}}||&amp;lt;math&amp;gt;  r[\emptyset ] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RELIMAGE_L}}||&amp;lt;math&amp;gt;  \emptyset [S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RELIMAGE}}||&amp;lt;math&amp;gt;  r[Ty] \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_DOM}}||&amp;lt;math&amp;gt;  r[\dom (r)] \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_ID}}||&amp;lt;math&amp;gt;  \id[T] \;\;\defi\;\;  T &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id)[T] \;\;\defi\;\;  S \binter  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id)[T] \;\;\defi\;\;  T \setminus S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CPROD_SING}}||&amp;lt;math&amp;gt;  (\{ E\}  \cprod  S)[\{ E\} ] \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_SING_MAPSTO}}||&amp;lt;math&amp;gt;  \{ E \mapsto  F\} [\{ E\} ] \;\;\defi\;\;  \{ F\} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CONVERSE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  S)^{-1} [S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CONVERSE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  S)^{-1} [S] \;\;\defi\;\;  r^{-1} [S] &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_CONVERSE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)^{-1} [T] \;\;\defi\;\;  r^{-1} [T] \setminus S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  S)[T] \;\;\defi\;\;  r[T] \setminus S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  S)[T] \;\;\defi\;\;  r[T] \binter  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)[S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)[T] \;\;\defi\;\;  r[T \setminus S] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_DOMRES}}||&amp;lt;math&amp;gt;  (S \domres  r)[T] \;\;\defi\;\;  r[S \binter  T] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CONVERSE}}||&amp;lt;math&amp;gt;  \emptyset ^{-1}  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_ID}}||&amp;lt;math&amp;gt;  \id^{-1}  \;\;\defi\;\;  \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})^{-1}  \;\;\defi\;\;  \mathit{T} \cprod \mathit{S} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_SETENUM}}||&amp;lt;math&amp;gt;  \{ x \mapsto  a, \ldots , y \mapsto  b\} ^{-1}  \;\;\defi\;\;  \{ a \mapsto  x, \ldots , b \mapsto  y\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_COMPSET}}||&amp;lt;math&amp;gt;  \{ X \qdot  P \mid  x\mapsto y\} ^{-1}  \;\;\defi\;\;  \{ X \qdot  P \mid  y\mapsto x\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_ID}}||&amp;lt;math&amp;gt;  \dom (\id) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_ID}}||&amp;lt;math&amp;gt;  \ran (\id) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID_L}}||&amp;lt;math&amp;gt;  (S \domres \id) \fcomp r \;\;\defi\;\;  S \domres  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID_R}}||&amp;lt;math&amp;gt;  r \fcomp (S \domres \id) \;\;\defi\;\;  r \ranres  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_REL_R}}||&amp;lt;math&amp;gt;  S \rel  \emptyset  \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\srel  \pfun  \pinj  \psur&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_REL_L}}||&amp;lt;math&amp;gt;  \emptyset  \rel  S \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\trel  \pfun  \tfun  \pinj  \tinj&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_PRJ1}}||&amp;lt;math&amp;gt;  \prjone (E \mapsto  F) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_PRJ2}}||&amp;lt;math&amp;gt;  \prjtwo (E \mapsto  F) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_PRJ1}}||&amp;lt;math&amp;gt;  \dom (\prjone) \;\;\defi\;\;  S \cprod T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_PRJ2}}||&amp;lt;math&amp;gt;  \dom (\prjtwo) \;\;\defi\;\; S \cprod T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_PRJ1}}||&amp;lt;math&amp;gt;  \ran (\prjone) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_PRJ2}}||&amp;lt;math&amp;gt;  \ran (\prjtwo) \;\;\defi\;\;  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_LAMBDA}}||&amp;lt;math&amp;gt;  (\lambda x \qdot  P(x) \mid  E(x))(y) \;\;\defi\;\;  E(y) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_LAMBDA}}||&amp;lt;math&amp;gt;\dom(\{x\qdot P\mid E\mapsto F) \;\;\defi\;\; \{x\qdot P\mid E\}&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_LAMBDA}}||&amp;lt;math&amp;gt;\ran(\{x\qdot P\mid E\mapsto F) \;\;\defi\;\; \{x\qdot P\mid F\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE}}||&amp;lt;math&amp;gt;E\mapsto F(E)\in F \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE_CONVERSE_L}}||&amp;lt;math&amp;gt;F^{-1}(E)\mapsto E\in F \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE_CONVERSE_R}}||&amp;lt;math&amp;gt;F(E)\mapsto E\in F^{-1} \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_SETENUM_LL}}||&amp;lt;math&amp;gt;  \{ A \mapsto  E, \ldots  , B \mapsto  E\} (x) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_SETENUM_LR}}||&amp;lt;math&amp;gt;  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} (x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_OVERL_SETENUM}}||&amp;lt;math&amp;gt;  (r \ovl  \ldots  \ovl  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} )(x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_BUNION_SETENUM}}||&amp;lt;math&amp;gt;  (r \bunion  \ldots  \bunion  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} )(x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_CPROD}}||&amp;lt;math&amp;gt;  (S \cprod  \{ F\} )(x) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_ID}}||&amp;lt;math&amp;gt;  \id (x) \;\;\defi\;\;  x &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_FUNIMAGE_CONVERSE}}||&amp;lt;math&amp;gt;  f(f^{-1} (E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_CONVERSE_FUNIMAGE}}||&amp;lt;math&amp;gt;  f^{-1}(f(E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_FUNIMAGE_CONVERSE_SETENUM}}||&amp;lt;math&amp;gt;  \{x \mapsto a, \ldots, y \mapsto b\}(\{a \mapsto x, \ldots, b \mapsto y\}(E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_DOMRES}}||&amp;lt;math&amp;gt;(E \domres F)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;(E \domsub F)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_RANRES}}||&amp;lt;math&amp;gt;(F\ranres E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_RANSUB}}||&amp;lt;math&amp;gt;(F \ransub E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_SETMINUS}}||&amp;lt;math&amp;gt;(F \setminus E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|||{{Rulename|DEF_EQUAL_FUNIMAGE}}||&amp;lt;math&amp;gt; f(x) = y \;\;\defi\;\; x \mapsto y \in f &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_BCOMP}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  s \fcomp \ldots  \fcomp r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_ID_SING}}||&amp;lt;math&amp;gt;  \{ E\} \domres \id \;\;\defi\;\;  \{ E \mapsto  E\} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOM}}||&amp;lt;math&amp;gt;  \dom (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RAN}}||&amp;lt;math&amp;gt;  \ran (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_CONVERSE}}||&amp;lt;math&amp;gt;  r^{-1-1}  \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_RELIMAGE_FCOMP}}||&amp;lt;math&amp;gt;  (p \fcomp q)[s] \;\;\defi\;\;  q[p[s]] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_DOMRES}}||&amp;lt;math&amp;gt;  (s \domres  p) \fcomp q \;\;\defi\;\;  s \domres  (p \fcomp q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_DOMSUB}}||&amp;lt;math&amp;gt;  (s \domsub  p) \fcomp q \;\;\defi\;\;  s \domsub  (p \fcomp q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_RANRES}}||&amp;lt;math&amp;gt;  p \fcomp (q \ranres  s) \;\;\defi\;\;  (p \fcomp q) \ranres  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_RANSUB}}||&amp;lt;math&amp;gt;  p \fcomp (q \ransub  s) \;\;\defi\;\;  (p \fcomp q) \ransub  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_FCOMP_SING}}||&amp;lt;math&amp;gt;  \{E\mapsto F\}\fcomp\{F\mapsto G\} \;\;\defi\;\;  \{E\mapsto G\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_RELDOMRAN}}||&amp;lt;math&amp;gt;  \emptyset  \strel  \emptyset  \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\tsur  \tbij&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOM}}||&amp;lt;math&amp;gt;  \dom (\mathit{Ty}) \;\;\defi\;\;  \mathit{Ta} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RAN}}||&amp;lt;math&amp;gt;  \ran (\mathit{Ty}) \;\;\defi\;\;  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_CPROD}}||&amp;lt;math&amp;gt;  \dom (E \cprod  E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_CPROD}}||&amp;lt;math&amp;gt;  \ran (E \cprod  E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_DOMRES}}||&amp;lt;math&amp;gt;\dom(A\domres f) \;\;\defi\;\; \dom(f)\binter A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_DOMSUB}}||&amp;lt;math&amp;gt;\dom(A\domsub f) \;\;\defi\;\; \dom(f)\setminus A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_RANRES}}||&amp;lt;math&amp;gt;\ran(f\ranres A) \;\;\defi\;\; \ran(f)\binter A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_RANSUB}}||&amp;lt;math&amp;gt;\ran(f\ransub A) \;\;\defi\;\; \ran(f)\setminus A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOM}}||&amp;lt;math&amp;gt;  E \in  \dom (r) \;\;\defi\;\;  \exists y \qdot  E \mapsto  y \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RAN}}||&amp;lt;math&amp;gt;  F \in  \ran (r) \;\;\defi\;\;  \exists x \qdot  x \mapsto  F  \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_CONVERSE}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r^{-1}  \;\;\defi\;\;  F \mapsto  E \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOMRES}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \domres  r \;\;\defi\;\;  E \in  S \land  E \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RANRES}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r \ranres  T \;\;\defi\;\;  E \mapsto  F \in  r \land  F \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOMSUB}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \domsub  r \;\;\defi\;\;  E \notin  S \land  E \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RANSUB}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r \ranres  T \;\;\defi\;\;  E \mapsto  F \in  r \land  F \notin  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELIMAGE}}||&amp;lt;math&amp;gt;  F \in  r[w] \;\;\defi\;\;  \exists x \qdot  x \in  w \land  x \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_FCOMP}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  (p \fcomp q) \;\;\defi\;\;  \exists x \qdot  E \mapsto  x \in  p \land  x \mapsto  F \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_OVERL}}||&amp;lt;math&amp;gt;  p \ovl  q \;\;\defi\;\;  (\dom (q) \domsub  p) \bunion  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_ID}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  \id \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DPROD}}||&amp;lt;math&amp;gt;  E \mapsto  (F \mapsto  G) \in  p \dprod  q \;\;\defi\;\;  E \mapsto  F \in  p \land  E \mapsto  G \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_PPROD}}||&amp;lt;math&amp;gt;  (E \mapsto  G) \mapsto  (F \mapsto  H) \in  p \pprod  q \;\;\defi\;\;  E \mapsto  F \in  p \land  G \mapsto  H \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_REL}}||&amp;lt;math&amp;gt;  r \in  S \rel  T \;\;\defi\;\;  r\subseteq S\cprod T&amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELDOM}}||&amp;lt;math&amp;gt;  r \in  S \trel  T \;\;\defi\;\;  r \in  S \rel  T \land  \dom (r) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELRAN}}||&amp;lt;math&amp;gt;  r \in  S \srel  T \;\;\defi\;\;  r \in  S \rel  T \land  \ran (r) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELDOMRAN}}||&amp;lt;math&amp;gt;  r \in  S \strel  T \;\;\defi\;\;  r \in  S \rel  T \land  \dom (r) = S \land  \ran (r) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_FCT}}||&amp;lt;math&amp;gt;\begin{array}{rcl}&lt;br /&gt;
 f \in  S \pfun  T &amp;amp; \defi &amp;amp; f \in  S \rel  T  \\  &amp;amp; \land &amp;amp; (\forall x,y,z \qdot  x \mapsto  y \in  f \land  x \mapsto  z \in  f \limp  y = z) \\ \end{array} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TFCT}}||&amp;lt;math&amp;gt;  f \in  S \tfun  T \;\;\defi\;\;  f \in  S \pfun  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_INJ}}||&amp;lt;math&amp;gt;  f \in  S \pinj  T \;\;\defi\;\;  f \in  S \pfun  T \land  f^{-1}  \in  T \pfun  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TINJ}}||&amp;lt;math&amp;gt;  f \in  S \tinj  T \;\;\defi\;\;  f \in  S \pinj  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SURJ}}||&amp;lt;math&amp;gt;  f \in  S \psur  T \;\;\defi\;\;  f \in  S \pfun  T \land  \ran (f) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TSURJ}}||&amp;lt;math&amp;gt;  f \in  S \tsur  T \;\;\defi\;\;  f \in  S \psur  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BIJ}}||&amp;lt;math&amp;gt;  f \in  S \tbij  T \;\;\defi\;\;  f \in  S \tinj  T \land  \ran (f) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DISTRI_BCOMP_BUNION}}||&amp;lt;math&amp;gt;  r \bcomp  (s \bunion  t) \;\;\defi\;\;  (r \bcomp  s) \bunion  (r \bcomp  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_FCOMP_BUNION_R}}||&amp;lt;math&amp;gt;  p \fcomp (q \bunion  r) \;\;\defi\;\;  (p \fcomp q) \bunion  (p \fcomp r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_FCOMP_BUNION_L}}||&amp;lt;math&amp;gt;  (q \bunion  r) \fcomp p \;\;\defi\;\;  (q \fcomp p) \bunion  (r \fcomp p) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_BUNION}}||&amp;lt;math&amp;gt;  r \dprod  (s \bunion  t) \;\;\defi\;\;  (r \dprod  s) \bunion  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_BINTER}}||&amp;lt;math&amp;gt;  r \dprod  (s \binter  t) \;\;\defi\;\;  (r \dprod  s) \binter  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_SETMINUS}}||&amp;lt;math&amp;gt;  r \dprod  (s \setminus t) \;\;\defi\;\;  (r \dprod  s) \setminus (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_OVERL}}||&amp;lt;math&amp;gt;  r \dprod  (s \ovl  t) \;\;\defi\;\;  (r \dprod  s) \ovl  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_BUNION}}||&amp;lt;math&amp;gt;  r \pprod  (s \bunion  t) \;\;\defi\;\;  (r \pprod  s) \bunion  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_BINTER}}||&amp;lt;math&amp;gt;  r \pprod  (s \binter  t) \;\;\defi\;\;  (r \pprod  s) \binter  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_SETMINUS}}||&amp;lt;math&amp;gt;  r \pprod  (s \setminus t) \;\;\defi\;\;  (r \pprod  s) \setminus (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_OVERL}}||&amp;lt;math&amp;gt;  r \pprod  (s \ovl  t) \;\;\defi\;\;  (r \pprod  s) \ovl  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_OVERL_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ovl  r \;\;\defi\;\;  (p \ovl  r) \bunion  (q \ovl  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_OVERL_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ovl  r \;\;\defi\;\;  (p \ovl  r) \binter  (q \ovl  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BUNION_R}}||&amp;lt;math&amp;gt;  s \domres  (p \bunion  q) \;\;\defi\;\;  (s \domres  p) \bunion  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BUNION_L}}||&amp;lt;math&amp;gt;  (s \bunion  t) \domres  r \;\;\defi\;\;  (s \domres  r) \bunion  (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BINTER_R}}||&amp;lt;math&amp;gt;  s \domres  (p \binter  q) \;\;\defi\;\;  (s \domres  p) \binter  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BINTER_L}}||&amp;lt;math&amp;gt;  (s \binter  t) \domres  r \;\;\defi\;\;  (s \domres  r) \binter  (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_SETMINUS_R}}||&amp;lt;math&amp;gt;  s \domres  (p \setminus q) \;\;\defi\;\;  (s \domres  p) \setminus (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_SETMINUS_L}}||&amp;lt;math&amp;gt;  (s \setminus t) \domres  r \;\;\defi\;\;  (s \domres  r) \setminus (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_DPROD}}||&amp;lt;math&amp;gt;  s \domres  (p \dprod  q) \;\;\defi\;\;  (s \domres  p) \dprod  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_OVERL}}||&amp;lt;math&amp;gt;  s \domres  (r \ovl  q) \;\;\defi\;\;  (s \domres  r) \ovl  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BUNION_R}}||&amp;lt;math&amp;gt;  s \domsub  (p \bunion  q) \;\;\defi\;\;  (s \domsub  p) \bunion  (s \domsub  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BUNION_L}}||&amp;lt;math&amp;gt;  (s \bunion  t) \domsub  r \;\;\defi\;\;  (s \domsub  r) \binter  (t \domsub  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BINTER_R}}||&amp;lt;math&amp;gt;  s \domsub  (p \binter  q) \;\;\defi\;\;  (s \domsub  p) \binter  (s \domsub  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BINTER_L}}||&amp;lt;math&amp;gt;  (s \binter  t) \domsub  r \;\;\defi\;\;  (s \domsub  r) \bunion  (t \domsub  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMSUB_DPROD}}||&amp;lt;math&amp;gt;  A \domsub  (r \dprod  s) \;\;\defi\;\;  (A \domsub  r) \dprod  (A \domsub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMSUB_OVERL}}||&amp;lt;math&amp;gt;  A \domsub  (r \ovl  s) \;\;\defi\;\;  (A \domsub  r) \ovl  (A \domsub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BUNION_R}}||&amp;lt;math&amp;gt;  r \ranres (s \bunion t) \;\;\defi\;\;  (r \ranres  s) \bunion  (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \bunion  (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BINTER_R}}||&amp;lt;math&amp;gt;  r \ranres (s \binter t) \;\;\defi\;\;  (r \ranres  s) \binter  (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \binter  (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_RANRES_SETMINUS_R}}||&amp;lt;math&amp;gt;  r \ranres  (s \setminus t) \;\;\defi\;\;  (r \ranres  s) \setminus (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_RANRES_SETMINUS_L}}||&amp;lt;math&amp;gt;  (p \setminus q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \setminus (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BUNION_R}}||&amp;lt;math&amp;gt;  r \ransub (s\bunion t) \;\;\defi\;\;  (r \ransub  s) \binter  (r \ransub  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ransub  s \;\;\defi\;\;  (p \ransub  s) \bunion  (q \ransub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BINTER_R}}||&amp;lt;math&amp;gt;  r \ransub (s \binter t) \;\;\defi\;\;  (r \ransub  s) \bunion  (r \ransub  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ransub  s \;\;\defi\;\;  (p \ransub  s) \binter  (q \ransub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_CONVERSE_BUNION}}||&amp;lt;math&amp;gt;  (p \bunion  q)^{-1}  \;\;\defi\;\;  p^{-1}  \bunion  q^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_BINTER}}||&amp;lt;math&amp;gt;  (p \binter  q)^{-1}  \;\;\defi\;\;  p^{-1}  \binter  q^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_SETMINUS}}||&amp;lt;math&amp;gt;  (r \setminus s)^{-1}  \;\;\defi\;\;  r^{-1}  \setminus s^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_BCOMP}}||&amp;lt;math&amp;gt;  (r \bcomp  s)^{-1}  \;\;\defi\;\;  (s^{-1}  \bcomp  r^{-1} ) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_FCOMP}}||&amp;lt;math&amp;gt;  (p \fcomp q)^{-1}  \;\;\defi\;\;  (q^{-1}  \fcomp p^{-1} ) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_PPROD}}||&amp;lt;math&amp;gt;  (r \pprod  s)^{-1}  \;\;\defi\;\;  r^{-1}  \pprod  s^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_DOMRES}}||&amp;lt;math&amp;gt;  (s \domres  r)^{-1}  \;\;\defi\;\;  r^{-1}  \ranres  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_DOMSUB}}||&amp;lt;math&amp;gt;  (s \domsub  r)^{-1}  \;\;\defi\;\;  r^{-1}  \ransub  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  s)^{-1}  \;\;\defi\;\;  s \domres  r^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  s)^{-1}  \;\;\defi\;\;  s \domsub  r^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOM_BUNION}}||&amp;lt;math&amp;gt;  \dom (r \bunion  s) \;\;\defi\;\;  \dom (r) \bunion  \dom (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RAN_BUNION}}||&amp;lt;math&amp;gt;  \ran (r \bunion  s) \;\;\defi\;\;  \ran (r) \bunion  \ran (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RELIMAGE_BUNION_R}}||&amp;lt;math&amp;gt;  r[S \bunion  T] \;\;\defi\;\;  r[S] \bunion  r[T] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RELIMAGE_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q)[S] \;\;\defi\;\;  p[S] \bunion  q[S] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_DOM_TOTALREL}}||&amp;lt;math&amp;gt;  \dom (r) \;\;\defi\;\;  E &amp;lt;/math&amp;gt; || with hypothesis &amp;lt;math&amp;gt;r \in E \ \mathit{op}\  F&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel, \strel, \tfun, \tinj, \tsur, \tbij&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_RAN_SURJREL}}||&amp;lt;math&amp;gt;  \ran (r) \;\;\defi\;\;  F &amp;lt;/math&amp;gt; || with hypothesis &amp;lt;math&amp;gt;r \in E \ \mathit{op}\  F&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\srel,\strel, \psur, \tsur, \tbij&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_PRJ1_SURJ}}||&amp;lt;math&amp;gt;\prjone \in\mathit{Ty}_1\ \mathit{op}\ \mathit{Ty}_2\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathit{Ty}_2&amp;lt;/math&amp;gt; are types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel, \trel, \srel, \strel, \pfun, \tfun, \psur, \tsur &amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_PRJ2_SURJ}}||&amp;lt;math&amp;gt;\prjtwo \in\mathit{Ty}_1\ \mathit{op}\ \mathit{Ty}_2\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathit{Ty}_2&amp;lt;/math&amp;gt; are types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel, \trel, \srel, \strel, \pfun, \tfun, \psur, \tsur &amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_ID_BIJ}}||&amp;lt;math&amp;gt;\id \in\mathit{Ty}\ \mathit{op}\ \mathit{Ty}\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is any arrow ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAPSTO_PRJ1_PRJ2}}||&amp;lt;math&amp;gt;\prjone(E)\mapsto\prjtwo(E)\;\;\defi\;\; E &amp;lt;/math&amp;gt; ||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_EXPAND_PRJS}}||&amp;lt;math&amp;gt; E \;\;\defi\;\; \prjone(E) \mapsto \prjtwo(E) &amp;lt;/math&amp;gt; || ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_SUCC}}||&amp;lt;math&amp;gt;\dom(\usucc) \;\;\defi\;\; \intg&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_SUCC}}||&amp;lt;math&amp;gt;\ran(\usucc) \;\;\defi\;\; \intg&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_MULTI_IN_BUNION}}||&amp;lt;math&amp;gt; E\in A\bunion\cdots\bunion\left\{\cdots, E,\cdots\right\}\bunion\cdots\bunion B\;\;\defi\;\; \btrue&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_MULTI_IN_SETMINUS}}||&amp;lt;math&amp;gt; E\in S\setminus\left\{\cdots, E,\cdots\right\} \;\;\defi\;\; \bfalse&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_PRED}}||&amp;lt;math&amp;gt; \upred\;\;\defi\;\; \usucc^{-1}&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14553</id>
		<title>Inference Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14553"/>
		<updated>2024-02-01T10:22:11Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add rule for finiteness of explicit set comprehension&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;font color=red&amp;gt;CAUTION! Any modification to this page shall be announced on the [[#Mailing_lists |User]] mailing list!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Inference_Rules]].&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; in the first column are currently broken in Rodin 1.1 (see [http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2895507&amp;amp;group_id=108850&amp;amp;atid=651669 bug 2895507]).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{P} \;\;\vdash \;\; \textbf{P}^{\dagger}} &amp;lt;/math&amp;gt;|| see below for &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP_OR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{Q} \;\;\vdash \;\; \textbf{P} \lor \ldots \lor  \textbf{Q}^{\dagger} \lor \ldots \lor \textbf{R}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{Q}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CNTR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\textbf{P},\;\textbf{nP}^{\dagger} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FALSE_HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\bfalse \;\;\vdash \;\; \textbf{P}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|TRUE_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H} \;\;\vdash \;\; \btrue}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in E\;\mathit{op}\;F \;\;\vdash\;\; f\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_IMAGE_GOAL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2,\; f(E)\in S_2\;\;\vdash\;\; \mathbf{P}(f(E))}{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2\;\;\vdash\;\; \mathbf{P}(f(E))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FUN_GOAL_REC}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S_1\;\mathit{op_1}\;(S_2\;\mathit{op_2}\;(\ldots(S_n\;\mathit{op_n}(U\;\mathit{opf}\;V\;))\ldots)) \;\vdash\;\; f(E_1)(E_2)...(E_n)\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types, &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathit{opf}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DBL_HYP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H},\;\textbf{P},\;\textbf{P}  \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P},\textbf{Q} \; \; \vdash \; \;  \textbf{R}}{\textbf{H},\; \textbf{P} \land \textbf{Q} \; \; \vdash \; \;  &lt;br /&gt;
\textbf{R}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \;  \textbf{P} \qquad \textbf{H} \; \; \vdash \; \; \textbf{Q}}{\textbf{H} \; \; \vdash \; \;  \textbf{P} \; \land \; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|IMP_L1}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T}}{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{Q} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H} \;\;\vdash \;\; \textbf{P} \limp \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P} \limp \textbf{Q},  \textbf{P} \limp \textbf{R}\;\;\vdash \;\; \textbf{S}}{\textbf{H},\;\textbf{P} \limp  \textbf{Q} \land \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_OR_L}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P} \limp \textbf{R},  \textbf{Q} \limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P} \lor  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AUTO_MH}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P},\;\textbf{Q}\limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P},\; \textbf{P} \land  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (E=b)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (E=b) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (b=E)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (b=E) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|XST_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;  \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}{&lt;br /&gt;
\textbf{H},\;  \exists \, \textbf{x}\, \qdot\, \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ALL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}\; \; \vdash \; \;  \textbf{P(x)} }{ \textbf{H} \; \; \vdash \; \;  \forall \textbf{x}\, \qdot\, \textbf{P(x)} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; x=E \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; E=x \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SUBSET_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{V})}&lt;br /&gt;
{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U} \binter \dots \binter \textbf{V})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{U}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|IN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{U})}&lt;br /&gt;
{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|NOTIN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\emptyset)}&lt;br /&gt;
{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \neg\,\textbf{P}}{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \bfalse}{\textbf{H} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad\ldots\qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \lor \ldots \lor \textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \lnot\textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \limp\textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|MH}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\textbf{P} \qquad \textbf{H},\; \textbf{Q} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HM}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\neg\,\textbf{Q} \qquad \textbf{H},\; \neg\,\textbf{P} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQV_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(Q)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(Q)}}{\textbf{H(P)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(P)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQV_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(P)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(P)}}{\textbf{H(Q)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(Q)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E  &lt;br /&gt;
,\;\textbf{P}(F)\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,(G=E)  &lt;br /&gt;
,\;\textbf{P}((\{E\}) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl\{E &lt;br /&gt;
\mapsto F\})(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E \;\;\vdash\;\;\textbf{Q}(F) &lt;br /&gt;
\qquad \textbf{H},\; \neg\,(G=E)  \;\;\vdash\;\;\textbf{Q}((\{E\}) \domsub f)(G))}{\textbf{H} &lt;br /&gt;
\;\;\vdash \;\; \textbf{Q}((f\ovl\{E \mapsto F\})(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g)  ,\;\textbf{P}(g(G))\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,G \in \dom(g)  ,\;\textbf{P}((\dom(g) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl g)(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g) \;\;\vdash\;\;\textbf{Q}(g(G)) \qquad \textbf{H},\; \neg\, G \in \dom(g) \;\;\vdash\;\;\textbf{Q}((\dom(g) \domsub f)(G))}{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f\ovl g)(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \binter f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \binter T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \binter f[T]) \;\;\vdash\;\;\textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \binter T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \setminus f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \setminus T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \setminus f[T]) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \setminus T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H} \; \; \vdash \; \; \textbf{Q}(\{ f(E)\} ) }{\textbf{H} \; \; \vdash \; \;  \textbf{Q}(f[\{ E\} ])} &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H},\; \textbf{Q}(\{ f(E)\}) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[\{ E\} ]) \;\;\vdash\;\; \textbf{G} } &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(g(f(x))) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f \fcomp g)(x))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H},\; \textbf{Q}(g(f(x))) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}((f \fcomp g)(x)) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SUBSETEQ_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(T) \qquad\textbf{H} \;\;\vdash \;\; S \subseteq T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(S)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\lor\;\ldots \;\lor\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\binter\;\ldots \;\binter\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_KINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, s \in S \land \finite\,(s)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\inter(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_QINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, P \land \finite\,(E)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Inter s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\land\;\ldots \;\land\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\bunion\;\ldots \;\bunion\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_KUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S) \;\land\; (\forall s\, \qdot\, s \in S \limp \finite\,(s))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\union(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_QUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite(\{s\qdot P\mid E\})\;\land\;(\forall s\, \qdot\, P \limp \finite\,(E))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Union s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S)}{\textbf{H} \;\;\vdash \;\; \finite\,(S \;\setminus\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|FIN_COMPSET_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(\{x \,\mid\, P(x)\})}{\textbf{H} \;\;\vdash \;\; \finite\,(\{x \,\qdot\, P(x) \,\mid\, F(x)\})}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_REL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; r\in S\;\mathit{op}\;T,\; \finite\,(S),\; \finite\,(T) \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\rel T) \qquad\textbf{H} \;\;\vdash \;\; r \;\in\; S \rel T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S \rel T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(r[s])}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_DOM}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(S) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_RAN}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(T) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN1_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN2_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(s) }{\textbf{H} \;\;\vdash \;\; \finite\,(f[s])}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_LT_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \intg \setminus \natn }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_GE_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \nat }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|CARD_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b \;\;\vdash \;\; \textbf{Q}(b-a+1) \qquad \textbf{H},\, b &amp;lt; a \;\;\vdash \;\; \textbf{Q}(0) }{\textbf{H} \;\;\vdash\;\; \textbf{Q}(\card\,(a\upto b))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|CARD_EMPTY_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b,\,\textbf{P}(b-a+1)  \;\;\vdash \;\; \textbf{Q} \qquad \textbf{H},\, b &amp;lt; a ,\, \textbf{P}(0)\;\;\vdash \;\; \textbf{Q} }{\textbf{H},\,\textbf{P}(\card\,(a\upto b))  \;\;\vdash\;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subseteq T}{\textbf{H} \;\;\vdash\;\; \card(S) \leq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subseteq S}{\textbf{H} \;\;\vdash\;\; \card(S) \geq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subset T}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;lt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subset S}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;gt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S = T}{\textbf{H} \;\;\vdash\;\; \card(S) = \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card(S) - \card(S\binter T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) - \card(S\binter T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \setminus  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(T) \qquad \textbf{H},\, \textbf{P}(\card(S) * \card(T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \finite(T) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) * \card(T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \cprod  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} , [x \bcmeq E]\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\textbf{P} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\textbf{Q} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Ponens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\lnot\textbf{Q} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\lnot\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Tollens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CUT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}) \;\;\vdash \;\; \textbf{\textbf{P}} \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || hypothesis &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; is added || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EXISTS_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(E)}{\textbf{H} \;\;\vdash\;\; \exists x \qdot \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTINCT_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{\textbf{G}} \qquad  \textbf{H}, {WD}(\textbf{P}), \lnot \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || case distinction on predicate &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} \;\;\vdash \;\; \textbf{G}}{ \textbf{H}, \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H} \;\;\vdash \;\; \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} }{ \textbf{H}  \;\;\vdash\;\; \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R} }&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_REL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\rel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TREL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\trel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_PFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\pfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\tfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H}, x=0 \;\;\vdash \;\; \textbf{P}(x) \qquad \textbf{H}, n\in\nat, \textbf{P}(n) \;\;\vdash \;\; \textbf{P}(n+1)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT_COMPL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(0) \qquad \textbf{H}, n\in\nat, \forall k\qdot 0\leq k\land k &amp;lt; n \limp \textbf{P}(k) \;\;\vdash \;\; \textbf{P}(n)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Those following rules have been implemented in the reasoner GeneralizedModusPonens.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{P,\varphi(\btrue) \vdash G}{P,\varphi(P^{\dagger}) \vdash G} &amp;lt;/math&amp;gt; ||  see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger},\varphi(\bfalse) \vdash G}{nP^{\dagger},\varphi(P) \vdash G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{P \vdash \varphi(\btrue)}{P \vdash \varphi(P^{\dagger})} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger} \vdash \varphi(\bfalse)}{nP^{\dagger} \vdash \varphi(P)} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash \lnot nG^{\dagger}}{H,\varphi(G)\vdash \lnot nG^{\dagger}} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash \lnot G}{H,\varphi(G^{\dagger})\vdash \lnot G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n}{H,\varphi(G_i)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n}{H,\varphi(G_i^{\dagger})\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thos following rules have been implemented in the MembershipGoal reasoner.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SUBSET_SUBSETEQ}}|| &amp;lt;math&amp;gt; A\subset B\vdash A\subseteq B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DOM_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \dom(A)\subseteq\dom(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RAN_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \ran(A)\subseteq\ran(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_LR}}|| &amp;lt;math&amp;gt; A=B\vdash A\subseteq B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_RL}}|| &amp;lt;math&amp;gt; A=B\vdash B\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_CPROD}}|| &amp;lt;math&amp;gt; x\in\dom(A\cprod B)\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_CPROD}}|| &amp;lt;math&amp;gt; y\in\ran(A\cprod B)\vdash y\in B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash x\in\dom(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash y\in\ran(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SETENUM_SUBSET}}|| &amp;lt;math&amp;gt; \left\{a,\cdots,x,\cdots, z\right\}\subseteq A\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OVR_RIGHT_SUBSET}}|| &amp;lt;math&amp;gt; f\ovl\cdots\ovl g\ovl\cdots\ovl h\subseteq A\vdash g\ovl\cdots\ovl h\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RELSET_SUBSET_CPROD}}|| &amp;lt;math&amp;gt; f\in A\;op\;B\vdash f\subseteq A\cprod B&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IN_SUBSET}}|| &amp;lt;math&amp;gt; x\in A,\;\; A\subseteq B\vdash x\in B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The conventions used in this table are described in [[Variations in HYP, CNTR and GenMP]].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;RRHeader&amp;quot; text-align=&amp;quot;left&amp;quot; border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;8&amp;quot; rules=&amp;quot;all&amp;quot; frame=&amp;quot;box&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border-style:solid; border-color:#AAAAAA;  display:table; {{{style|}}}&amp;quot;&lt;br /&gt;
! &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; !! Side Condition&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b , \ \ b \ge a  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b , \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; || where a and b are integers&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;lt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;gt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a  &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \le b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \ge b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A \subseteq B, \ \ B \subseteq A  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \ \ A \subset B, \ \ B \subset A &amp;lt;/math&amp;gt; || where A and B are sets&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, B \subset A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B, \ \ A \subseteq B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot B \subset A, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot A \subseteq B  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; B \subset A, \ \ B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt;||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \ \ A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot f = e &amp;lt;/math&amp;gt; || where e and f are scalars&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot  f = e &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; || || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also [[Extension Proof Rules#Inference Rules]].&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14536</id>
		<title>Arithmetic Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14536"/>
		<updated>2023-10-25T09:44:15Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add planned rules SIMP_{MIN/MAX}_IN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_0}}||&amp;lt;math&amp;gt;  0 \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_1}}||&amp;lt;math&amp;gt;  E \,\bmod\,  1 \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_SING}}||&amp;lt;math&amp;gt;  \min (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_SING}}||&amp;lt;math&amp;gt;  \max (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL}}||&amp;lt;math&amp;gt;  \min (\nat ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL1}}||&amp;lt;math&amp;gt;  \min (\natn ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \min (S \bunion  \ldots  \bunion  \{ \min (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp; \min (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\ \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \max (S \bunion  \ldots  \bunion  \{ \max (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp;  \max (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\  \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_UPTO}}||&amp;lt;math&amp;gt;  \min (E \upto  F) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_UPTO}}||&amp;lt;math&amp;gt;  \max (E \upto  F) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_MIN_IN}}||&amp;lt;math&amp;gt;  \min (S) \in S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_MAX_IN}}||&amp;lt;math&amp;gt;  \max (S) \in S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MIN}}||&amp;lt;math&amp;gt;  \min (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \min (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MAX}}||&amp;lt;math&amp;gt;  \max (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \max (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \geq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CARD}}||&amp;lt;math&amp;gt;  \card (\emptyset ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_SING}}||&amp;lt;math&amp;gt;  \card (\{ E\} ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_CARD}}||&amp;lt;math&amp;gt;  \card (S) = 0 \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_POW}}||&amp;lt;math&amp;gt;  \card (\pow (S)) \;\;\defi\;\;  2\expn{\card(S)} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_BUNION}}||&amp;lt;math&amp;gt;  \card (S \bunion  T) \;\;\defi\;\;  \card (S) + \card (T) - \card (S \binter  T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS}}||&amp;lt;math&amp;gt;\card(S\setminus T)\;\;\defi\;\;\card(S) - \card(T)&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;T\subseteq S&amp;lt;/math&amp;gt; and either &amp;lt;math&amp;gt;\finite(S)&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;\finite(T)&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_SETENUM}}||&amp;lt;math&amp;gt;\card(S\setminus\{E_1,\ldots,E_n\})\;\;\defi\;\;\card(S) - \card(\{E_1,\ldots,E_n\})&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;E_i\in S&amp;lt;/math&amp;gt; for all &amp;lt;math&amp;gt;i\in 1\upto n&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_CONVERSE}}||&amp;lt;math&amp;gt;  \card (r^{-1} ) \;\;\defi\;\;  \card (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID}}||&amp;lt;math&amp;gt;  \card (\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow (S \cprod S) &amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID_DOMRES}}||&amp;lt;math&amp;gt;  \card (S\domres\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1}}||&amp;lt;math&amp;gt;  \card (\prjone) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2}}||&amp;lt;math&amp;gt;  \card (\prjtwo) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjone) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjtwo) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_LAMBDA}}||&amp;lt;math&amp;gt; \card(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\; \card(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_CARD_UPTO}}||&amp;lt;math&amp;gt;  \card (i \upto  j) \;\;\defi\;\;  j-i+1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_TYPE_CARD}}||&amp;lt;math&amp;gt;  \card (\mathit{Tenum}) \;\;\defi\;\;  N &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Tenum}&amp;lt;/math&amp;gt; is a carrier set containing &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; elements ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) \geq  1 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_1}}||&amp;lt;math&amp;gt;  1 \leq  \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_0}}||&amp;lt;math&amp;gt;  0 \leq  \card (S) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) \geq  0 \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) &amp;gt; 0 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT_CARD_0}}||&amp;lt;math&amp;gt;  0 &amp;lt; \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) = 1 \;\;\defi\;\;  \exists x \qdot  S = \{ x\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL}}||&amp;lt;math&amp;gt;  \card (S) \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL1}}||&amp;lt;math&amp;gt;  \card (S) \in  \natn  \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL}}||&amp;lt;math&amp;gt;  i \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN_NATURAL1}}||&amp;lt;math&amp;gt;  0 \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL1}}||&amp;lt;math&amp;gt;  i \in  \natn  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_UPTO}}||&amp;lt;math&amp;gt;  i \upto  j \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;j &amp;lt; i&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL}}||&amp;lt;math&amp;gt;  -i \in  \nat  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL1}}||&amp;lt;math&amp;gt;  -i \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL}}||&amp;lt;math&amp;gt;x \in \nat  \;\;\defi\;\;  0 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL1}}||&amp;lt;math&amp;gt;x \in \natn  \;\;\defi\;\;  1 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_TRUE}}||&amp;lt;math&amp;gt;  \bool (P) = \True  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_FALSE}}||&amp;lt;math&amp;gt;  \bool (P) = \False  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_KBOOL_LIT_EQUAL_TRUE}}||&amp;lt;math&amp;gt; \bool (B = \True) \;\;\defi\;\; B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MIN}}||&amp;lt;math&amp;gt;  E = \min (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \leq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MAX}}||&amp;lt;math&amp;gt;  E = \max (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \geq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PLUS}}||&amp;lt;math&amp;gt;  E + \ldots  + 0 + \ldots  + F \;\;\defi\;\;  E + \ldots  + F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_R}}||&amp;lt;math&amp;gt;  E - 0 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_L}}||&amp;lt;math&amp;gt;  0 - E \;\;\defi\;\;  -E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_MINUS}}||&amp;lt;math&amp;gt;   - (- E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_UNMINUS}}||&amp;lt;math&amp;gt; E  - (- F) \;\;\defi\;\;  E + F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;(-F)&amp;lt;/math&amp;gt; is a unary minus expression or a negative literal ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS}}||&amp;lt;math&amp;gt;  E - E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_L}}||&amp;lt;math&amp;gt; (A + \ldots + C + \ldots + B) - C \;\;\defi\;\; A + \ldots + B &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_R}}||&amp;lt;math&amp;gt; C - (A + \ldots + C + \ldots + B)  \;\;\defi\;\;  -(A + \ldots + B) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_PLUS}}||&amp;lt;math&amp;gt; (A + \ldots + E + \ldots + B) - (C + \ldots + E + \ldots + D)  \;\;\defi\;\; (A + \ldots + B) - (C + \ldots + D) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_PLUS_MINUS}}||&amp;lt;math&amp;gt;(A + \ldots + D + \ldots + (C - D) + \ldots + B) \;\;\defi\;\; A + \ldots + C + \ldots + B  &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_PLUS}}||&amp;lt;math&amp;gt; A + \ldots + E + \ldots + B  &amp;lt; C + \ldots + E + \ldots + D   \;\;\defi\;\; A + \ldots + B &amp;lt; C + \ldots + D &amp;lt;/math&amp;gt;|| where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt;||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_R}}||&amp;lt;math&amp;gt; C &amp;lt; A + \ldots + C \ldots + B   \;\;\defi\;\;   0 &amp;lt; A + \ldots + B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_L}}||&amp;lt;math&amp;gt; A + \ldots + C \ldots + B &amp;lt; C   \;\;\defi\;\;   A + \ldots + B &amp;lt; 0 &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_R}}||&amp;lt;math&amp;gt; A - C &amp;lt; B - C  \;\;\defi\;\; A &amp;lt; B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_L}}||&amp;lt;math&amp;gt; C - A &amp;lt; C - B  \;\;\defi\;\; B &amp;lt; A &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_0}}||&amp;lt;math&amp;gt;  E * \ldots  * 0 * \ldots  * F \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_1}}||&amp;lt;math&amp;gt;  E * \ldots  * 1 * \ldots  * F \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_EVEN}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;|| if an even number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_ODD}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  -(E * \ldots  * F) &amp;lt;/math&amp;gt;|| if an odd number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MINUS}}||&amp;lt;math&amp;gt;   - (i) \;\;\defi\;\;  (-i) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL}}||&amp;lt;math&amp;gt;  i = j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE}}||&amp;lt;math&amp;gt;  i \leq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT}}||&amp;lt;math&amp;gt;  i &amp;lt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE}}||&amp;lt;math&amp;gt;  i \geq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT}}||&amp;lt;math&amp;gt;  i &amp;gt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DIV_MINUS}}||&amp;lt;math&amp;gt;  (- E) \div  (-F) \;\;\defi\;\;  E \div  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_1}}||&amp;lt;math&amp;gt;  E \div  1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_0}}||&amp;lt;math&amp;gt;  0 \div  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_R}}||&amp;lt;math&amp;gt;  E ^ 1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_L}}||&amp;lt;math&amp;gt;  1 ^ E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_0}}||&amp;lt;math&amp;gt;  E ^ 0 \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LE}}||&amp;lt;math&amp;gt;  E \leq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LT}}||&amp;lt;math&amp;gt;  E &amp;lt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GE}}||&amp;lt;math&amp;gt;  E \geq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GT}}||&amp;lt;math&amp;gt;  E &amp;gt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV}}||&amp;lt;math&amp;gt;  E \div  E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV_PROD}}||&amp;lt;math&amp;gt;  (X * \ldots * E * \ldots * Y) \div  E \;\;\defi\;\;  X * \ldots * Y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MOD}}||&amp;lt;math&amp;gt;  E \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_PLUS}}||&amp;lt;math&amp;gt;  a * (b + c) \;\;\defi\;\;  (a * b) + (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_MINUS}}||&amp;lt;math&amp;gt;  a * (b - c) \;\;\defi\;\;  (a * b) - (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_NOT_EQUAL}}||&amp;lt;math&amp;gt;    \lnot E = F \;\;\defi\;\;  E &amp;lt; F \lor E &amp;gt; F  &amp;lt;/math&amp;gt;|| &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; must be of Integer type ||  M &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14535</id>
		<title>Arithmetic Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14535"/>
		<updated>2023-10-04T09:55:07Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add requested rule SIMP_KBOOL_LIT_EQUAL_TRUE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_0}}||&amp;lt;math&amp;gt;  0 \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_1}}||&amp;lt;math&amp;gt;  E \,\bmod\,  1 \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_SING}}||&amp;lt;math&amp;gt;  \min (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_SING}}||&amp;lt;math&amp;gt;  \max (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL}}||&amp;lt;math&amp;gt;  \min (\nat ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL1}}||&amp;lt;math&amp;gt;  \min (\natn ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \min (S \bunion  \ldots  \bunion  \{ \min (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp; \min (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\ \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \max (S \bunion  \ldots  \bunion  \{ \max (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp;  \max (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\  \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_UPTO}}||&amp;lt;math&amp;gt;  \min (E \upto  F) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_UPTO}}||&amp;lt;math&amp;gt;  \max (E \upto  F) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MIN}}||&amp;lt;math&amp;gt;  \min (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \min (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MAX}}||&amp;lt;math&amp;gt;  \max (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \max (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \geq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CARD}}||&amp;lt;math&amp;gt;  \card (\emptyset ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_SING}}||&amp;lt;math&amp;gt;  \card (\{ E\} ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_CARD}}||&amp;lt;math&amp;gt;  \card (S) = 0 \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_POW}}||&amp;lt;math&amp;gt;  \card (\pow (S)) \;\;\defi\;\;  2\expn{\card(S)} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_BUNION}}||&amp;lt;math&amp;gt;  \card (S \bunion  T) \;\;\defi\;\;  \card (S) + \card (T) - \card (S \binter  T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS}}||&amp;lt;math&amp;gt;\card(S\setminus T)\;\;\defi\;\;\card(S) - \card(T)&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;T\subseteq S&amp;lt;/math&amp;gt; and either &amp;lt;math&amp;gt;\finite(S)&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;\finite(T)&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_SETENUM}}||&amp;lt;math&amp;gt;\card(S\setminus\{E_1,\ldots,E_n\})\;\;\defi\;\;\card(S) - \card(\{E_1,\ldots,E_n\})&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;E_i\in S&amp;lt;/math&amp;gt; for all &amp;lt;math&amp;gt;i\in 1\upto n&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_CONVERSE}}||&amp;lt;math&amp;gt;  \card (r^{-1} ) \;\;\defi\;\;  \card (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID}}||&amp;lt;math&amp;gt;  \card (\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow (S \cprod S) &amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID_DOMRES}}||&amp;lt;math&amp;gt;  \card (S\domres\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1}}||&amp;lt;math&amp;gt;  \card (\prjone) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2}}||&amp;lt;math&amp;gt;  \card (\prjtwo) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjone) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjtwo) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_LAMBDA}}||&amp;lt;math&amp;gt; \card(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\; \card(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_CARD_UPTO}}||&amp;lt;math&amp;gt;  \card (i \upto  j) \;\;\defi\;\;  j-i+1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_TYPE_CARD}}||&amp;lt;math&amp;gt;  \card (\mathit{Tenum}) \;\;\defi\;\;  N &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Tenum}&amp;lt;/math&amp;gt; is a carrier set containing &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; elements ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) \geq  1 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_1}}||&amp;lt;math&amp;gt;  1 \leq  \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_0}}||&amp;lt;math&amp;gt;  0 \leq  \card (S) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) \geq  0 \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) &amp;gt; 0 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT_CARD_0}}||&amp;lt;math&amp;gt;  0 &amp;lt; \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) = 1 \;\;\defi\;\;  \exists x \qdot  S = \{ x\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL}}||&amp;lt;math&amp;gt;  \card (S) \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL1}}||&amp;lt;math&amp;gt;  \card (S) \in  \natn  \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL}}||&amp;lt;math&amp;gt;  i \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN_NATURAL1}}||&amp;lt;math&amp;gt;  0 \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL1}}||&amp;lt;math&amp;gt;  i \in  \natn  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_UPTO}}||&amp;lt;math&amp;gt;  i \upto  j \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;j &amp;lt; i&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL}}||&amp;lt;math&amp;gt;  -i \in  \nat  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL1}}||&amp;lt;math&amp;gt;  -i \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL}}||&amp;lt;math&amp;gt;x \in \nat  \;\;\defi\;\;  0 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL1}}||&amp;lt;math&amp;gt;x \in \natn  \;\;\defi\;\;  1 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_TRUE}}||&amp;lt;math&amp;gt;  \bool (P) = \True  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_FALSE}}||&amp;lt;math&amp;gt;  \bool (P) = \False  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_KBOOL_LIT_EQUAL_TRUE}}||&amp;lt;math&amp;gt; \bool (B = \True) \;\;\defi\;\; B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MIN}}||&amp;lt;math&amp;gt;  E = \min (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \leq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MAX}}||&amp;lt;math&amp;gt;  E = \max (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \geq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PLUS}}||&amp;lt;math&amp;gt;  E + \ldots  + 0 + \ldots  + F \;\;\defi\;\;  E + \ldots  + F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_R}}||&amp;lt;math&amp;gt;  E - 0 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_L}}||&amp;lt;math&amp;gt;  0 - E \;\;\defi\;\;  -E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_MINUS}}||&amp;lt;math&amp;gt;   - (- E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_UNMINUS}}||&amp;lt;math&amp;gt; E  - (- F) \;\;\defi\;\;  E + F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;(-F)&amp;lt;/math&amp;gt; is a unary minus expression or a negative literal ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS}}||&amp;lt;math&amp;gt;  E - E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_L}}||&amp;lt;math&amp;gt; (A + \ldots + C + \ldots + B) - C \;\;\defi\;\; A + \ldots + B &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_R}}||&amp;lt;math&amp;gt; C - (A + \ldots + C + \ldots + B)  \;\;\defi\;\;  -(A + \ldots + B) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_PLUS}}||&amp;lt;math&amp;gt; (A + \ldots + E + \ldots + B) - (C + \ldots + E + \ldots + D)  \;\;\defi\;\; (A + \ldots + B) - (C + \ldots + D) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_PLUS_MINUS}}||&amp;lt;math&amp;gt;(A + \ldots + D + \ldots + (C - D) + \ldots + B) \;\;\defi\;\; A + \ldots + C + \ldots + B  &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_PLUS}}||&amp;lt;math&amp;gt; A + \ldots + E + \ldots + B  &amp;lt; C + \ldots + E + \ldots + D   \;\;\defi\;\; A + \ldots + B &amp;lt; C + \ldots + D &amp;lt;/math&amp;gt;|| where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt;||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_R}}||&amp;lt;math&amp;gt; C &amp;lt; A + \ldots + C \ldots + B   \;\;\defi\;\;   0 &amp;lt; A + \ldots + B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_L}}||&amp;lt;math&amp;gt; A + \ldots + C \ldots + B &amp;lt; C   \;\;\defi\;\;   A + \ldots + B &amp;lt; 0 &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_R}}||&amp;lt;math&amp;gt; A - C &amp;lt; B - C  \;\;\defi\;\; A &amp;lt; B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_L}}||&amp;lt;math&amp;gt; C - A &amp;lt; C - B  \;\;\defi\;\; B &amp;lt; A &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_0}}||&amp;lt;math&amp;gt;  E * \ldots  * 0 * \ldots  * F \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_1}}||&amp;lt;math&amp;gt;  E * \ldots  * 1 * \ldots  * F \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_EVEN}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;|| if an even number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_ODD}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  -(E * \ldots  * F) &amp;lt;/math&amp;gt;|| if an odd number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MINUS}}||&amp;lt;math&amp;gt;   - (i) \;\;\defi\;\;  (-i) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL}}||&amp;lt;math&amp;gt;  i = j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE}}||&amp;lt;math&amp;gt;  i \leq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT}}||&amp;lt;math&amp;gt;  i &amp;lt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE}}||&amp;lt;math&amp;gt;  i \geq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT}}||&amp;lt;math&amp;gt;  i &amp;gt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DIV_MINUS}}||&amp;lt;math&amp;gt;  (- E) \div  (-F) \;\;\defi\;\;  E \div  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_1}}||&amp;lt;math&amp;gt;  E \div  1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_0}}||&amp;lt;math&amp;gt;  0 \div  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_R}}||&amp;lt;math&amp;gt;  E ^ 1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_L}}||&amp;lt;math&amp;gt;  1 ^ E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_0}}||&amp;lt;math&amp;gt;  E ^ 0 \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LE}}||&amp;lt;math&amp;gt;  E \leq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LT}}||&amp;lt;math&amp;gt;  E &amp;lt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GE}}||&amp;lt;math&amp;gt;  E \geq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GT}}||&amp;lt;math&amp;gt;  E &amp;gt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV}}||&amp;lt;math&amp;gt;  E \div  E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV_PROD}}||&amp;lt;math&amp;gt;  (X * \ldots * E * \ldots * Y) \div  E \;\;\defi\;\;  X * \ldots * Y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MOD}}||&amp;lt;math&amp;gt;  E \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_PLUS}}||&amp;lt;math&amp;gt;  a * (b + c) \;\;\defi\;\;  (a * b) + (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_MINUS}}||&amp;lt;math&amp;gt;  a * (b - c) \;\;\defi\;\;  (a * b) - (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_NOT_EQUAL}}||&amp;lt;math&amp;gt;    \lnot E = F \;\;\defi\;\;  E &amp;lt; F \lor E &amp;gt; F  &amp;lt;/math&amp;gt;|| &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; must be of Integer type ||  M &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14529</id>
		<title>Set Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14529"/>
		<updated>2023-04-13T14:33:15Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Rules SIMP_{EMPTY,SINGLE}_PARTITION were implemented&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BTRUE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \btrue  \land  \ldots  \land  Q \;\;\defi\;\;  P \land  \ldots  \land  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BFALSE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \bfalse  \land  \ldots  \land  Q \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  Q \land  \ldots  \land  R \;\;\defi\;\;  P \land  \ldots  \land  Q \land  \ldots  \land  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND_NOT}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BTRUE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \btrue  \lor  \ldots  \lor  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BFALSE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \bfalse  \lor  \ldots  \lor  Q \;\;\defi\;\;  P \lor  \ldots  \lor  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR_NOT}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_R}}||&amp;lt;math&amp;gt;  P \limp  \btrue  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_L}}||&amp;lt;math&amp;gt;  \btrue  \limp  P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_R}}||&amp;lt;math&amp;gt;  P \limp  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_L}}||&amp;lt;math&amp;gt;  \bfalse  \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP}}||&amp;lt;math&amp;gt;  P \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_L}}||&amp;lt;math&amp;gt;\lnot P\limp P\;\;\defi\;\; P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_R}}||&amp;lt;math&amp;gt;P\limp\lnot P\;\;\defi\;\;\lnot P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_R}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  \lnot\, Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_L}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV}}||&amp;lt;math&amp;gt;  P \leqv  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV_NOT}}||&amp;lt;math&amp;gt;  P \leqv  \lnot\, P \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BTRUE}}||&amp;lt;math&amp;gt;  \lnot\, \btrue  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BFALSE}}||&amp;lt;math&amp;gt;  \lnot\, \bfalse  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_NOT}}||&amp;lt;math&amp;gt;  \lnot\, \lnot\, P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  F \;\;\defi\;\;  \lnot\, E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTIN}}||&amp;lt;math&amp;gt;  E \notin  F \;\;\defi\;\;  \lnot\, E \in  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSET}}||&amp;lt;math&amp;gt;  E  \not\subset  F \;\;\defi\;\;  \lnot\, E  \subset  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSETEQ}}||&amp;lt;math&amp;gt;  E  \not\subseteq  F \;\;\defi\;\;  \lnot\, E \subseteq  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LE}}||&amp;lt;math&amp;gt;  \lnot\, a \leq  b \;\;\defi\;\;  a &amp;gt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GE}}||&amp;lt;math&amp;gt;  \lnot\, a \geq  b \;\;\defi\;\;  a &amp;lt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;lt; b \;\;\defi\;\;  a \geq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;gt; b \;\;\defi\;\;  a \leq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \False ) \;\;\defi\;\;  (E = \True ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\False  = E) \;\;\defi\;\;  (\True  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \True ) \;\;\defi\;\;  (E = \False ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\True  = E) \;\;\defi\;\;  (\False  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL_AND}}||&amp;lt;math&amp;gt;  \forall x \qdot  P \land  Q \;\;\defi\;\;  (\forall x \qdot  P) \land  (\forall x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_OR}}||&amp;lt;math&amp;gt;  \exists x \qdot  P \lor  Q \;\;\defi\;\;  (\exists x \qdot  P) \lor  (\exists x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_IMP}}||&amp;lt;math&amp;gt;\exists x\qdot P\limp Q\;\;\defi\;\;(\forall x\qdot P)\limp(\exists x\qdot Q)&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL}}||&amp;lt;math&amp;gt;  \forall \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \forall z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS}}||&amp;lt;math&amp;gt;  \exists \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \exists z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL}}||&amp;lt;math&amp;gt;  E = E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F = G \mapsto  H \;\;\defi\;\;  E = G \land  F = H &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_SING}}||&amp;lt;math&amp;gt;  \{ E\}  = \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_TRUE}}||&amp;lt;math&amp;gt;  \True  = \False  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_SING}}||&amp;lt;math&amp;gt;  \{ E\}  \subseteq  S \;\;\defi\;\;  E \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSETEQ}}||&amp;lt;math&amp;gt;  \emptyset  \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  S \subseteq  A \bunion  \ldots  \bunion  S \bunion  \ldots  \bunion  B \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  A \binter  \ldots  \binter  S \binter  \ldots  \binter  B \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B \subseteq  S \;\;\defi\;\;  A \subseteq  S \land  \ldots  \land  B \subseteq  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  S \subseteq  A \binter  \ldots  \binter  B \;\;\defi\;\;  S \subseteq  A \land  \ldots  \land  S \subseteq  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B  \subset  S \;\;\defi\;\;  A  \subset  S \land  \ldots  \land  B  \subset  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BINTER}}||&amp;lt;math&amp;gt;  S  \subset  A \binter  \ldots  \binter  B \;\;\defi\;\;  S  \subset  A \land  \ldots  \land  S  \subset  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN}}||&amp;lt;math&amp;gt;  E \in  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IN}}||&amp;lt;math&amp;gt;  B \in  \{ A, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_SING}}||&amp;lt;math&amp;gt;  E \in  \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETENUM}}||&amp;lt;math&amp;gt;  \{ A, \ldots , B, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \{ A, \ldots , B, \ldots , C\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \emptyset  \binter  \ldots  \binter  T \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \mathit{Ty} \binter  \ldots  \binter  T \;\;\defi\;\;  S \binter  \ldots  \binter  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  T \binter  \ldots  \binter  U \;\;\defi\;\;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U = T \;\;\defi\;\;  T \subseteq  S \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \emptyset  \bunion  \ldots  \bunion  T \;\;\defi\;\;  S \bunion  \ldots  \bunion  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \mathit{Ty} \bunion  \ldots  \bunion  T \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion T \bunion  \ldots  \bunion T \bunion \ldots  \bunion  U \;\;\defi\;\;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U = T \;\;\defi\;\;  S \bunion  \ldots  \bunion  U \subseteq  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \setminus \emptyset  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_L}}||&amp;lt;math&amp;gt;  \emptyset  \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus \mathit{Ty} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt; \mathit{Ty} \setminus (\mathit{Ty} \setminus S) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW}}||&amp;lt;math&amp;gt;  \union (\pow (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW1}}||&amp;lt;math&amp;gt;  \union (\pown (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KUNION}}||&amp;lt;math&amp;gt;  \union (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_QUNION}}||&amp;lt;math&amp;gt;  \Union  x\qdot  \bfalse  \mid  E \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KINTER}}||&amp;lt;math&amp;gt;  \inter (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KINTER_POW}}||&amp;lt;math&amp;gt;  \inter (\pow (S)) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW}}||&amp;lt;math&amp;gt;  \pow (\emptyset ) \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW1}}||&amp;lt;math&amp;gt;  \pown (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_R}}||&amp;lt;math&amp;gt;  S \cprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \cprod  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_COMPSET_EQUAL}}||&amp;lt;math&amp;gt;  \{ x, y \qdot x = E(y) \land P(y) \mid F(x, y) \}  \;\;\defi\;\;  \{ y \qdot P(y) \mid F(E(y), y) \} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and non free in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_IN}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \in  S \mid  x \}  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_SUBSETEQ}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \subseteq  S \mid  x \}  \;\;\defi\;\;  \pow (S)  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BFALSE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \bfalse  \mid  x \}  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BTRUE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \btrue  \mid  E \}  \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where the type of &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of locally-bound, pairwise-distinct bound identifiers ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_COMPSET_L}}||&amp;lt;math&amp;gt;  \{  x \qdot  P(x) \mid  E(x) \}  \subseteq  S \;\;\defi\;\;  \forall y\qdot  P(y) \limp  E(y) \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; is fresh ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET}}||&amp;lt;math&amp;gt;  F \in  \{  x,y,\ldots \qdot  P(x,y,\ldots) \mid  E(x,y,\ldots) \}  \;\;\defi\;\;  \exists x,y,\ldots \qdot P(x,y,\ldots) \land E(x,y,\ldots) = F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\ldots&amp;lt;/math&amp;gt; are not free in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET_ONEPOINT}}||&amp;lt;math&amp;gt;  E \in  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  P(E) &amp;lt;/math&amp;gt;|| Equivalent to general simplification followed by One Point Rule application with the last conjunct predicate ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSETEQ_COMPSET_R}}||&amp;lt;math&amp;gt;  S \subseteq  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  \forall y\qdot  y \in  S \limp  P(y) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, \{  x \qdot  P(x) \mid  x \}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||&amp;lt;math&amp;gt;  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BTRUE}}||&amp;lt;math&amp;gt;  \bool (\btrue ) \;\;\defi\;\;  \True &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BFALSE}}||&amp;lt;math&amp;gt;  \bool (\bfalse ) \;\;\defi\;\;  \False &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SUBSETEQ_BUNION_SING}}||&amp;lt;math&amp;gt;  S \bunion  \{ F\}  \subseteq  T \;\;\defi\;\;  S \subseteq  T \land  F \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; is a single expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_FINITE}}||&amp;lt;math&amp;gt;  \finite(S) \;\;\defi\;\;  \exists n,f\qdot f\in 1\upto n \tbij S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FINITE}}||&amp;lt;math&amp;gt;  \finite (\emptyset ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_SETENUM}}||&amp;lt;math&amp;gt;  \finite (\{ a, \ldots , b\} ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BUNION}}||&amp;lt;math&amp;gt;  \finite (S \bunion  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_POW}}||&amp;lt;math&amp;gt;  \finite (\pow (S)) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  S = \emptyset  \lor  T = \emptyset  \lor  (\finite (S) \land  \finite (T)) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_CONVERSE}}||&amp;lt;math&amp;gt;  \finite (r^{-1} ) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_UPTO}}||&amp;lt;math&amp;gt;  \finite (a \upto  b) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!-- Disabled rules (some are false, need more thinking to check which)&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_UNION}}||&amp;lt;math&amp;gt;\finite(\union(S)) \;\;\defi\;\; \finite(S)\;\land\;(\forall x\qdot x\in S\limp \finite(x))&amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_QUNION}}||&amp;lt;math&amp;gt;\finite(\Union x\qdot P\mid E) \;\;\defi\;\; \finite(\{x\qdot P\mid E\})\;\land\;(\forall x\qdot P\limp \finite(E))&amp;lt;/math&amp;gt;|| this equivalence is false: for example, the union of an infinite set of empty sets is finite; the right-to-left implication is true ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_L}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_R}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_SETMINUS}}||&amp;lt;math&amp;gt;  \finite (S \setminus T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMRES}}||&amp;lt;math&amp;gt;  \finite (S \domres  r)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANRES}}||&amp;lt;math&amp;gt;  \finite (r \ranres  S)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMSUB}}||&amp;lt;math&amp;gt;  \finite (S \domsub  r) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANSUB}}||&amp;lt;math&amp;gt;  \finite (r \ransub  S) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RELIMAGE}}||&amp;lt;math&amp;gt;  \finite (r[S]) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_OVERL}}||&amp;lt;math&amp;gt;  \finite (r \ovl  s)  \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_REL}}||&amp;lt;math&amp;gt;  \finite (S \rel  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_FCOMP}}||&amp;lt;math&amp;gt;  \finite (r \fcomp s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BCOMP}}||&amp;lt;math&amp;gt;  \finite (r \bcomp  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DPROD}}||&amp;lt;math&amp;gt;  \finite (r \dprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_PPROD}}||&amp;lt;math&amp;gt;  \finite (r \pprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_COMPSET}}||&amp;lt;math&amp;gt;  \finite (\{ x \qdot  x \in  S \land  \ldots  \land  P \mid  x\} ) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RAN}}||&amp;lt;math&amp;gt;  \finite (\ran (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOM}}||&amp;lt;math&amp;gt;  \finite (\dom (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_QINTER}}||&amp;lt;math&amp;gt;  \finite (\Inter  x \qdot  P \mid  E) \;\;\defi\;\;  \exists x \qdot  P \land  \finite (E) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID}}||&amp;lt;math&amp;gt;  \finite (\id) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \id) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1}}||&amp;lt;math&amp;gt;  \finite (\prjone) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2}}||&amp;lt;math&amp;gt;  \finite (\prjtwo) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjone) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjtwo) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL}}||&amp;lt;math&amp;gt;  \finite (\nat ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL1}}||&amp;lt;math&amp;gt;  \finite (\natn ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_INTEGER}}||&amp;lt;math&amp;gt;  \finite (\intg ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BOOL}}||&amp;lt;math&amp;gt;  \finite (\Bool ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_LAMBDA}}||&amp;lt;math&amp;gt;  \finite(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\;  \finite(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_IN}}||&amp;lt;math&amp;gt;  t \in  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BTRUE}}||&amp;lt;math&amp;gt;  P \leqv  \btrue  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BFALSE}}||&amp;lt;math&amp;gt;  P \leqv  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSET}}||&amp;lt;math&amp;gt;  A  \subset  B  \;\;\defi\;\;  A \subseteq B \land \lnot A = B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_R}}||&amp;lt;math&amp;gt;  S  \subset  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_L}}||&amp;lt;math&amp;gt;\emptyset\subset S \;\;\defi\;\;  \lnot\; S = \emptyset&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSET_L}}||&amp;lt;math&amp;gt;  S  \subset  \mathit{Ty} \;\;\defi\;\;  S \neq  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSET}}||&amp;lt;math&amp;gt;  S  \subset  S \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{constr} (a_1, \ldots, a_n) = \operatorname{constr} (b_1, \ldots, b_n)  \;\;\defi\;\;  a_1 = b_1 \land \ldots \land  a_n = b_n  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; is a datatype constructor ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR_DIFF}}||&amp;lt;math&amp;gt;  \operatorname{constr_1} (\ldots) = \operatorname{constr_2} (\ldots)  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\operatorname{constr_2}&amp;lt;/math&amp;gt; are different datatype constructors ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DESTR_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{destr} (\operatorname{constr} (a_1, \ldots, a_n))  \;\;\defi\;\;  a_i  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{destr}&amp;lt;/math&amp;gt; is the datatype destructor for the i-th argument of datatype constructor &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_AND_OR}}||&amp;lt;math&amp;gt;  P \land  (Q \lor  R) \;\;\defi\;\;  (P \land  Q) \lor  (P \land  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_OR_AND}}||&amp;lt;math&amp;gt;  P \lor  (Q \land  R) \;\;\defi\;\;  (P \lor  Q) \land  (P \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_OR}}||&amp;lt;math&amp;gt;  P \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  \lnot\, P \limp  (Q \lor  \ldots  \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP}}||&amp;lt;math&amp;gt;  P \limp  Q \;\;\defi\;\;  \lnot\, Q \limp  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP_IMP}}||&amp;lt;math&amp;gt;  P \limp  (Q \limp  R) \;\;\defi\;\;  P \land  Q \limp  R &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_AND}}||&amp;lt;math&amp;gt;  P \limp  (Q \land  R) \;\;\defi\;\;  (P \limp  Q) \land  (P \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_OR}}||&amp;lt;math&amp;gt;  (P \lor  Q) \limp  R \;\;\defi\;\;  (P \limp  R) \land  (Q \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQV}}||&amp;lt;math&amp;gt;  P \leqv  Q \;\;\defi\;\;  (P \limp  Q) \land  (Q \limp  P) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_AND}}||&amp;lt;math&amp;gt;  \lnot\,(P \land  Q) \;\;\defi\;\;  \lnot\, P \lor  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_OR}}||&amp;lt;math&amp;gt;  \lnot\,(P \lor  Q) \;\;\defi\;\;  \lnot\, P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_IMP}}||&amp;lt;math&amp;gt;  \lnot\,(P \limp  Q) \;\;\defi\;\;  P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_FORALL}}||&amp;lt;math&amp;gt;  \lnot\, \forall x \qdot  P \;\;\defi\;\;  \exists x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_EXISTS}}||&amp;lt;math&amp;gt;  \lnot\, \exists x \qdot  P \;\;\defi\;\;  \forall x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \cprod  T \;\;\defi\;\;  E \in  S \land  F \in  T &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW}}||&amp;lt;math&amp;gt;  E \in  \pow (S) \;\;\defi\;\;  E \subseteq  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW1}}||&amp;lt;math&amp;gt;  E \in  \pown (S) \;\;\defi\;\; E \in  \pow (S) \land S \neq \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSETEQ}}||&amp;lt;math&amp;gt; S \subseteq T  \;\;\defi\;\;  \forall x \qdot  x \in  S \limp  x \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is not free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BUNION}}||&amp;lt;math&amp;gt;  E \in  S \bunion  T \;\;\defi\;\;  E \in  S \lor  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BINTER}}||&amp;lt;math&amp;gt;  E \in  S \binter  T \;\;\defi\;\;  E \in  S \land  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETMINUS}}||&amp;lt;math&amp;gt;  E \in  S \setminus T \;\;\defi\;\;  E \in  S \land  \lnot\,(E \in  T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETENUM}}||&amp;lt;math&amp;gt;  E \in  \{ A, \ldots , B\}  \;\;\defi\;\;  E = A \lor  \ldots  \lor  E = B &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KUNION}}||&amp;lt;math&amp;gt;  E \in  \union (S) \;\;\defi\;\;  \exists s \qdot  s \in  S \land  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QUNION}}||&amp;lt;math&amp;gt;  E \in  (\Union x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \exists s \qdot P(s) \land E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KINTER}}||&amp;lt;math&amp;gt;  E \in  \inter (S) \;\;\defi\;\;  \forall s \qdot  s \in  S \limp  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QINTER}}||&amp;lt;math&amp;gt;  E \in  (\Inter x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \forall s \qdot P(s) \limp E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_UPTO}}||&amp;lt;math&amp;gt;  E \in  a \upto b \;\;\defi\;\; a \leq E \land E \leq b  &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BUNION_BINTER}}||&amp;lt;math&amp;gt;  S \bunion  (T \binter  U) \;\;\defi\;\;  (S \bunion  T) \binter  (S \bunion  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BINTER_BUNION}}||&amp;lt;math&amp;gt;  S \binter  (T \bunion  U) \;\;\defi\;\;  (S \binter  T) \bunion  (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_BINTER_SETMINUS}}||&amp;lt;math&amp;gt;  S \binter  (T \setminus U) \;\;\defi\;\;  (S \binter  T) \setminus (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  S \setminus (T \bunion  U) \;\;\defi\;\;  S \setminus T \setminus U &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BINTER}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \binter  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \bunion  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \binter  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \setminus T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BINTER}}||&amp;lt;math&amp;gt;  S \cprod  (T \binter  U) \;\;\defi\;\;  (S \cprod  T) \binter  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BUNION}}||&amp;lt;math&amp;gt;  S \cprod  (T \bunion  U) \;\;\defi\;\;  (S \cprod  T) \bunion  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_SETMINUS}}||&amp;lt;math&amp;gt;  S \cprod  (T \setminus U) \;\;\defi\;\;  (S \cprod  T) \setminus (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  T \;\;\defi\;\;  (\mathit{Ty} \setminus T) \subseteq  (\mathit{Ty} \setminus S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL}}||&amp;lt;math&amp;gt;  S = T \;\;\defi\;\;  S \subseteq  T \land  T \subseteq  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_L}}||&amp;lt;math&amp;gt;  A \setminus B \subseteq  S \;\;\defi\;\;  A \subseteq  B \bunion  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \subseteq  A \setminus B \;\;\defi\;\;  S \subseteq  A \land  S \binter  B = \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_PARTITION}}||&amp;lt;math&amp;gt;  \operatorname{partition} (s, s_1, s_2, \ldots, s_n) \;\;\defi\;\; &lt;br /&gt;
 		  	\begin{array}{ll}&lt;br /&gt;
		  		&amp;amp; s = s_1\bunion s_2\bunion\cdots\bunion s_n\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_2 = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_n = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_{n-1}\binter s_n = \emptyset&lt;br /&gt;
			\end{array}&amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EMPTY_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S)  \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SINGLE_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S, T)  \;\;\defi\;\;  S = T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_CARD}}||&amp;lt;math&amp;gt;\operatorname{card}(S) = k \;\;\defi\;\; \exists f \qdot f \in 1..k \tbij S&amp;lt;/math&amp;gt;|| also works for &amp;lt;math&amp;gt;k = \operatorname{card}(S)&amp;lt;/math&amp;gt; || M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CARD}}||&amp;lt;math&amp;gt;\operatorname{card}(S) = \operatorname{card}(T) \;\;\defi\;\; \exists f \qdot f \in S \tbij T&amp;lt;/math&amp;gt;|| || M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14528</id>
		<title>Inference Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14528"/>
		<updated>2023-04-13T14:32:07Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Rules EQV_LR and EQV_RL were implemented&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;font color=red&amp;gt;CAUTION! Any modification to this page shall be announced on the [[#Mailing_lists |User]] mailing list!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Inference_Rules]].&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; in the first column are currently broken in Rodin 1.1 (see [http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2895507&amp;amp;group_id=108850&amp;amp;atid=651669 bug 2895507]).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{P} \;\;\vdash \;\; \textbf{P}^{\dagger}} &amp;lt;/math&amp;gt;|| see below for &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP_OR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{Q} \;\;\vdash \;\; \textbf{P} \lor \ldots \lor  \textbf{Q}^{\dagger} \lor \ldots \lor \textbf{R}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{Q}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CNTR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\textbf{P},\;\textbf{nP}^{\dagger} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FALSE_HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\bfalse \;\;\vdash \;\; \textbf{P}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|TRUE_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H} \;\;\vdash \;\; \btrue}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in E\;\mathit{op}\;F \;\;\vdash\;\; f\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_IMAGE_GOAL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2,\; f(E)\in S_2\;\;\vdash\;\; \mathbf{P}(f(E))}{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2\;\;\vdash\;\; \mathbf{P}(f(E))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FUN_GOAL_REC}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S_1\;\mathit{op_1}\;(S_2\;\mathit{op_2}\;(\ldots(S_n\;\mathit{op_n}(U\;\mathit{opf}\;V\;))\ldots)) \;\vdash\;\; f(E_1)(E_2)...(E_n)\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types, &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathit{opf}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DBL_HYP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H},\;\textbf{P},\;\textbf{P}  \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P},\textbf{Q} \; \; \vdash \; \;  \textbf{R}}{\textbf{H},\; \textbf{P} \land \textbf{Q} \; \; \vdash \; \;  &lt;br /&gt;
\textbf{R}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \;  \textbf{P} \qquad \textbf{H} \; \; \vdash \; \; \textbf{Q}}{\textbf{H} \; \; \vdash \; \;  \textbf{P} \; \land \; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|IMP_L1}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T}}{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{Q} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H} \;\;\vdash \;\; \textbf{P} \limp \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P} \limp \textbf{Q},  \textbf{P} \limp \textbf{R}\;\;\vdash \;\; \textbf{S}}{\textbf{H},\;\textbf{P} \limp  \textbf{Q} \land \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_OR_L}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P} \limp \textbf{R},  \textbf{Q} \limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P} \lor  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AUTO_MH}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P},\;\textbf{Q}\limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P},\; \textbf{P} \land  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (E=b)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (E=b) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (b=E)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (b=E) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|XST_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;  \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}{&lt;br /&gt;
\textbf{H},\;  \exists \, \textbf{x}\, \qdot\, \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ALL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}\; \; \vdash \; \;  \textbf{P(x)} }{ \textbf{H} \; \; \vdash \; \;  \forall \textbf{x}\, \qdot\, \textbf{P(x)} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; x=E \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; E=x \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SUBSET_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{V})}&lt;br /&gt;
{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U} \binter \dots \binter \textbf{V})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{U}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|IN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{U})}&lt;br /&gt;
{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|NOTIN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\emptyset)}&lt;br /&gt;
{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \neg\,\textbf{P}}{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \bfalse}{\textbf{H} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad\ldots\qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \lor \ldots \lor \textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \lnot\textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \limp\textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|MH}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\textbf{P} \qquad \textbf{H},\; \textbf{Q} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HM}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\neg\,\textbf{Q} \qquad \textbf{H},\; \neg\,\textbf{P} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQV_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(Q)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(Q)}}{\textbf{H(P)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(P)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQV_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(P)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(P)}}{\textbf{H(Q)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(Q)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E  &lt;br /&gt;
,\;\textbf{P}(F)\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,(G=E)  &lt;br /&gt;
,\;\textbf{P}((\{E\}) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl\{E &lt;br /&gt;
\mapsto F\})(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E \;\;\vdash\;\;\textbf{Q}(F) &lt;br /&gt;
\qquad \textbf{H},\; \neg\,(G=E)  \;\;\vdash\;\;\textbf{Q}((\{E\}) \domsub f)(G))}{\textbf{H} &lt;br /&gt;
\;\;\vdash \;\; \textbf{Q}((f\ovl\{E \mapsto F\})(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g)  ,\;\textbf{P}(g(G))\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,G \in \dom(g)  ,\;\textbf{P}((\dom(g) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl g)(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g) \;\;\vdash\;\;\textbf{Q}(g(G)) \qquad \textbf{H},\; \neg\, G \in \dom(g) \;\;\vdash\;\;\textbf{Q}((\dom(g) \domsub f)(G))}{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f\ovl g)(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \binter f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \binter T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \binter f[T]) \;\;\vdash\;\;\textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \binter T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \setminus f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \setminus T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \setminus f[T]) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \setminus T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H} \; \; \vdash \; \; \textbf{Q}(\{ f(E)\} ) }{\textbf{H} \; \; \vdash \; \;  \textbf{Q}(f[\{ E\} ])} &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H},\; \textbf{Q}(\{ f(E)\}) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[\{ E\} ]) \;\;\vdash\;\; \textbf{G} } &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(g(f(x))) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f \fcomp g)(x))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H},\; \textbf{Q}(g(f(x))) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}((f \fcomp g)(x)) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SUBSETEQ_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(T) \qquad\textbf{H} \;\;\vdash \;\; S \subseteq T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(S)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\lor\;\ldots \;\lor\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\binter\;\ldots \;\binter\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_KINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, s \in S \land \finite\,(s)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\inter(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_QINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, P \land \finite\,(E)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Inter s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\land\;\ldots \;\land\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\bunion\;\ldots \;\bunion\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_KUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S) \;\land\; (\forall s\, \qdot\, s \in S \limp \finite\,(s))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\union(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_QUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite(\{s\qdot P\mid E\})\;\land\;(\forall s\, \qdot\, P \limp \finite\,(E))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Union s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S)}{\textbf{H} \;\;\vdash \;\; \finite\,(S \;\setminus\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_REL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; r\in S\;\mathit{op}\;T,\; \finite\,(S),\; \finite\,(T) \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\rel T) \qquad\textbf{H} \;\;\vdash \;\; r \;\in\; S \rel T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S \rel T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(r[s])}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_DOM}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(S) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_RAN}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(T) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN1_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN2_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(s) }{\textbf{H} \;\;\vdash \;\; \finite\,(f[s])}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_LT_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \intg \setminus \natn }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_GE_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \nat }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|CARD_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b \;\;\vdash \;\; \textbf{Q}(b-a+1) \qquad \textbf{H},\, b &amp;lt; a \;\;\vdash \;\; \textbf{Q}(0) }{\textbf{H} \;\;\vdash\;\; \textbf{Q}(\card\,(a\upto b))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|CARD_EMPTY_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b,\,\textbf{P}(b-a+1)  \;\;\vdash \;\; \textbf{Q} \qquad \textbf{H},\, b &amp;lt; a ,\, \textbf{P}(0)\;\;\vdash \;\; \textbf{Q} }{\textbf{H},\,\textbf{P}(\card\,(a\upto b))  \;\;\vdash\;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subseteq T}{\textbf{H} \;\;\vdash\;\; \card(S) \leq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subseteq S}{\textbf{H} \;\;\vdash\;\; \card(S) \geq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subset T}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;lt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subset S}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;gt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S = T}{\textbf{H} \;\;\vdash\;\; \card(S) = \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card(S) - \card(S\binter T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) - \card(S\binter T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \setminus  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(T) \qquad \textbf{H},\, \textbf{P}(\card(S) * \card(T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \finite(T) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) * \card(T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \cprod  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} , [x \bcmeq E]\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\textbf{P} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\textbf{Q} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Ponens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\lnot\textbf{Q} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\lnot\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Tollens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CUT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}) \;\;\vdash \;\; \textbf{\textbf{P}} \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || hypothesis &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; is added || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EXISTS_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(E)}{\textbf{H} \;\;\vdash\;\; \exists x \qdot \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTINCT_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{\textbf{G}} \qquad  \textbf{H}, {WD}(\textbf{P}), \lnot \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || case distinction on predicate &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} \;\;\vdash \;\; \textbf{G}}{ \textbf{H}, \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H} \;\;\vdash \;\; \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} }{ \textbf{H}  \;\;\vdash\;\; \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R} }&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_REL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\rel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TREL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\trel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_PFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\pfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\tfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H}, x=0 \;\;\vdash \;\; \textbf{P}(x) \qquad \textbf{H}, n\in\nat, \textbf{P}(n) \;\;\vdash \;\; \textbf{P}(n+1)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT_COMPL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(0) \qquad \textbf{H}, n\in\nat, \forall k\qdot 0\leq k\land k &amp;lt; n \limp \textbf{P}(k) \;\;\vdash \;\; \textbf{P}(n)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Those following rules have been implemented in the reasoner GeneralizedModusPonens.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{P,\varphi(\btrue) \vdash G}{P,\varphi(P^{\dagger}) \vdash G} &amp;lt;/math&amp;gt; ||  see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger},\varphi(\bfalse) \vdash G}{nP^{\dagger},\varphi(P) \vdash G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{P \vdash \varphi(\btrue)}{P \vdash \varphi(P^{\dagger})} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger} \vdash \varphi(\bfalse)}{nP^{\dagger} \vdash \varphi(P)} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash \lnot nG^{\dagger}}{H,\varphi(G)\vdash \lnot nG^{\dagger}} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash \lnot G}{H,\varphi(G^{\dagger})\vdash \lnot G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n}{H,\varphi(G_i)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n}{H,\varphi(G_i^{\dagger})\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thos following rules have been implemented in the MembershipGoal reasoner.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SUBSET_SUBSETEQ}}|| &amp;lt;math&amp;gt; A\subset B\vdash A\subseteq B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DOM_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \dom(A)\subseteq\dom(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RAN_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \ran(A)\subseteq\ran(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_LR}}|| &amp;lt;math&amp;gt; A=B\vdash A\subseteq B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_RL}}|| &amp;lt;math&amp;gt; A=B\vdash B\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_CPROD}}|| &amp;lt;math&amp;gt; x\in\dom(A\cprod B)\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_CPROD}}|| &amp;lt;math&amp;gt; y\in\ran(A\cprod B)\vdash y\in B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash x\in\dom(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash y\in\ran(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SETENUM_SUBSET}}|| &amp;lt;math&amp;gt; \left\{a,\cdots,x,\cdots, z\right\}\subseteq A\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OVR_RIGHT_SUBSET}}|| &amp;lt;math&amp;gt; f\ovl\cdots\ovl g\ovl\cdots\ovl h\subseteq A\vdash g\ovl\cdots\ovl h\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RELSET_SUBSET_CPROD}}|| &amp;lt;math&amp;gt; f\in A\;op\;B\vdash f\subseteq A\cprod B&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IN_SUBSET}}|| &amp;lt;math&amp;gt; x\in A,\;\; A\subseteq B\vdash x\in B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The conventions used in this table are described in [[Variations in HYP, CNTR and GenMP]].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;RRHeader&amp;quot; text-align=&amp;quot;left&amp;quot; border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;8&amp;quot; rules=&amp;quot;all&amp;quot; frame=&amp;quot;box&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border-style:solid; border-color:#AAAAAA;  display:table; {{{style|}}}&amp;quot;&lt;br /&gt;
! &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; !! Side Condition&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b , \ \ b \ge a  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b , \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; || where a and b are integers&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;lt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;gt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a  &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \le b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \ge b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A \subseteq B, \ \ B \subseteq A  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \ \ A \subset B, \ \ B \subset A &amp;lt;/math&amp;gt; || where A and B are sets&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, B \subset A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B, \ \ A \subseteq B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot B \subset A, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot A \subseteq B  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; B \subset A, \ \ B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt;||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \ \ A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot f = e &amp;lt;/math&amp;gt; || where e and f are scalars&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot  f = e &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; || || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also [[Extension Proof Rules#Inference Rules]].&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14527</id>
		<title>Arithmetic Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Arithmetic_Rewrite_Rules&amp;diff=14527"/>
		<updated>2023-04-06T09:33:26Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Rules DEF_EQUAL_{MIN,MAX} have been implemented in Rodin 3.8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_0}}||&amp;lt;math&amp;gt;  0 \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MOD_1}}||&amp;lt;math&amp;gt;  E \,\bmod\,  1 \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_SING}}||&amp;lt;math&amp;gt;  \min (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_SING}}||&amp;lt;math&amp;gt;  \max (\{ E\} ) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL}}||&amp;lt;math&amp;gt;  \min (\nat ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_NATURAL1}}||&amp;lt;math&amp;gt;  \min (\natn ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \min (S \bunion  \ldots  \bunion  \{ \min (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp; \min (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\ \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_BUNION_SING}}||&amp;lt;math&amp;gt;  \begin{array}{cl} &amp;amp; \max (S \bunion  \ldots  \bunion  \{ \max (T)\}  \bunion  \ldots  \bunion  U) \\ \defi &amp;amp;  \max (S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U) \\  \end{array} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MIN_UPTO}}||&amp;lt;math&amp;gt;  \min (E \upto  F) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAX_UPTO}}||&amp;lt;math&amp;gt;  \max (E \upto  F) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MIN}}||&amp;lt;math&amp;gt;  \min (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \min (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MAX}}||&amp;lt;math&amp;gt;  \max (\{ E, \ldots  , i, \ldots  , j, \ldots , H\} ) \;\;\defi\;\;  \max (\{ E, \ldots  , i, \ldots , H\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \geq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CARD}}||&amp;lt;math&amp;gt;  \card (\emptyset ) \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_SING}}||&amp;lt;math&amp;gt;  \card (\{ E\} ) \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_CARD}}||&amp;lt;math&amp;gt;  \card (S) = 0 \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_POW}}||&amp;lt;math&amp;gt;  \card (\pow (S)) \;\;\defi\;\;  2\expn{\card(S)} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_BUNION}}||&amp;lt;math&amp;gt;  \card (S \bunion  T) \;\;\defi\;\;  \card (S) + \card (T) - \card (S \binter  T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS}}||&amp;lt;math&amp;gt;\card(S\setminus T)\;\;\defi\;\;\card(S) - \card(T)&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;T\subseteq S&amp;lt;/math&amp;gt; and either &amp;lt;math&amp;gt;\finite(S)&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;\finite(T)&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_SETENUM}}||&amp;lt;math&amp;gt;\card(S\setminus\{E_1,\ldots,E_n\})\;\;\defi\;\;\card(S) - \card(\{E_1,\ldots,E_n\})&amp;lt;/math&amp;gt;|| with hypotheses &amp;lt;math&amp;gt;E_i\in S&amp;lt;/math&amp;gt; for all &amp;lt;math&amp;gt;i\in 1\upto n&amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_CONVERSE}}||&amp;lt;math&amp;gt;  \card (r^{-1} ) \;\;\defi\;\;  \card (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID}}||&amp;lt;math&amp;gt;  \card (\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow (S \cprod S) &amp;lt;/math&amp;gt;||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_ID_DOMRES}}||&amp;lt;math&amp;gt;  \card (S\domres\id) \;\;\defi\;\;  \card (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1}}||&amp;lt;math&amp;gt;  \card (\prjone) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2}}||&amp;lt;math&amp;gt;  \card (\prjtwo) \;\;\defi\;\;  \card (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjone) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \card (E \domres \prjtwo) \;\;\defi\;\;  \card (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_LAMBDA}}||&amp;lt;math&amp;gt; \card(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\; \card(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_CARD_UPTO}}||&amp;lt;math&amp;gt;  \card (i \upto  j) \;\;\defi\;\;  j-i+1 &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;i \leq j&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_TYPE_CARD}}||&amp;lt;math&amp;gt;  \card (\mathit{Tenum}) \;\;\defi\;\;  N &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Tenum}&amp;lt;/math&amp;gt; is a carrier set containing &amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; elements ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) \geq  1 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_1}}||&amp;lt;math&amp;gt;  1 \leq  \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE_CARD_0}}||&amp;lt;math&amp;gt;  0 \leq  \card (S) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) \geq  0 \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT_CARD_0}}||&amp;lt;math&amp;gt;  \card (S) &amp;gt; 0 \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT_CARD_0}}||&amp;lt;math&amp;gt;  0 &amp;lt; \card (S) \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_CARD_1}}||&amp;lt;math&amp;gt;  \card (S) = 1 \;\;\defi\;\;  \exists x \qdot  S = \{ x\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL}}||&amp;lt;math&amp;gt;  \card (S) \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CARD_NATURAL1}}||&amp;lt;math&amp;gt;  \card (S) \in  \natn  \;\;\defi\;\;  \lnot\, S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL}}||&amp;lt;math&amp;gt;  i \in  \nat  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN_NATURAL1}}||&amp;lt;math&amp;gt;  0 \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_NATURAL1}}||&amp;lt;math&amp;gt;  i \in  \natn  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_UPTO}}||&amp;lt;math&amp;gt;  i \upto  j \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals and &amp;lt;math&amp;gt;j &amp;lt; i&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL}}||&amp;lt;math&amp;gt;  -i \in  \nat  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a positive literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_IN_MINUS_NATURAL1}}||&amp;lt;math&amp;gt;  -i \in  \natn  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a non-negative literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL}}||&amp;lt;math&amp;gt;x \in \nat  \;\;\defi\;\;  0 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_NATURAL1}}||&amp;lt;math&amp;gt;x \in \natn  \;\;\defi\;\;  1 \leq x &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_TRUE}}||&amp;lt;math&amp;gt;  \bool (P) = \True  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL_KBOOL_FALSE}}||&amp;lt;math&amp;gt;  \bool (P) = \False  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MIN}}||&amp;lt;math&amp;gt;  E = \min (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \leq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_MAX}}||&amp;lt;math&amp;gt;  E = \max (S) \;\;\defi\;\;  E \in  S \land  (\forall x \qdot  x \in  S \limp  E \geq  x) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, E&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PLUS}}||&amp;lt;math&amp;gt;  E + \ldots  + 0 + \ldots  + F \;\;\defi\;\;  E + \ldots  + F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_R}}||&amp;lt;math&amp;gt;  E - 0 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_MINUS_L}}||&amp;lt;math&amp;gt;  0 - E \;\;\defi\;\;  -E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_MINUS}}||&amp;lt;math&amp;gt;   - (- E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MINUS_UNMINUS}}||&amp;lt;math&amp;gt; E  - (- F) \;\;\defi\;\;  E + F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;(-F)&amp;lt;/math&amp;gt; is a unary minus expression or a negative literal ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS}}||&amp;lt;math&amp;gt;  E - E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_L}}||&amp;lt;math&amp;gt; (A + \ldots + C + \ldots + B) - C \;\;\defi\;\; A + \ldots + B &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_R}}||&amp;lt;math&amp;gt; C - (A + \ldots + C + \ldots + B)  \;\;\defi\;\;  -(A + \ldots + B) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MINUS_PLUS_PLUS}}||&amp;lt;math&amp;gt; (A + \ldots + E + \ldots + B) - (C + \ldots + E + \ldots + D)  \;\;\defi\;\; (A + \ldots + B) - (C + \ldots + D) &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_PLUS_MINUS}}||&amp;lt;math&amp;gt;(A + \ldots + D + \ldots + (C - D) + \ldots + B) \;\;\defi\;\; A + \ldots + C + \ldots + B  &amp;lt;/math&amp;gt;|| ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_PLUS}}||&amp;lt;math&amp;gt; A + \ldots + E + \ldots + B  &amp;lt; C + \ldots + E + \ldots + D   \;\;\defi\;\; A + \ldots + B &amp;lt; C + \ldots + D &amp;lt;/math&amp;gt;|| where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt;||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_R}}||&amp;lt;math&amp;gt; C &amp;lt; A + \ldots + C \ldots + B   \;\;\defi\;\;   0 &amp;lt; A + \ldots + B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_PLUS_L}}||&amp;lt;math&amp;gt; A + \ldots + C \ldots + B &amp;lt; C   \;\;\defi\;\;   A + \ldots + B &amp;lt; 0 &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_R}}||&amp;lt;math&amp;gt; A - C &amp;lt; B - C  \;\;\defi\;\; A &amp;lt; B &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_ARITHREL_MINUS_MINUS_L}}||&amp;lt;math&amp;gt; C - A &amp;lt; C - B  \;\;\defi\;\; B &amp;lt; A &amp;lt;/math&amp;gt;||where the root relation (&amp;lt;math&amp;gt;&amp;lt;&amp;lt;/math&amp;gt; here) is one of &amp;lt;math&amp;gt;\{=, &amp;lt;, \leq, &amp;gt;, \geq\}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_0}}||&amp;lt;math&amp;gt;  E * \ldots  * 0 * \ldots  * F \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_1}}||&amp;lt;math&amp;gt;  E * \ldots  * 1 * \ldots  * F \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_EVEN}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  E * \ldots  * F &amp;lt;/math&amp;gt;|| if an even number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PROD_MINUS_ODD}}||&amp;lt;math&amp;gt;  (-E) * \ldots  * (-F) \;\;\defi\;\;  -(E * \ldots  * F) &amp;lt;/math&amp;gt;|| if an odd number of &amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_MINUS}}||&amp;lt;math&amp;gt;   - (i) \;\;\defi\;\;  (-i) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; is a literal ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_EQUAL}}||&amp;lt;math&amp;gt;  i = j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LE}}||&amp;lt;math&amp;gt;  i \leq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_LT}}||&amp;lt;math&amp;gt;  i &amp;lt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GE}}||&amp;lt;math&amp;gt;  i \geq  j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_LIT_GT}}||&amp;lt;math&amp;gt;  i &amp;gt; j \;\;\defi\;\;  \btrue  \;or\; \bfalse  \;\;(computation) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; are literals ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DIV_MINUS}}||&amp;lt;math&amp;gt;  (- E) \div  (-F) \;\;\defi\;\;  E \div  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_1}}||&amp;lt;math&amp;gt;  E \div  1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DIV_0}}||&amp;lt;math&amp;gt;  0 \div  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_R}}||&amp;lt;math&amp;gt;  E ^ 1 \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_1_L}}||&amp;lt;math&amp;gt;  1 ^ E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EXPN_0}}||&amp;lt;math&amp;gt;  E ^ 0 \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LE}}||&amp;lt;math&amp;gt;  E \leq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_LT}}||&amp;lt;math&amp;gt;  E &amp;lt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GE}}||&amp;lt;math&amp;gt;  E \geq  E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_GT}}||&amp;lt;math&amp;gt;  E &amp;gt; E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV}}||&amp;lt;math&amp;gt;  E \div  E \;\;\defi\;\;  1 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DIV_PROD}}||&amp;lt;math&amp;gt;  (X * \ldots * E * \ldots * Y) \div  E \;\;\defi\;\;  X * \ldots * Y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_MOD}}||&amp;lt;math&amp;gt;  E \,\bmod\,  E \;\;\defi\;\;  0 &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_PLUS}}||&amp;lt;math&amp;gt;  a * (b + c) \;\;\defi\;\;  (a * b) + (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PROD_MINUS}}||&amp;lt;math&amp;gt;  a * (b - c) \;\;\defi\;\;  (a * b) - (a * c) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_NOT_EQUAL}}||&amp;lt;math&amp;gt;    \lnot E = F \;\;\defi\;\;  E &amp;lt; F \lor E &amp;gt; F  &amp;lt;/math&amp;gt;|| &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; must be of Integer type ||  M &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Relation_Rewrite_Rules&amp;diff=14526</id>
		<title>Relation Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Relation_Rewrite_Rules&amp;diff=14526"/>
		<updated>2023-04-06T09:32:25Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Rule DEF_BCOMP has been implemented in Rodin 3.8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_SETENUM}}||&amp;lt;math&amp;gt;  \dom (\{ x \mapsto  a, \ldots , y \mapsto  b\} ) \;\;\defi\;\;  \{ x, \ldots , y\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_CONVERSE}}||&amp;lt;math&amp;gt;  \dom (r^{-1} ) \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_SETENUM}}||&amp;lt;math&amp;gt;  \ran (\{ x \mapsto  a, \ldots , y \mapsto  b\} ) \;\;\defi\;\;  \{ a, \ldots , b\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_CONVERSE}}||&amp;lt;math&amp;gt;  \ran (r^{-1} ) \;\;\defi\;\;  \dom (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||&amp;lt;math&amp;gt;  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OVERL}}||&amp;lt;math&amp;gt;r_1 \ovl  \cdots  \ovl r_n \defi r_1 \ovl \cdots \ovl r_{i-1} \ovl r_{i+1} \ovl \cdots \ovl r_n&amp;lt;/math&amp;gt;|| there is a &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;1\leq i &amp;lt; j \leq n&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r_i&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r_j&amp;lt;/math&amp;gt; are syntactically equal. ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_OVERL_CPROD}}||&amp;lt;math&amp;gt; r\ovl\cdots\ovl\mathit{Ty}\ovl\cdots\ovl s \;\defi\;\; \mathit{Ty}\ovl\cdots\ovl s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMRES_L}}||&amp;lt;math&amp;gt;  \emptyset  \domres  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMRES_R}}||&amp;lt;math&amp;gt;  S \domres  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOMRES}}||&amp;lt;math&amp;gt; \mathit{Ty} \domres  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMRES_DOM}}||&amp;lt;math&amp;gt;  \dom (r) \domres  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMRES_RAN}}||&amp;lt;math&amp;gt;  \ran (r) \domres  r^{-1}  \;\;\defi\;\;  r^{-1} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMRES_DOMRES_ID}}||&amp;lt;math&amp;gt;  S \domres  (T \domres \id) \;\;\defi\;\;  (S \binter  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMRES_DOMSUB_ID}}||&amp;lt;math&amp;gt;  S \domres  (T \domsub \id) \;\;\defi\;\;  (S \setminus  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANRES_R}}||&amp;lt;math&amp;gt;  r \ranres  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANRES_L}}||&amp;lt;math&amp;gt;  \emptyset  \ranres  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RANRES}}||&amp;lt;math&amp;gt;  r \ranres  \mathit{Ty} \;\;\defi\;\;  r &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANRES_RAN}}||&amp;lt;math&amp;gt;  r \ranres  \ran (r) \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANRES_DOM}}||&amp;lt;math&amp;gt;  r^{-1}  \ranres  \dom (r) \;\;\defi\;\;  r^{-1} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_ID}}||&amp;lt;math&amp;gt;  \id  \ranres  S \;\;\defi\;\;  S  \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_ID}}||&amp;lt;math&amp;gt;  \id  \ransub  S \;\;\defi\;\;  S  \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id) \ranres  T \;\;\defi\;\;  (S \binter  T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANRES_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id) \ranres  T \;\;\defi\;\;  (T \setminus  S) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMSUB_L}}||&amp;lt;math&amp;gt;  \emptyset  \domsub  r \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOMSUB_R}}||&amp;lt;math&amp;gt;  S \domsub  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOMSUB}}||&amp;lt;math&amp;gt; \mathit{Ty} \domsub  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMSUB_DOM}}||&amp;lt;math&amp;gt;  \dom (r) \domsub  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOMSUB_RAN}}||&amp;lt;math&amp;gt;  \ran (r) \domsub  r^{-1} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMSUB_DOMRES_ID}}||&amp;lt;math&amp;gt;  S \domsub (T \domres \id ) \;\;\defi\;\;  (T \setminus S) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOMSUB_DOMSUB_ID}}||&amp;lt;math&amp;gt;  S \domsub (T \domsub \id ) \;\;\defi\;\;  (S \bunion T) \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANSUB_R}}||&amp;lt;math&amp;gt;  r \ransub  \emptyset  \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RANSUB_L}}||&amp;lt;math&amp;gt;  \emptyset  \ransub  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RANSUB}}||&amp;lt;math&amp;gt;  r \ransub  \mathit{Ty} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANSUB_DOM}}||&amp;lt;math&amp;gt;  r^{-1} \ransub  \dom (r) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RANSUB_RAN}}||&amp;lt;math&amp;gt;  r \ransub  \ran (r) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id) \ransub  T \;\;\defi\;\;  (S \setminus T) \domres \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RANSUB_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id) \ransub  T \;\;\defi\;\;  (S \bunion T) \domsub \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FCOMP}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp \emptyset  \fcomp \ldots  \fcomp s \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_ID}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp \id \fcomp \ldots  \fcomp s \;\;\defi\;\;  r \fcomp \ldots  \fcomp s &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_R}}||&amp;lt;math&amp;gt;  r \fcomp \mathit{Ty} \;\;\defi\;\;  \dom (r) \cprod  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_FCOMP_L}}||&amp;lt;math&amp;gt; \mathit{Ty} \fcomp r \;\;\defi\;\;  \mathit{Ta} \cprod  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID}}||&amp;lt;math&amp;gt;  r \fcomp \ldots  \fcomp S \domres \id \fcomp T \domres \id \fcomp \ldots  s \;\;\defi\;\;  r \fcomp \ldots  \fcomp (S \binter  T) \domres \id \fcomp \ldots  \fcomp s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BCOMP}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  \emptyset  \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_ID}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  \id \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  r \bcomp  \ldots  \bcomp  s &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_L}}||&amp;lt;math&amp;gt; \mathit{Ty} \bcomp  r \;\;\defi\;\;  \dom (r) \cprod  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BCOMP_R}}||&amp;lt;math&amp;gt;  r \bcomp  \mathit{Ty} \;\;\defi\;\;  \mathit{Ta} \cprod  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_BCOMP_ID}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp S \domres \id \bcomp T \domres \id \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  r \bcomp  \ldots  \bcomp (S \binter  T) \domres \id \bcomp  \ldots  \bcomp  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DPROD_R}}||&amp;lt;math&amp;gt;  r \dprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \dprod  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DPROD_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})  \dprod  (\mathit{U} \cprod \mathit{V})  \;\;\defi\;\;  \mathit{S}  \binter  \mathit{U}  \cprod  (\mathit{T}  \cprod  \mathit{V}) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PPROD_R}}||&amp;lt;math&amp;gt;  r \pprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_PPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \pprod  r \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_PPROD_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})  \pprod  (\mathit{U} \cprod \mathit{V}) \;\;\defi\;\;  (\mathit{S} \cprod \mathit{U}) \cprod (\mathit{T} \cprod \mathit{V}) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RELIMAGE_R}}||&amp;lt;math&amp;gt;  r[\emptyset ] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RELIMAGE_L}}||&amp;lt;math&amp;gt;  \emptyset [S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RELIMAGE}}||&amp;lt;math&amp;gt;  r[Ty] \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_DOM}}||&amp;lt;math&amp;gt;  r[\dom (r)] \;\;\defi\;\;  \ran (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_ID}}||&amp;lt;math&amp;gt;  \id[T] \;\;\defi\;\;  T &amp;lt;/math&amp;gt;|| ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_DOMRES_ID}}||&amp;lt;math&amp;gt;  (S \domres \id)[T] \;\;\defi\;\;  S \binter  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_DOMSUB_ID}}||&amp;lt;math&amp;gt;  (S \domsub \id)[T] \;\;\defi\;\;  T \setminus S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CPROD_SING}}||&amp;lt;math&amp;gt;  (\{ E\}  \cprod  S)[\{ E\} ] \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_SING_MAPSTO}}||&amp;lt;math&amp;gt;  \{ E \mapsto  F\} [\{ E\} ] \;\;\defi\;\;  \{ F\} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CONVERSE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  S)^{-1} [S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_CONVERSE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  S)^{-1} [S] \;\;\defi\;\;  r^{-1} [S] &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RELIMAGE_CONVERSE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)^{-1} [T] \;\;\defi\;\;  r^{-1} [T] \setminus S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  S)[T] \;\;\defi\;\;  r[T] \setminus S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  S)[T] \;\;\defi\;\;  r[T] \binter  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RELIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)[S] \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;  (S \domsub  r)[T] \;\;\defi\;\;  r[T \setminus S] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_RELIMAGE_DOMRES}}||&amp;lt;math&amp;gt;  (S \domres  r)[T] \;\;\defi\;\;  r[S \binter  T] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CONVERSE}}||&amp;lt;math&amp;gt;  \emptyset ^{-1}  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_ID}}||&amp;lt;math&amp;gt;  \id^{-1}  \;\;\defi\;\;  \id &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_CPROD}}||&amp;lt;math&amp;gt;  (\mathit{S} \cprod \mathit{T})^{-1}  \;\;\defi\;\;  \mathit{T} \cprod \mathit{S} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_SETENUM}}||&amp;lt;math&amp;gt;  \{ x \mapsto  a, \ldots , y \mapsto  b\} ^{-1}  \;\;\defi\;\;  \{ a \mapsto  x, \ldots , b \mapsto  y\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_COMPSET}}||&amp;lt;math&amp;gt;  \{ X \qdot  P \mid  x\mapsto y\} ^{-1}  \;\;\defi\;\;  \{ X \qdot  P \mid  y\mapsto x\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_ID}}||&amp;lt;math&amp;gt;  \dom (\id) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_ID}}||&amp;lt;math&amp;gt;  \ran (\id) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID_L}}||&amp;lt;math&amp;gt;  (S \domres \id) \fcomp r \;\;\defi\;\;  S \domres  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FCOMP_ID_R}}||&amp;lt;math&amp;gt;  r \fcomp (S \domres \id) \;\;\defi\;\;  r \ranres  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_REL_R}}||&amp;lt;math&amp;gt;  S \rel  \emptyset  \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\srel  \pfun  \pinj  \psur&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_REL_L}}||&amp;lt;math&amp;gt;  \emptyset  \rel  S \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\trel  \pfun  \tfun  \pinj  \tinj&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_PRJ1}}||&amp;lt;math&amp;gt;  \prjone (E \mapsto  F) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_PRJ2}}||&amp;lt;math&amp;gt;  \prjtwo (E \mapsto  F) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_PRJ1}}||&amp;lt;math&amp;gt;  \dom (\prjone) \;\;\defi\;\;  S \cprod T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_PRJ2}}||&amp;lt;math&amp;gt;  \dom (\prjtwo) \;\;\defi\;\; S \cprod T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_PRJ1}}||&amp;lt;math&amp;gt;  \ran (\prjone) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_PRJ2}}||&amp;lt;math&amp;gt;  \ran (\prjtwo) \;\;\defi\;\;  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_LAMBDA}}||&amp;lt;math&amp;gt;  (\lambda x \qdot  P(x) \mid  E(x))(y) \;\;\defi\;\;  E(y) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_LAMBDA}}||&amp;lt;math&amp;gt;\dom(\{x\qdot P\mid E\mapsto F) \;\;\defi\;\; \{x\qdot P\mid E\}&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_LAMBDA}}||&amp;lt;math&amp;gt;\ran(\{x\qdot P\mid E\mapsto F) \;\;\defi\;\; \{x\qdot P\mid F\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE}}||&amp;lt;math&amp;gt;E\mapsto F(E)\in F \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE_CONVERSE_L}}||&amp;lt;math&amp;gt;F^{-1}(E)\mapsto E\in F \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_FUNIMAGE_CONVERSE_R}}||&amp;lt;math&amp;gt;F(E)\mapsto E\in F^{-1} \;\;\defi\;\; \btrue&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_SETENUM_LL}}||&amp;lt;math&amp;gt;  \{ A \mapsto  E, \ldots  , B \mapsto  E\} (x) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_SETENUM_LR}}||&amp;lt;math&amp;gt;  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} (x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_OVERL_SETENUM}}||&amp;lt;math&amp;gt;  (r \ovl  \ldots  \ovl  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} )(x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_FUNIMAGE_BUNION_SETENUM}}||&amp;lt;math&amp;gt;  (r \bunion  \ldots  \bunion  \{ E, \ldots  , x \mapsto  y, \ldots  , F\} )(x) \;\;\defi\;\;  y &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_CPROD}}||&amp;lt;math&amp;gt;  (S \cprod  \{ F\} )(x) \;\;\defi\;\;  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_ID}}||&amp;lt;math&amp;gt;  \id (x) \;\;\defi\;\;  x &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_FUNIMAGE_CONVERSE}}||&amp;lt;math&amp;gt;  f(f^{-1} (E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_CONVERSE_FUNIMAGE}}||&amp;lt;math&amp;gt;  f^{-1}(f(E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_FUNIMAGE_CONVERSE_SETENUM}}||&amp;lt;math&amp;gt;  \{x \mapsto a, \ldots, y \mapsto b\}(\{a \mapsto x, \ldots, b \mapsto y\}(E)) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_DOMRES}}||&amp;lt;math&amp;gt;(E \domres F)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_DOMSUB}}||&amp;lt;math&amp;gt;(E \domsub F)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_RANRES}}||&amp;lt;math&amp;gt;(F\ranres E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_RANSUB}}||&amp;lt;math&amp;gt;(F \ransub E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FUNIMAGE_SETMINUS}}||&amp;lt;math&amp;gt;(F \setminus E)(G)\;\;\defi\;\;F(G)&amp;lt;/math&amp;gt; ||  with hypothesis&amp;lt;math&amp;gt; F \in \mathit{A} \ \mathit{op}\  \mathit{B}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;.  || AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_BCOMP}}||&amp;lt;math&amp;gt;  r \bcomp  \ldots  \bcomp  s \;\;\defi\;\;  s \fcomp \ldots  \fcomp r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DERIV_ID_SING}}||&amp;lt;math&amp;gt;  \{ E\} \domres \id \;\;\defi\;\;  \{ E \mapsto  E\} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_DOM}}||&amp;lt;math&amp;gt;  \dom (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_RAN}}||&amp;lt;math&amp;gt;  \ran (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_CONVERSE_CONVERSE}}||&amp;lt;math&amp;gt;  r^{-1-1}  \;\;\defi\;\;  r &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_RELIMAGE_FCOMP}}||&amp;lt;math&amp;gt;  (p \fcomp q)[s] \;\;\defi\;\;  q[p[s]] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_DOMRES}}||&amp;lt;math&amp;gt;  (s \domres  p) \fcomp q \;\;\defi\;\;  s \domres  (p \fcomp q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_DOMSUB}}||&amp;lt;math&amp;gt;  (s \domsub  p) \fcomp q \;\;\defi\;\;  s \domsub  (p \fcomp q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_RANRES}}||&amp;lt;math&amp;gt;  p \fcomp (q \ranres  s) \;\;\defi\;\;  (p \fcomp q) \ranres  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FCOMP_RANSUB}}||&amp;lt;math&amp;gt;  p \fcomp (q \ransub  s) \;\;\defi\;\;  (p \fcomp q) \ransub  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_FCOMP_SING}}||&amp;lt;math&amp;gt;  \{E\mapsto F\}\fcomp\{F\mapsto G\} \;\;\defi\;\;  \{E\mapsto G\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_RELDOMRAN}}||&amp;lt;math&amp;gt;  \emptyset  \strel  \emptyset  \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;|| idem for operators &amp;lt;math&amp;gt;\tsur  \tbij&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_DOM}}||&amp;lt;math&amp;gt;  \dom (\mathit{Ty}) \;\;\defi\;\;  \mathit{Ta} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_RAN}}||&amp;lt;math&amp;gt;  \ran (\mathit{Ty}) \;\;\defi\;\;  \mathit{Tb} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression equal to &amp;lt;math&amp;gt;\mathit{Ta} \cprod \mathit{Tb}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_CPROD}}||&amp;lt;math&amp;gt;  \dom (E \cprod  E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_CPROD}}||&amp;lt;math&amp;gt;  \ran (E \cprod  E) \;\;\defi\;\;  E &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_DOMRES}}||&amp;lt;math&amp;gt;\dom(A\domres f) \;\;\defi\;\; \dom(f)\binter A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_DOM_DOMSUB}}||&amp;lt;math&amp;gt;\dom(A\domsub f) \;\;\defi\;\; \dom(f)\setminus A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_RANRES}}||&amp;lt;math&amp;gt;\ran(f\ranres A) \;\;\defi\;\; \ran(f)\binter A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_RAN_RANSUB}}||&amp;lt;math&amp;gt;\ran(f\ransub A) \;\;\defi\;\; \ran(f)\setminus A&amp;lt;/math&amp;gt;|| || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOM}}||&amp;lt;math&amp;gt;  E \in  \dom (r) \;\;\defi\;\;  \exists y \qdot  E \mapsto  y \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RAN}}||&amp;lt;math&amp;gt;  F \in  \ran (r) \;\;\defi\;\;  \exists x \qdot  x \mapsto  F  \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_CONVERSE}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r^{-1}  \;\;\defi\;\;  F \mapsto  E \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOMRES}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \domres  r \;\;\defi\;\;  E \in  S \land  E \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RANRES}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r \ranres  T \;\;\defi\;\;  E \mapsto  F \in  r \land  F \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DOMSUB}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \domsub  r \;\;\defi\;\;  E \notin  S \land  E \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RANSUB}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  r \ranres  T \;\;\defi\;\;  E \mapsto  F \in  r \land  F \notin  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELIMAGE}}||&amp;lt;math&amp;gt;  F \in  r[w] \;\;\defi\;\;  \exists x \qdot  x \in  w \land  x \mapsto  F \in  r &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_FCOMP}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  (p \fcomp q) \;\;\defi\;\;  \exists x \qdot  E \mapsto  x \in  p \land  x \mapsto  F \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_OVERL}}||&amp;lt;math&amp;gt;  p \ovl  q \;\;\defi\;\;  (\dom (q) \domsub  p) \bunion  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_ID}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  \id \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_DPROD}}||&amp;lt;math&amp;gt;  E \mapsto  (F \mapsto  G) \in  p \dprod  q \;\;\defi\;\;  E \mapsto  F \in  p \land  E \mapsto  G \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_PPROD}}||&amp;lt;math&amp;gt;  (E \mapsto  G) \mapsto  (F \mapsto  H) \in  p \pprod  q \;\;\defi\;\;  E \mapsto  F \in  p \land  G \mapsto  H \in  q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_REL}}||&amp;lt;math&amp;gt;  r \in  S \rel  T \;\;\defi\;\;  r\subseteq S\cprod T&amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELDOM}}||&amp;lt;math&amp;gt;  r \in  S \trel  T \;\;\defi\;\;  r \in  S \rel  T \land  \dom (r) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELRAN}}||&amp;lt;math&amp;gt;  r \in  S \srel  T \;\;\defi\;\;  r \in  S \rel  T \land  \ran (r) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_RELDOMRAN}}||&amp;lt;math&amp;gt;  r \in  S \strel  T \;\;\defi\;\;  r \in  S \rel  T \land  \dom (r) = S \land  \ran (r) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_FCT}}||&amp;lt;math&amp;gt;\begin{array}{rcl}&lt;br /&gt;
 f \in  S \pfun  T &amp;amp; \defi &amp;amp; f \in  S \rel  T  \\  &amp;amp; \land &amp;amp; (\forall x,y,z \qdot  x \mapsto  y \in  f \land  x \mapsto  z \in  f \limp  y = z) \\ \end{array} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TFCT}}||&amp;lt;math&amp;gt;  f \in  S \tfun  T \;\;\defi\;\;  f \in  S \pfun  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_INJ}}||&amp;lt;math&amp;gt;  f \in  S \pinj  T \;\;\defi\;\;  f \in  S \pfun  T \land  f^{-1}  \in  T \pfun  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TINJ}}||&amp;lt;math&amp;gt;  f \in  S \tinj  T \;\;\defi\;\;  f \in  S \pinj  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SURJ}}||&amp;lt;math&amp;gt;  f \in  S \psur  T \;\;\defi\;\;  f \in  S \pfun  T \land  \ran (f) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_TSURJ}}||&amp;lt;math&amp;gt;  f \in  S \tsur  T \;\;\defi\;\;  f \in  S \psur  T \land  \dom (f) = S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BIJ}}||&amp;lt;math&amp;gt;  f \in  S \tbij  T \;\;\defi\;\;  f \in  S \tinj  T \land  \ran (f) = T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DISTRI_BCOMP_BUNION}}||&amp;lt;math&amp;gt;  r \bcomp  (s \bunion  t) \;\;\defi\;\;  (r \bcomp  s) \bunion  (r \bcomp  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_FCOMP_BUNION_R}}||&amp;lt;math&amp;gt;  p \fcomp (q \bunion  r) \;\;\defi\;\;  (p \fcomp q) \bunion  (p \fcomp r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_FCOMP_BUNION_L}}||&amp;lt;math&amp;gt;  (q \bunion  r) \fcomp p \;\;\defi\;\;  (q \fcomp p) \bunion  (r \fcomp p) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_BUNION}}||&amp;lt;math&amp;gt;  r \dprod  (s \bunion  t) \;\;\defi\;\;  (r \dprod  s) \bunion  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_BINTER}}||&amp;lt;math&amp;gt;  r \dprod  (s \binter  t) \;\;\defi\;\;  (r \dprod  s) \binter  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_SETMINUS}}||&amp;lt;math&amp;gt;  r \dprod  (s \setminus t) \;\;\defi\;\;  (r \dprod  s) \setminus (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DPROD_OVERL}}||&amp;lt;math&amp;gt;  r \dprod  (s \ovl  t) \;\;\defi\;\;  (r \dprod  s) \ovl  (r \dprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_BUNION}}||&amp;lt;math&amp;gt;  r \pprod  (s \bunion  t) \;\;\defi\;\;  (r \pprod  s) \bunion  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_BINTER}}||&amp;lt;math&amp;gt;  r \pprod  (s \binter  t) \;\;\defi\;\;  (r \pprod  s) \binter  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_SETMINUS}}||&amp;lt;math&amp;gt;  r \pprod  (s \setminus t) \;\;\defi\;\;  (r \pprod  s) \setminus (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_PPROD_OVERL}}||&amp;lt;math&amp;gt;  r \pprod  (s \ovl  t) \;\;\defi\;\;  (r \pprod  s) \ovl  (r \pprod  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_OVERL_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ovl  r \;\;\defi\;\;  (p \ovl  r) \bunion  (q \ovl  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_OVERL_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ovl  r \;\;\defi\;\;  (p \ovl  r) \binter  (q \ovl  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BUNION_R}}||&amp;lt;math&amp;gt;  s \domres  (p \bunion  q) \;\;\defi\;\;  (s \domres  p) \bunion  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BUNION_L}}||&amp;lt;math&amp;gt;  (s \bunion  t) \domres  r \;\;\defi\;\;  (s \domres  r) \bunion  (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BINTER_R}}||&amp;lt;math&amp;gt;  s \domres  (p \binter  q) \;\;\defi\;\;  (s \domres  p) \binter  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMRES_BINTER_L}}||&amp;lt;math&amp;gt;  (s \binter  t) \domres  r \;\;\defi\;\;  (s \domres  r) \binter  (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_SETMINUS_R}}||&amp;lt;math&amp;gt;  s \domres  (p \setminus q) \;\;\defi\;\;  (s \domres  p) \setminus (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_SETMINUS_L}}||&amp;lt;math&amp;gt;  (s \setminus t) \domres  r \;\;\defi\;\;  (s \domres  r) \setminus (t \domres  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_DPROD}}||&amp;lt;math&amp;gt;  s \domres  (p \dprod  q) \;\;\defi\;\;  (s \domres  p) \dprod  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMRES_OVERL}}||&amp;lt;math&amp;gt;  s \domres  (r \ovl  q) \;\;\defi\;\;  (s \domres  r) \ovl  (s \domres  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BUNION_R}}||&amp;lt;math&amp;gt;  s \domsub  (p \bunion  q) \;\;\defi\;\;  (s \domsub  p) \bunion  (s \domsub  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BUNION_L}}||&amp;lt;math&amp;gt;  (s \bunion  t) \domsub  r \;\;\defi\;\;  (s \domsub  r) \binter  (t \domsub  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BINTER_R}}||&amp;lt;math&amp;gt;  s \domsub  (p \binter  q) \;\;\defi\;\;  (s \domsub  p) \binter  (s \domsub  q) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOMSUB_BINTER_L}}||&amp;lt;math&amp;gt;  (s \binter  t) \domsub  r \;\;\defi\;\;  (s \domsub  r) \bunion  (t \domsub  r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMSUB_DPROD}}||&amp;lt;math&amp;gt;  A \domsub  (r \dprod  s) \;\;\defi\;\;  (A \domsub  r) \dprod  (A \domsub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_DOMSUB_OVERL}}||&amp;lt;math&amp;gt;  A \domsub  (r \ovl  s) \;\;\defi\;\;  (A \domsub  r) \ovl  (A \domsub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BUNION_R}}||&amp;lt;math&amp;gt;  r \ranres (s \bunion t) \;\;\defi\;\;  (r \ranres  s) \bunion  (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \bunion  (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BINTER_R}}||&amp;lt;math&amp;gt;  r \ranres (s \binter t) \;\;\defi\;\;  (r \ranres  s) \binter  (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANRES_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \binter  (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_RANRES_SETMINUS_R}}||&amp;lt;math&amp;gt;  r \ranres  (s \setminus t) \;\;\defi\;\;  (r \ranres  s) \setminus (r \ranres  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_RANRES_SETMINUS_L}}||&amp;lt;math&amp;gt;  (p \setminus q) \ranres  s \;\;\defi\;\;  (p \ranres  s) \setminus (q \ranres  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BUNION_R}}||&amp;lt;math&amp;gt;  r \ransub (s\bunion t) \;\;\defi\;\;  (r \ransub  s) \binter  (r \ransub  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q) \ransub  s \;\;\defi\;\;  (p \ransub  s) \bunion  (q \ransub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BINTER_R}}||&amp;lt;math&amp;gt;  r \ransub (s \binter t) \;\;\defi\;\;  (r \ransub  s) \bunion  (r \ransub  t) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RANSUB_BINTER_L}}||&amp;lt;math&amp;gt;  (p \binter  q) \ransub  s \;\;\defi\;\;  (p \ransub  s) \binter  (q \ransub  s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_CONVERSE_BUNION}}||&amp;lt;math&amp;gt;  (p \bunion  q)^{-1}  \;\;\defi\;\;  p^{-1}  \bunion  q^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_BINTER}}||&amp;lt;math&amp;gt;  (p \binter  q)^{-1}  \;\;\defi\;\;  p^{-1}  \binter  q^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_SETMINUS}}||&amp;lt;math&amp;gt;  (r \setminus s)^{-1}  \;\;\defi\;\;  r^{-1}  \setminus s^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_BCOMP}}||&amp;lt;math&amp;gt;  (r \bcomp  s)^{-1}  \;\;\defi\;\;  (s^{-1}  \bcomp  r^{-1} ) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_FCOMP}}||&amp;lt;math&amp;gt;  (p \fcomp q)^{-1}  \;\;\defi\;\;  (q^{-1}  \fcomp p^{-1} ) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_PPROD}}||&amp;lt;math&amp;gt;  (r \pprod  s)^{-1}  \;\;\defi\;\;  r^{-1}  \pprod  s^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_DOMRES}}||&amp;lt;math&amp;gt;  (s \domres  r)^{-1}  \;\;\defi\;\;  r^{-1}  \ranres  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_DOMSUB}}||&amp;lt;math&amp;gt;  (s \domsub  r)^{-1}  \;\;\defi\;\;  r^{-1}  \ransub  s &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_RANRES}}||&amp;lt;math&amp;gt;  (r \ranres  s)^{-1}  \;\;\defi\;\;  s \domres  r^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CONVERSE_RANSUB}}||&amp;lt;math&amp;gt;  (r \ransub  s)^{-1}  \;\;\defi\;\;  s \domsub  r^{-1} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_DOM_BUNION}}||&amp;lt;math&amp;gt;  \dom (r \bunion  s) \;\;\defi\;\;  \dom (r) \bunion  \dom (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RAN_BUNION}}||&amp;lt;math&amp;gt;  \ran (r \bunion  s) \;\;\defi\;\;  \ran (r) \bunion  \ran (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RELIMAGE_BUNION_R}}||&amp;lt;math&amp;gt;  r[S \bunion  T] \;\;\defi\;\;  r[S] \bunion  r[T] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_RELIMAGE_BUNION_L}}||&amp;lt;math&amp;gt;  (p \bunion  q)[S] \;\;\defi\;\;  p[S] \bunion  q[S] &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_DOM_TOTALREL}}||&amp;lt;math&amp;gt;  \dom (r) \;\;\defi\;\;  E &amp;lt;/math&amp;gt; || with hypothesis &amp;lt;math&amp;gt;r \in E \ \mathit{op}\  F&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel, \strel, \tfun, \tinj, \tsur, \tbij&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_RAN_SURJREL}}||&amp;lt;math&amp;gt;  \ran (r) \;\;\defi\;\;  F &amp;lt;/math&amp;gt; || with hypothesis &amp;lt;math&amp;gt;r \in E \ \mathit{op}\  F&amp;lt;/math&amp;gt;, where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\srel,\strel, \psur, \tsur, \tbij&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_PRJ1_SURJ}}||&amp;lt;math&amp;gt;\prjone \in\mathit{Ty}_1\ \mathit{op}\ \mathit{Ty}_2\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathit{Ty}_2&amp;lt;/math&amp;gt; are types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel, \trel, \srel, \strel, \pfun, \tfun, \psur, \tsur &amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_PRJ2_SURJ}}||&amp;lt;math&amp;gt;\prjtwo \in\mathit{Ty}_1\ \mathit{op}\ \mathit{Ty}_2\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathit{Ty}_2&amp;lt;/math&amp;gt; are types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel, \trel, \srel, \strel, \pfun, \tfun, \psur, \tsur &amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_ID_BIJ}}||&amp;lt;math&amp;gt;\id \in\mathit{Ty}\ \mathit{op}\ \mathit{Ty}\;\;\defi\;\; \btrue &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is any arrow ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MAPSTO_PRJ1_PRJ2}}||&amp;lt;math&amp;gt;\prjone(E)\mapsto\prjtwo(E)\;\;\defi\;\; E &amp;lt;/math&amp;gt; ||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DERIV_EXPAND_PRJS}}||&amp;lt;math&amp;gt; E \;\;\defi\;\; \prjone(E) \mapsto \prjtwo(E) &amp;lt;/math&amp;gt; || ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DOM_SUCC}}||&amp;lt;math&amp;gt;\dom(\usucc) \;\;\defi\;\; \intg&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_RAN_SUCC}}||&amp;lt;math&amp;gt;\ran(\usucc) \;\;\defi\;\; \intg&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_MULTI_IN_BUNION}}||&amp;lt;math&amp;gt; E\in A\bunion\cdots\bunion\left\{\cdots, E,\cdots\right\}\bunion\cdots\bunion B\;\;\defi\;\; \btrue&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_MULTI_IN_SETMINUS}}||&amp;lt;math&amp;gt; E\in S\setminus\left\{\cdots, E,\cdots\right\} \;\;\defi\;\; \bfalse&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_PRED}}||&amp;lt;math&amp;gt; \upred\;\;\defi\;\; \usucc^{-1}&amp;lt;/math&amp;gt; || ||  A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14525</id>
		<title>Set Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14525"/>
		<updated>2023-04-06T09:31:27Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Rules DEF_EQUAL_CARD and SIMP_EQUAL_CARD are implemented as of Rodin 3.8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BTRUE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \btrue  \land  \ldots  \land  Q \;\;\defi\;\;  P \land  \ldots  \land  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BFALSE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \bfalse  \land  \ldots  \land  Q \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  Q \land  \ldots  \land  R \;\;\defi\;\;  P \land  \ldots  \land  Q \land  \ldots  \land  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND_NOT}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BTRUE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \btrue  \lor  \ldots  \lor  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BFALSE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \bfalse  \lor  \ldots  \lor  Q \;\;\defi\;\;  P \lor  \ldots  \lor  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR_NOT}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_R}}||&amp;lt;math&amp;gt;  P \limp  \btrue  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_L}}||&amp;lt;math&amp;gt;  \btrue  \limp  P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_R}}||&amp;lt;math&amp;gt;  P \limp  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_L}}||&amp;lt;math&amp;gt;  \bfalse  \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP}}||&amp;lt;math&amp;gt;  P \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_L}}||&amp;lt;math&amp;gt;\lnot P\limp P\;\;\defi\;\; P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_R}}||&amp;lt;math&amp;gt;P\limp\lnot P\;\;\defi\;\;\lnot P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_R}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  \lnot\, Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_L}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV}}||&amp;lt;math&amp;gt;  P \leqv  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV_NOT}}||&amp;lt;math&amp;gt;  P \leqv  \lnot\, P \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BTRUE}}||&amp;lt;math&amp;gt;  \lnot\, \btrue  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BFALSE}}||&amp;lt;math&amp;gt;  \lnot\, \bfalse  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_NOT}}||&amp;lt;math&amp;gt;  \lnot\, \lnot\, P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  F \;\;\defi\;\;  \lnot\, E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTIN}}||&amp;lt;math&amp;gt;  E \notin  F \;\;\defi\;\;  \lnot\, E \in  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSET}}||&amp;lt;math&amp;gt;  E  \not\subset  F \;\;\defi\;\;  \lnot\, E  \subset  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSETEQ}}||&amp;lt;math&amp;gt;  E  \not\subseteq  F \;\;\defi\;\;  \lnot\, E \subseteq  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LE}}||&amp;lt;math&amp;gt;  \lnot\, a \leq  b \;\;\defi\;\;  a &amp;gt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GE}}||&amp;lt;math&amp;gt;  \lnot\, a \geq  b \;\;\defi\;\;  a &amp;lt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;lt; b \;\;\defi\;\;  a \geq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;gt; b \;\;\defi\;\;  a \leq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \False ) \;\;\defi\;\;  (E = \True ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\False  = E) \;\;\defi\;\;  (\True  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \True ) \;\;\defi\;\;  (E = \False ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\True  = E) \;\;\defi\;\;  (\False  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL_AND}}||&amp;lt;math&amp;gt;  \forall x \qdot  P \land  Q \;\;\defi\;\;  (\forall x \qdot  P) \land  (\forall x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_OR}}||&amp;lt;math&amp;gt;  \exists x \qdot  P \lor  Q \;\;\defi\;\;  (\exists x \qdot  P) \lor  (\exists x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_IMP}}||&amp;lt;math&amp;gt;\exists x\qdot P\limp Q\;\;\defi\;\;(\forall x\qdot P)\limp(\exists x\qdot Q)&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL}}||&amp;lt;math&amp;gt;  \forall \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \forall z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS}}||&amp;lt;math&amp;gt;  \exists \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \exists z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL}}||&amp;lt;math&amp;gt;  E = E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F = G \mapsto  H \;\;\defi\;\;  E = G \land  F = H &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_SING}}||&amp;lt;math&amp;gt;  \{ E\}  = \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_TRUE}}||&amp;lt;math&amp;gt;  \True  = \False  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_SING}}||&amp;lt;math&amp;gt;  \{ E\}  \subseteq  S \;\;\defi\;\;  E \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSETEQ}}||&amp;lt;math&amp;gt;  \emptyset  \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  S \subseteq  A \bunion  \ldots  \bunion  S \bunion  \ldots  \bunion  B \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  A \binter  \ldots  \binter  S \binter  \ldots  \binter  B \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B \subseteq  S \;\;\defi\;\;  A \subseteq  S \land  \ldots  \land  B \subseteq  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  S \subseteq  A \binter  \ldots  \binter  B \;\;\defi\;\;  S \subseteq  A \land  \ldots  \land  S \subseteq  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B  \subset  S \;\;\defi\;\;  A  \subset  S \land  \ldots  \land  B  \subset  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BINTER}}||&amp;lt;math&amp;gt;  S  \subset  A \binter  \ldots  \binter  B \;\;\defi\;\;  S  \subset  A \land  \ldots  \land  S  \subset  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN}}||&amp;lt;math&amp;gt;  E \in  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IN}}||&amp;lt;math&amp;gt;  B \in  \{ A, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_SING}}||&amp;lt;math&amp;gt;  E \in  \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETENUM}}||&amp;lt;math&amp;gt;  \{ A, \ldots , B, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \{ A, \ldots , B, \ldots , C\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \emptyset  \binter  \ldots  \binter  T \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \mathit{Ty} \binter  \ldots  \binter  T \;\;\defi\;\;  S \binter  \ldots  \binter  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  T \binter  \ldots  \binter  U \;\;\defi\;\;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U = T \;\;\defi\;\;  T \subseteq  S \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \emptyset  \bunion  \ldots  \bunion  T \;\;\defi\;\;  S \bunion  \ldots  \bunion  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \mathit{Ty} \bunion  \ldots  \bunion  T \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion T \bunion  \ldots  \bunion T \bunion \ldots  \bunion  U \;\;\defi\;\;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U = T \;\;\defi\;\;  S \bunion  \ldots  \bunion  U \subseteq  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \setminus \emptyset  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_L}}||&amp;lt;math&amp;gt;  \emptyset  \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus \mathit{Ty} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt; \mathit{Ty} \setminus (\mathit{Ty} \setminus S) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW}}||&amp;lt;math&amp;gt;  \union (\pow (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW1}}||&amp;lt;math&amp;gt;  \union (\pown (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KUNION}}||&amp;lt;math&amp;gt;  \union (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_QUNION}}||&amp;lt;math&amp;gt;  \Union  x\qdot  \bfalse  \mid  E \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KINTER}}||&amp;lt;math&amp;gt;  \inter (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KINTER_POW}}||&amp;lt;math&amp;gt;  \inter (\pow (S)) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW}}||&amp;lt;math&amp;gt;  \pow (\emptyset ) \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW1}}||&amp;lt;math&amp;gt;  \pown (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_R}}||&amp;lt;math&amp;gt;  S \cprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \cprod  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_COMPSET_EQUAL}}||&amp;lt;math&amp;gt;  \{ x, y \qdot x = E(y) \land P(y) \mid F(x, y) \}  \;\;\defi\;\;  \{ y \qdot P(y) \mid F(E(y), y) \} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and non free in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_IN}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \in  S \mid  x \}  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_SUBSETEQ}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \subseteq  S \mid  x \}  \;\;\defi\;\;  \pow (S)  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BFALSE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \bfalse  \mid  x \}  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BTRUE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \btrue  \mid  E \}  \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where the type of &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of locally-bound, pairwise-distinct bound identifiers ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_COMPSET_L}}||&amp;lt;math&amp;gt;  \{  x \qdot  P(x) \mid  E(x) \}  \subseteq  S \;\;\defi\;\;  \forall y\qdot  P(y) \limp  E(y) \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; is fresh ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET}}||&amp;lt;math&amp;gt;  F \in  \{  x,y,\ldots \qdot  P(x,y,\ldots) \mid  E(x,y,\ldots) \}  \;\;\defi\;\;  \exists x,y,\ldots \qdot P(x,y,\ldots) \land E(x,y,\ldots) = F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\ldots&amp;lt;/math&amp;gt; are not free in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET_ONEPOINT}}||&amp;lt;math&amp;gt;  E \in  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  P(E) &amp;lt;/math&amp;gt;|| Equivalent to general simplification followed by One Point Rule application with the last conjunct predicate ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSETEQ_COMPSET_R}}||&amp;lt;math&amp;gt;  S \subseteq  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  \forall y\qdot  y \in  S \limp  P(y) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, \{  x \qdot  P(x) \mid  x \}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||&amp;lt;math&amp;gt;  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BTRUE}}||&amp;lt;math&amp;gt;  \bool (\btrue ) \;\;\defi\;\;  \True &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BFALSE}}||&amp;lt;math&amp;gt;  \bool (\bfalse ) \;\;\defi\;\;  \False &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SUBSETEQ_BUNION_SING}}||&amp;lt;math&amp;gt;  S \bunion  \{ F\}  \subseteq  T \;\;\defi\;\;  S \subseteq  T \land  F \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; is a single expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_FINITE}}||&amp;lt;math&amp;gt;  \finite(S) \;\;\defi\;\;  \exists n,f\qdot f\in 1\upto n \tbij S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FINITE}}||&amp;lt;math&amp;gt;  \finite (\emptyset ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_SETENUM}}||&amp;lt;math&amp;gt;  \finite (\{ a, \ldots , b\} ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BUNION}}||&amp;lt;math&amp;gt;  \finite (S \bunion  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_POW}}||&amp;lt;math&amp;gt;  \finite (\pow (S)) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  S = \emptyset  \lor  T = \emptyset  \lor  (\finite (S) \land  \finite (T)) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_CONVERSE}}||&amp;lt;math&amp;gt;  \finite (r^{-1} ) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_UPTO}}||&amp;lt;math&amp;gt;  \finite (a \upto  b) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!-- Disabled rules (some are false, need more thinking to check which)&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_UNION}}||&amp;lt;math&amp;gt;\finite(\union(S)) \;\;\defi\;\; \finite(S)\;\land\;(\forall x\qdot x\in S\limp \finite(x))&amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_QUNION}}||&amp;lt;math&amp;gt;\finite(\Union x\qdot P\mid E) \;\;\defi\;\; \finite(\{x\qdot P\mid E\})\;\land\;(\forall x\qdot P\limp \finite(E))&amp;lt;/math&amp;gt;|| this equivalence is false: for example, the union of an infinite set of empty sets is finite; the right-to-left implication is true ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_L}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_R}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_SETMINUS}}||&amp;lt;math&amp;gt;  \finite (S \setminus T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMRES}}||&amp;lt;math&amp;gt;  \finite (S \domres  r)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANRES}}||&amp;lt;math&amp;gt;  \finite (r \ranres  S)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMSUB}}||&amp;lt;math&amp;gt;  \finite (S \domsub  r) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANSUB}}||&amp;lt;math&amp;gt;  \finite (r \ransub  S) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RELIMAGE}}||&amp;lt;math&amp;gt;  \finite (r[S]) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_OVERL}}||&amp;lt;math&amp;gt;  \finite (r \ovl  s)  \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_REL}}||&amp;lt;math&amp;gt;  \finite (S \rel  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_FCOMP}}||&amp;lt;math&amp;gt;  \finite (r \fcomp s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BCOMP}}||&amp;lt;math&amp;gt;  \finite (r \bcomp  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DPROD}}||&amp;lt;math&amp;gt;  \finite (r \dprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_PPROD}}||&amp;lt;math&amp;gt;  \finite (r \pprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_COMPSET}}||&amp;lt;math&amp;gt;  \finite (\{ x \qdot  x \in  S \land  \ldots  \land  P \mid  x\} ) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RAN}}||&amp;lt;math&amp;gt;  \finite (\ran (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOM}}||&amp;lt;math&amp;gt;  \finite (\dom (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_QINTER}}||&amp;lt;math&amp;gt;  \finite (\Inter  x \qdot  P \mid  E) \;\;\defi\;\;  \exists x \qdot  P \land  \finite (E) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID}}||&amp;lt;math&amp;gt;  \finite (\id) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \id) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1}}||&amp;lt;math&amp;gt;  \finite (\prjone) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2}}||&amp;lt;math&amp;gt;  \finite (\prjtwo) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjone) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjtwo) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL}}||&amp;lt;math&amp;gt;  \finite (\nat ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL1}}||&amp;lt;math&amp;gt;  \finite (\natn ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_INTEGER}}||&amp;lt;math&amp;gt;  \finite (\intg ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BOOL}}||&amp;lt;math&amp;gt;  \finite (\Bool ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_LAMBDA}}||&amp;lt;math&amp;gt;  \finite(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\;  \finite(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_IN}}||&amp;lt;math&amp;gt;  t \in  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BTRUE}}||&amp;lt;math&amp;gt;  P \leqv  \btrue  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BFALSE}}||&amp;lt;math&amp;gt;  P \leqv  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSET}}||&amp;lt;math&amp;gt;  A  \subset  B  \;\;\defi\;\;  A \subseteq B \land \lnot A = B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_R}}||&amp;lt;math&amp;gt;  S  \subset  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_L}}||&amp;lt;math&amp;gt;\emptyset\subset S \;\;\defi\;\;  \lnot\; S = \emptyset&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSET_L}}||&amp;lt;math&amp;gt;  S  \subset  \mathit{Ty} \;\;\defi\;\;  S \neq  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSET}}||&amp;lt;math&amp;gt;  S  \subset  S \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{constr} (a_1, \ldots, a_n) = \operatorname{constr} (b_1, \ldots, b_n)  \;\;\defi\;\;  a_1 = b_1 \land \ldots \land  a_n = b_n  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; is a datatype constructor ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR_DIFF}}||&amp;lt;math&amp;gt;  \operatorname{constr_1} (\ldots) = \operatorname{constr_2} (\ldots)  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\operatorname{constr_2}&amp;lt;/math&amp;gt; are different datatype constructors ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DESTR_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{destr} (\operatorname{constr} (a_1, \ldots, a_n))  \;\;\defi\;\;  a_i  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{destr}&amp;lt;/math&amp;gt; is the datatype destructor for the i-th argument of datatype constructor &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_AND_OR}}||&amp;lt;math&amp;gt;  P \land  (Q \lor  R) \;\;\defi\;\;  (P \land  Q) \lor  (P \land  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_OR_AND}}||&amp;lt;math&amp;gt;  P \lor  (Q \land  R) \;\;\defi\;\;  (P \lor  Q) \land  (P \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_OR}}||&amp;lt;math&amp;gt;  P \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  \lnot\, P \limp  (Q \lor  \ldots  \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP}}||&amp;lt;math&amp;gt;  P \limp  Q \;\;\defi\;\;  \lnot\, Q \limp  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP_IMP}}||&amp;lt;math&amp;gt;  P \limp  (Q \limp  R) \;\;\defi\;\;  P \land  Q \limp  R &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_AND}}||&amp;lt;math&amp;gt;  P \limp  (Q \land  R) \;\;\defi\;\;  (P \limp  Q) \land  (P \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_OR}}||&amp;lt;math&amp;gt;  (P \lor  Q) \limp  R \;\;\defi\;\;  (P \limp  R) \land  (Q \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQV}}||&amp;lt;math&amp;gt;  P \leqv  Q \;\;\defi\;\;  (P \limp  Q) \land  (Q \limp  P) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_AND}}||&amp;lt;math&amp;gt;  \lnot\,(P \land  Q) \;\;\defi\;\;  \lnot\, P \lor  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_OR}}||&amp;lt;math&amp;gt;  \lnot\,(P \lor  Q) \;\;\defi\;\;  \lnot\, P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_IMP}}||&amp;lt;math&amp;gt;  \lnot\,(P \limp  Q) \;\;\defi\;\;  P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_FORALL}}||&amp;lt;math&amp;gt;  \lnot\, \forall x \qdot  P \;\;\defi\;\;  \exists x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_EXISTS}}||&amp;lt;math&amp;gt;  \lnot\, \exists x \qdot  P \;\;\defi\;\;  \forall x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \cprod  T \;\;\defi\;\;  E \in  S \land  F \in  T &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW}}||&amp;lt;math&amp;gt;  E \in  \pow (S) \;\;\defi\;\;  E \subseteq  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW1}}||&amp;lt;math&amp;gt;  E \in  \pown (S) \;\;\defi\;\; E \in  \pow (S) \land S \neq \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSETEQ}}||&amp;lt;math&amp;gt; S \subseteq T  \;\;\defi\;\;  \forall x \qdot  x \in  S \limp  x \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is not free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BUNION}}||&amp;lt;math&amp;gt;  E \in  S \bunion  T \;\;\defi\;\;  E \in  S \lor  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BINTER}}||&amp;lt;math&amp;gt;  E \in  S \binter  T \;\;\defi\;\;  E \in  S \land  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETMINUS}}||&amp;lt;math&amp;gt;  E \in  S \setminus T \;\;\defi\;\;  E \in  S \land  \lnot\,(E \in  T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETENUM}}||&amp;lt;math&amp;gt;  E \in  \{ A, \ldots , B\}  \;\;\defi\;\;  E = A \lor  \ldots  \lor  E = B &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KUNION}}||&amp;lt;math&amp;gt;  E \in  \union (S) \;\;\defi\;\;  \exists s \qdot  s \in  S \land  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QUNION}}||&amp;lt;math&amp;gt;  E \in  (\Union x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \exists s \qdot P(s) \land E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KINTER}}||&amp;lt;math&amp;gt;  E \in  \inter (S) \;\;\defi\;\;  \forall s \qdot  s \in  S \limp  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QINTER}}||&amp;lt;math&amp;gt;  E \in  (\Inter x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \forall s \qdot P(s) \limp E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_UPTO}}||&amp;lt;math&amp;gt;  E \in  a \upto b \;\;\defi\;\; a \leq E \land E \leq b  &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BUNION_BINTER}}||&amp;lt;math&amp;gt;  S \bunion  (T \binter  U) \;\;\defi\;\;  (S \bunion  T) \binter  (S \bunion  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BINTER_BUNION}}||&amp;lt;math&amp;gt;  S \binter  (T \bunion  U) \;\;\defi\;\;  (S \binter  T) \bunion  (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_BINTER_SETMINUS}}||&amp;lt;math&amp;gt;  S \binter  (T \setminus U) \;\;\defi\;\;  (S \binter  T) \setminus (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  S \setminus (T \bunion  U) \;\;\defi\;\;  S \setminus T \setminus U &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BINTER}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \binter  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \bunion  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \binter  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \setminus T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BINTER}}||&amp;lt;math&amp;gt;  S \cprod  (T \binter  U) \;\;\defi\;\;  (S \cprod  T) \binter  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BUNION}}||&amp;lt;math&amp;gt;  S \cprod  (T \bunion  U) \;\;\defi\;\;  (S \cprod  T) \bunion  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_SETMINUS}}||&amp;lt;math&amp;gt;  S \cprod  (T \setminus U) \;\;\defi\;\;  (S \cprod  T) \setminus (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  T \;\;\defi\;\;  (\mathit{Ty} \setminus T) \subseteq  (\mathit{Ty} \setminus S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL}}||&amp;lt;math&amp;gt;  S = T \;\;\defi\;\;  S \subseteq  T \land  T \subseteq  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_L}}||&amp;lt;math&amp;gt;  A \setminus B \subseteq  S \;\;\defi\;\;  A \subseteq  B \bunion  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \subseteq  A \setminus B \;\;\defi\;\;  S \subseteq  A \land  S \binter  B = \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_PARTITION}}||&amp;lt;math&amp;gt;  \operatorname{partition} (s, s_1, s_2, \ldots, s_n) \;\;\defi\;\; &lt;br /&gt;
 		  	\begin{array}{ll}&lt;br /&gt;
		  		&amp;amp; s = s_1\bunion s_2\bunion\cdots\bunion s_n\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_2 = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_n = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_{n-1}\binter s_n = \emptyset&lt;br /&gt;
			\end{array}&amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_EMPTY_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S)  \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_SINGLE_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S, T)  \;\;\defi\;\;  S = T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQUAL_CARD}}||&amp;lt;math&amp;gt;\operatorname{card}(S) = k \;\;\defi\;\; \exists f \qdot f \in 1..k \tbij S&amp;lt;/math&amp;gt;|| also works for &amp;lt;math&amp;gt;k = \operatorname{card}(S)&amp;lt;/math&amp;gt; || M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CARD}}||&amp;lt;math&amp;gt;\operatorname{card}(S) = \operatorname{card}(T) \;\;\defi\;\; \exists f \qdot f \in S \tbij T&amp;lt;/math&amp;gt;|| || M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14524</id>
		<title>Inference Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14524"/>
		<updated>2023-04-06T09:30:14Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add star to proof rules implemented in Rodin 3.8&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;font color=red&amp;gt;CAUTION! Any modification to this page shall be announced on the [[#Mailing_lists |User]] mailing list!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Inference_Rules]].&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; in the first column are currently broken in Rodin 1.1 (see [http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2895507&amp;amp;group_id=108850&amp;amp;atid=651669 bug 2895507]).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{P} \;\;\vdash \;\; \textbf{P}^{\dagger}} &amp;lt;/math&amp;gt;|| see below for &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP_OR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{Q} \;\;\vdash \;\; \textbf{P} \lor \ldots \lor  \textbf{Q}^{\dagger} \lor \ldots \lor \textbf{R}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{Q}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CNTR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\textbf{P},\;\textbf{nP}^{\dagger} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FALSE_HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\bfalse \;\;\vdash \;\; \textbf{P}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|TRUE_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H} \;\;\vdash \;\; \btrue}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in E\;\mathit{op}\;F \;\;\vdash\;\; f\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_IMAGE_GOAL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2,\; f(E)\in S_2\;\;\vdash\;\; \mathbf{P}(f(E))}{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2\;\;\vdash\;\; \mathbf{P}(f(E))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FUN_GOAL_REC}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S_1\;\mathit{op_1}\;(S_2\;\mathit{op_2}\;(\ldots(S_n\;\mathit{op_n}(U\;\mathit{opf}\;V\;))\ldots)) \;\vdash\;\; f(E_1)(E_2)...(E_n)\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types, &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathit{opf}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DBL_HYP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H},\;\textbf{P},\;\textbf{P}  \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P},\textbf{Q} \; \; \vdash \; \;  \textbf{R}}{\textbf{H},\; \textbf{P} \land \textbf{Q} \; \; \vdash \; \;  &lt;br /&gt;
\textbf{R}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \;  \textbf{P} \qquad \textbf{H} \; \; \vdash \; \; \textbf{Q}}{\textbf{H} \; \; \vdash \; \;  \textbf{P} \; \land \; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|IMP_L1}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T}}{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{Q} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H} \;\;\vdash \;\; \textbf{P} \limp \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P} \limp \textbf{Q},  \textbf{P} \limp \textbf{R}\;\;\vdash \;\; \textbf{S}}{\textbf{H},\;\textbf{P} \limp  \textbf{Q} \land \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_OR_L}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P} \limp \textbf{R},  \textbf{Q} \limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P} \lor  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AUTO_MH}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P},\;\textbf{Q}\limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P},\; \textbf{P} \land  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (E=b)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (E=b) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (b=E)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (b=E) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|XST_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;  \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}{&lt;br /&gt;
\textbf{H},\;  \exists \, \textbf{x}\, \qdot\, \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ALL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}\; \; \vdash \; \;  \textbf{P(x)} }{ \textbf{H} \; \; \vdash \; \;  \forall \textbf{x}\, \qdot\, \textbf{P(x)} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; x=E \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; E=x \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SUBSET_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{V})}&lt;br /&gt;
{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U} \binter \dots \binter \textbf{V})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{U}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|IN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{U})}&lt;br /&gt;
{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|NOTIN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\emptyset)}&lt;br /&gt;
{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \neg\,\textbf{P}}{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \bfalse}{\textbf{H} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad\ldots\qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \lor \ldots \lor \textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \lnot\textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \limp\textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|MH}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\textbf{P} \qquad \textbf{H},\; \textbf{Q} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HM}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\neg\,\textbf{Q} \qquad \textbf{H},\; \neg\,\textbf{P} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|EQV_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(Q)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(Q)}}{\textbf{H(P)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(P)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|EQV_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(P)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(P)}}{\textbf{H(Q)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(Q)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E  &lt;br /&gt;
,\;\textbf{P}(F)\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,(G=E)  &lt;br /&gt;
,\;\textbf{P}((\{E\}) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl\{E &lt;br /&gt;
\mapsto F\})(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E \;\;\vdash\;\;\textbf{Q}(F) &lt;br /&gt;
\qquad \textbf{H},\; \neg\,(G=E)  \;\;\vdash\;\;\textbf{Q}((\{E\}) \domsub f)(G))}{\textbf{H} &lt;br /&gt;
\;\;\vdash \;\; \textbf{Q}((f\ovl\{E \mapsto F\})(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g)  ,\;\textbf{P}(g(G))\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,G \in \dom(g)  ,\;\textbf{P}((\dom(g) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl g)(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g) \;\;\vdash\;\;\textbf{Q}(g(G)) \qquad \textbf{H},\; \neg\, G \in \dom(g) \;\;\vdash\;\;\textbf{Q}((\dom(g) \domsub f)(G))}{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f\ovl g)(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \binter f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \binter T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \binter f[T]) \;\;\vdash\;\;\textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \binter T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \setminus f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \setminus T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \setminus f[T]) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \setminus T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H} \; \; \vdash \; \; \textbf{Q}(\{ f(E)\} ) }{\textbf{H} \; \; \vdash \; \;  \textbf{Q}(f[\{ E\} ])} &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H},\; \textbf{Q}(\{ f(E)\}) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[\{ E\} ]) \;\;\vdash\;\; \textbf{G} } &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(g(f(x))) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f \fcomp g)(x))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H},\; \textbf{Q}(g(f(x))) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}((f \fcomp g)(x)) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SUBSETEQ_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(T) \qquad\textbf{H} \;\;\vdash \;\; S \subseteq T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(S)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\lor\;\ldots \;\lor\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\binter\;\ldots \;\binter\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_KINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, s \in S \land \finite\,(s)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\inter(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_QINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, P \land \finite\,(E)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Inter s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\land\;\ldots \;\land\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\bunion\;\ldots \;\bunion\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_KUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S) \;\land\; (\forall s\, \qdot\, s \in S \limp \finite\,(s))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\union(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_QUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite(\{s\qdot P\mid E\})\;\land\;(\forall s\, \qdot\, P \limp \finite\,(E))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Union s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S)}{\textbf{H} \;\;\vdash \;\; \finite\,(S \;\setminus\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_REL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; r\in S\;\mathit{op}\;T,\; \finite\,(S),\; \finite\,(T) \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\rel T) \qquad\textbf{H} \;\;\vdash \;\; r \;\in\; S \rel T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S \rel T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(r[s])}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_DOM}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(S) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_RAN}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(T) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN1_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN2_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(s) }{\textbf{H} \;\;\vdash \;\; \finite\,(f[s])}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_LT_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \intg \setminus \natn }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_GE_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \nat }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|CARD_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b \;\;\vdash \;\; \textbf{Q}(b-a+1) \qquad \textbf{H},\, b &amp;lt; a \;\;\vdash \;\; \textbf{Q}(0) }{\textbf{H} \;\;\vdash\;\; \textbf{Q}(\card\,(a\upto b))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|CARD_EMPTY_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b,\,\textbf{P}(b-a+1)  \;\;\vdash \;\; \textbf{Q} \qquad \textbf{H},\, b &amp;lt; a ,\, \textbf{P}(0)\;\;\vdash \;\; \textbf{Q} }{\textbf{H},\,\textbf{P}(\card\,(a\upto b))  \;\;\vdash\;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subseteq T}{\textbf{H} \;\;\vdash\;\; \card(S) \leq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subseteq S}{\textbf{H} \;\;\vdash\;\; \card(S) \geq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subset T}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;lt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subset S}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;gt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S = T}{\textbf{H} \;\;\vdash\;\; \card(S) = \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card(S) - \card(S\binter T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) - \card(S\binter T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \setminus  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(T) \qquad \textbf{H},\, \textbf{P}(\card(S) * \card(T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \finite(T) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) * \card(T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \cprod  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} , [x \bcmeq E]\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\textbf{P} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\textbf{Q} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Ponens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\lnot\textbf{Q} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\lnot\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Tollens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CUT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}) \;\;\vdash \;\; \textbf{\textbf{P}} \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || hypothesis &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; is added || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EXISTS_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(E)}{\textbf{H} \;\;\vdash\;\; \exists x \qdot \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTINCT_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{\textbf{G}} \qquad  \textbf{H}, {WD}(\textbf{P}), \lnot \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || case distinction on predicate &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} \;\;\vdash \;\; \textbf{G}}{ \textbf{H}, \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H} \;\;\vdash \;\; \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} }{ \textbf{H}  \;\;\vdash\;\; \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R} }&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_REL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\rel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TREL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\trel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_PFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\pfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\tfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H}, x=0 \;\;\vdash \;\; \textbf{P}(x) \qquad \textbf{H}, n\in\nat, \textbf{P}(n) \;\;\vdash \;\; \textbf{P}(n+1)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT_COMPL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(0) \qquad \textbf{H}, n\in\nat, \forall k\qdot 0\leq k\land k &amp;lt; n \limp \textbf{P}(k) \;\;\vdash \;\; \textbf{P}(n)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Those following rules have been implemented in the reasoner GeneralizedModusPonens.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{P,\varphi(\btrue) \vdash G}{P,\varphi(P^{\dagger}) \vdash G} &amp;lt;/math&amp;gt; ||  see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger},\varphi(\bfalse) \vdash G}{nP^{\dagger},\varphi(P) \vdash G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{P \vdash \varphi(\btrue)}{P \vdash \varphi(P^{\dagger})} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger} \vdash \varphi(\bfalse)}{nP^{\dagger} \vdash \varphi(P)} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash \lnot nG^{\dagger}}{H,\varphi(G)\vdash \lnot nG^{\dagger}} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash \lnot G}{H,\varphi(G^{\dagger})\vdash \lnot G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n}{H,\varphi(G_i)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n}{H,\varphi(G_i^{\dagger})\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thos following rules have been implemented in the MembershipGoal reasoner.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SUBSET_SUBSETEQ}}|| &amp;lt;math&amp;gt; A\subset B\vdash A\subseteq B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DOM_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \dom(A)\subseteq\dom(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RAN_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \ran(A)\subseteq\ran(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_LR}}|| &amp;lt;math&amp;gt; A=B\vdash A\subseteq B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_RL}}|| &amp;lt;math&amp;gt; A=B\vdash B\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_CPROD}}|| &amp;lt;math&amp;gt; x\in\dom(A\cprod B)\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_CPROD}}|| &amp;lt;math&amp;gt; y\in\ran(A\cprod B)\vdash y\in B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash x\in\dom(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash y\in\ran(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SETENUM_SUBSET}}|| &amp;lt;math&amp;gt; \left\{a,\cdots,x,\cdots, z\right\}\subseteq A\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OVR_RIGHT_SUBSET}}|| &amp;lt;math&amp;gt; f\ovl\cdots\ovl g\ovl\cdots\ovl h\subseteq A\vdash g\ovl\cdots\ovl h\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RELSET_SUBSET_CPROD}}|| &amp;lt;math&amp;gt; f\in A\;op\;B\vdash f\subseteq A\cprod B&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IN_SUBSET}}|| &amp;lt;math&amp;gt; x\in A,\;\; A\subseteq B\vdash x\in B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The conventions used in this table are described in [[Variations in HYP, CNTR and GenMP]].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;RRHeader&amp;quot; text-align=&amp;quot;left&amp;quot; border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;8&amp;quot; rules=&amp;quot;all&amp;quot; frame=&amp;quot;box&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border-style:solid; border-color:#AAAAAA;  display:table; {{{style|}}}&amp;quot;&lt;br /&gt;
! &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; !! Side Condition&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b , \ \ b \ge a  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b , \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; || where a and b are integers&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;lt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;gt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a  &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \le b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \ge b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A \subseteq B, \ \ B \subseteq A  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \ \ A \subset B, \ \ B \subset A &amp;lt;/math&amp;gt; || where A and B are sets&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, B \subset A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B, \ \ A \subseteq B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot B \subset A, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot A \subseteq B  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; B \subset A, \ \ B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt;||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \ \ A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot f = e &amp;lt;/math&amp;gt; || where e and f are scalars&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot  f = e &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; || || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also [[Extension Proof Rules#Inference Rules]].&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14502</id>
		<title>Set Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14502"/>
		<updated>2022-11-25T15:18:09Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add rules for cardinal equality&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BTRUE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \btrue  \land  \ldots  \land  Q \;\;\defi\;\;  P \land  \ldots  \land  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BFALSE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \bfalse  \land  \ldots  \land  Q \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  Q \land  \ldots  \land  R \;\;\defi\;\;  P \land  \ldots  \land  Q \land  \ldots  \land  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND_NOT}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BTRUE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \btrue  \lor  \ldots  \lor  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BFALSE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \bfalse  \lor  \ldots  \lor  Q \;\;\defi\;\;  P \lor  \ldots  \lor  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR_NOT}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_R}}||&amp;lt;math&amp;gt;  P \limp  \btrue  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_L}}||&amp;lt;math&amp;gt;  \btrue  \limp  P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_R}}||&amp;lt;math&amp;gt;  P \limp  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_L}}||&amp;lt;math&amp;gt;  \bfalse  \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP}}||&amp;lt;math&amp;gt;  P \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_L}}||&amp;lt;math&amp;gt;\lnot P\limp P\;\;\defi\;\; P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_R}}||&amp;lt;math&amp;gt;P\limp\lnot P\;\;\defi\;\;\lnot P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_R}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  \lnot\, Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_L}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV}}||&amp;lt;math&amp;gt;  P \leqv  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV_NOT}}||&amp;lt;math&amp;gt;  P \leqv  \lnot\, P \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BTRUE}}||&amp;lt;math&amp;gt;  \lnot\, \btrue  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BFALSE}}||&amp;lt;math&amp;gt;  \lnot\, \bfalse  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_NOT}}||&amp;lt;math&amp;gt;  \lnot\, \lnot\, P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  F \;\;\defi\;\;  \lnot\, E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTIN}}||&amp;lt;math&amp;gt;  E \notin  F \;\;\defi\;\;  \lnot\, E \in  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSET}}||&amp;lt;math&amp;gt;  E  \not\subset  F \;\;\defi\;\;  \lnot\, E  \subset  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSETEQ}}||&amp;lt;math&amp;gt;  E  \not\subseteq  F \;\;\defi\;\;  \lnot\, E \subseteq  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LE}}||&amp;lt;math&amp;gt;  \lnot\, a \leq  b \;\;\defi\;\;  a &amp;gt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GE}}||&amp;lt;math&amp;gt;  \lnot\, a \geq  b \;\;\defi\;\;  a &amp;lt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;lt; b \;\;\defi\;\;  a \geq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;gt; b \;\;\defi\;\;  a \leq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \False ) \;\;\defi\;\;  (E = \True ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\False  = E) \;\;\defi\;\;  (\True  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \True ) \;\;\defi\;\;  (E = \False ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\True  = E) \;\;\defi\;\;  (\False  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL_AND}}||&amp;lt;math&amp;gt;  \forall x \qdot  P \land  Q \;\;\defi\;\;  (\forall x \qdot  P) \land  (\forall x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_OR}}||&amp;lt;math&amp;gt;  \exists x \qdot  P \lor  Q \;\;\defi\;\;  (\exists x \qdot  P) \lor  (\exists x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_IMP}}||&amp;lt;math&amp;gt;\exists x\qdot P\limp Q\;\;\defi\;\;(\forall x\qdot P)\limp(\exists x\qdot Q)&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL}}||&amp;lt;math&amp;gt;  \forall \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \forall z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS}}||&amp;lt;math&amp;gt;  \exists \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \exists z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL}}||&amp;lt;math&amp;gt;  E = E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F = G \mapsto  H \;\;\defi\;\;  E = G \land  F = H &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_SING}}||&amp;lt;math&amp;gt;  \{ E\}  = \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_TRUE}}||&amp;lt;math&amp;gt;  \True  = \False  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_SING}}||&amp;lt;math&amp;gt;  \{ E\}  \subseteq  S \;\;\defi\;\;  E \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSETEQ}}||&amp;lt;math&amp;gt;  \emptyset  \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  S \subseteq  A \bunion  \ldots  \bunion  S \bunion  \ldots  \bunion  B \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  A \binter  \ldots  \binter  S \binter  \ldots  \binter  B \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B \subseteq  S \;\;\defi\;\;  A \subseteq  S \land  \ldots  \land  B \subseteq  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  S \subseteq  A \binter  \ldots  \binter  B \;\;\defi\;\;  S \subseteq  A \land  \ldots  \land  S \subseteq  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B  \subset  S \;\;\defi\;\;  A  \subset  S \land  \ldots  \land  B  \subset  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BINTER}}||&amp;lt;math&amp;gt;  S  \subset  A \binter  \ldots  \binter  B \;\;\defi\;\;  S  \subset  A \land  \ldots  \land  S  \subset  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN}}||&amp;lt;math&amp;gt;  E \in  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IN}}||&amp;lt;math&amp;gt;  B \in  \{ A, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_SING}}||&amp;lt;math&amp;gt;  E \in  \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETENUM}}||&amp;lt;math&amp;gt;  \{ A, \ldots , B, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \{ A, \ldots , B, \ldots , C\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \emptyset  \binter  \ldots  \binter  T \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \mathit{Ty} \binter  \ldots  \binter  T \;\;\defi\;\;  S \binter  \ldots  \binter  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  T \binter  \ldots  \binter  U \;\;\defi\;\;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U = T \;\;\defi\;\;  T \subseteq  S \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \emptyset  \bunion  \ldots  \bunion  T \;\;\defi\;\;  S \bunion  \ldots  \bunion  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \mathit{Ty} \bunion  \ldots  \bunion  T \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion T \bunion  \ldots  \bunion T \bunion \ldots  \bunion  U \;\;\defi\;\;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U = T \;\;\defi\;\;  S \bunion  \ldots  \bunion  U \subseteq  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \setminus \emptyset  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_L}}||&amp;lt;math&amp;gt;  \emptyset  \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus \mathit{Ty} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt; \mathit{Ty} \setminus (\mathit{Ty} \setminus S) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW}}||&amp;lt;math&amp;gt;  \union (\pow (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW1}}||&amp;lt;math&amp;gt;  \union (\pown (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KUNION}}||&amp;lt;math&amp;gt;  \union (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_QUNION}}||&amp;lt;math&amp;gt;  \Union  x\qdot  \bfalse  \mid  E \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KINTER}}||&amp;lt;math&amp;gt;  \inter (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KINTER_POW}}||&amp;lt;math&amp;gt;  \inter (\pow (S)) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW}}||&amp;lt;math&amp;gt;  \pow (\emptyset ) \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW1}}||&amp;lt;math&amp;gt;  \pown (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_R}}||&amp;lt;math&amp;gt;  S \cprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \cprod  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_COMPSET_EQUAL}}||&amp;lt;math&amp;gt;  \{ x, y \qdot x = E(y) \land P(y) \mid F(x, y) \}  \;\;\defi\;\;  \{ y \qdot P(y) \mid F(E(y), y) \} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and non free in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_IN}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \in  S \mid  x \}  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_SUBSETEQ}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \subseteq  S \mid  x \}  \;\;\defi\;\;  \pow (S)  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BFALSE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \bfalse  \mid  x \}  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BTRUE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \btrue  \mid  E \}  \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where the type of &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of locally-bound, pairwise-distinct bound identifiers ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_COMPSET_L}}||&amp;lt;math&amp;gt;  \{  x \qdot  P(x) \mid  E(x) \}  \subseteq  S \;\;\defi\;\;  \forall y\qdot  P(y) \limp  E(y) \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; is fresh ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET}}||&amp;lt;math&amp;gt;  F \in  \{  x,y,\ldots \qdot  P(x,y,\ldots) \mid  E(x,y,\ldots) \}  \;\;\defi\;\;  \exists x,y,\ldots \qdot P(x,y,\ldots) \land E(x,y,\ldots) = F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\ldots&amp;lt;/math&amp;gt; are not free in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET_ONEPOINT}}||&amp;lt;math&amp;gt;  E \in  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  P(E) &amp;lt;/math&amp;gt;|| Equivalent to general simplification followed by One Point Rule application with the last conjunct predicate ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSETEQ_COMPSET_R}}||&amp;lt;math&amp;gt;  S \subseteq  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  \forall y\qdot  y \in  S \limp  P(y) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, \{  x \qdot  P(x) \mid  x \}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||&amp;lt;math&amp;gt;  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BTRUE}}||&amp;lt;math&amp;gt;  \bool (\btrue ) \;\;\defi\;\;  \True &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BFALSE}}||&amp;lt;math&amp;gt;  \bool (\bfalse ) \;\;\defi\;\;  \False &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SUBSETEQ_BUNION_SING}}||&amp;lt;math&amp;gt;  S \bunion  \{ F\}  \subseteq  T \;\;\defi\;\;  S \subseteq  T \land  F \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; is a single expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_FINITE}}||&amp;lt;math&amp;gt;  \finite(S) \;\;\defi\;\;  \exists n,f\qdot f\in 1\upto n \tbij S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FINITE}}||&amp;lt;math&amp;gt;  \finite (\emptyset ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_SETENUM}}||&amp;lt;math&amp;gt;  \finite (\{ a, \ldots , b\} ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BUNION}}||&amp;lt;math&amp;gt;  \finite (S \bunion  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_POW}}||&amp;lt;math&amp;gt;  \finite (\pow (S)) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  S = \emptyset  \lor  T = \emptyset  \lor  (\finite (S) \land  \finite (T)) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_CONVERSE}}||&amp;lt;math&amp;gt;  \finite (r^{-1} ) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_UPTO}}||&amp;lt;math&amp;gt;  \finite (a \upto  b) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!-- Disabled rules (some are false, need more thinking to check which)&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_UNION}}||&amp;lt;math&amp;gt;\finite(\union(S)) \;\;\defi\;\; \finite(S)\;\land\;(\forall x\qdot x\in S\limp \finite(x))&amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_QUNION}}||&amp;lt;math&amp;gt;\finite(\Union x\qdot P\mid E) \;\;\defi\;\; \finite(\{x\qdot P\mid E\})\;\land\;(\forall x\qdot P\limp \finite(E))&amp;lt;/math&amp;gt;|| this equivalence is false: for example, the union of an infinite set of empty sets is finite; the right-to-left implication is true ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_L}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_R}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_SETMINUS}}||&amp;lt;math&amp;gt;  \finite (S \setminus T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMRES}}||&amp;lt;math&amp;gt;  \finite (S \domres  r)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANRES}}||&amp;lt;math&amp;gt;  \finite (r \ranres  S)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMSUB}}||&amp;lt;math&amp;gt;  \finite (S \domsub  r) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANSUB}}||&amp;lt;math&amp;gt;  \finite (r \ransub  S) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RELIMAGE}}||&amp;lt;math&amp;gt;  \finite (r[S]) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_OVERL}}||&amp;lt;math&amp;gt;  \finite (r \ovl  s)  \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_REL}}||&amp;lt;math&amp;gt;  \finite (S \rel  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_FCOMP}}||&amp;lt;math&amp;gt;  \finite (r \fcomp s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BCOMP}}||&amp;lt;math&amp;gt;  \finite (r \bcomp  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DPROD}}||&amp;lt;math&amp;gt;  \finite (r \dprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_PPROD}}||&amp;lt;math&amp;gt;  \finite (r \pprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_COMPSET}}||&amp;lt;math&amp;gt;  \finite (\{ x \qdot  x \in  S \land  \ldots  \land  P \mid  x\} ) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RAN}}||&amp;lt;math&amp;gt;  \finite (\ran (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOM}}||&amp;lt;math&amp;gt;  \finite (\dom (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_QINTER}}||&amp;lt;math&amp;gt;  \finite (\Inter  x \qdot  P \mid  E) \;\;\defi\;\;  \exists x \qdot  P \land  \finite (E) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID}}||&amp;lt;math&amp;gt;  \finite (\id) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \id) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1}}||&amp;lt;math&amp;gt;  \finite (\prjone) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2}}||&amp;lt;math&amp;gt;  \finite (\prjtwo) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjone) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjtwo) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL}}||&amp;lt;math&amp;gt;  \finite (\nat ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL1}}||&amp;lt;math&amp;gt;  \finite (\natn ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_INTEGER}}||&amp;lt;math&amp;gt;  \finite (\intg ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BOOL}}||&amp;lt;math&amp;gt;  \finite (\Bool ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_LAMBDA}}||&amp;lt;math&amp;gt;  \finite(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\;  \finite(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_IN}}||&amp;lt;math&amp;gt;  t \in  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BTRUE}}||&amp;lt;math&amp;gt;  P \leqv  \btrue  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BFALSE}}||&amp;lt;math&amp;gt;  P \leqv  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSET}}||&amp;lt;math&amp;gt;  A  \subset  B  \;\;\defi\;\;  A \subseteq B \land \lnot A = B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_R}}||&amp;lt;math&amp;gt;  S  \subset  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_L}}||&amp;lt;math&amp;gt;\emptyset\subset S \;\;\defi\;\;  \lnot\; S = \emptyset&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSET_L}}||&amp;lt;math&amp;gt;  S  \subset  \mathit{Ty} \;\;\defi\;\;  S \neq  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSET}}||&amp;lt;math&amp;gt;  S  \subset  S \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{constr} (a_1, \ldots, a_n) = \operatorname{constr} (b_1, \ldots, b_n)  \;\;\defi\;\;  a_1 = b_1 \land \ldots \land  a_n = b_n  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; is a datatype constructor ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR_DIFF}}||&amp;lt;math&amp;gt;  \operatorname{constr_1} (\ldots) = \operatorname{constr_2} (\ldots)  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\operatorname{constr_2}&amp;lt;/math&amp;gt; are different datatype constructors ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DESTR_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{destr} (\operatorname{constr} (a_1, \ldots, a_n))  \;\;\defi\;\;  a_i  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{destr}&amp;lt;/math&amp;gt; is the datatype destructor for the i-th argument of datatype constructor &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_AND_OR}}||&amp;lt;math&amp;gt;  P \land  (Q \lor  R) \;\;\defi\;\;  (P \land  Q) \lor  (P \land  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_OR_AND}}||&amp;lt;math&amp;gt;  P \lor  (Q \land  R) \;\;\defi\;\;  (P \lor  Q) \land  (P \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_OR}}||&amp;lt;math&amp;gt;  P \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  \lnot\, P \limp  (Q \lor  \ldots  \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP}}||&amp;lt;math&amp;gt;  P \limp  Q \;\;\defi\;\;  \lnot\, Q \limp  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP_IMP}}||&amp;lt;math&amp;gt;  P \limp  (Q \limp  R) \;\;\defi\;\;  P \land  Q \limp  R &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_AND}}||&amp;lt;math&amp;gt;  P \limp  (Q \land  R) \;\;\defi\;\;  (P \limp  Q) \land  (P \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_OR}}||&amp;lt;math&amp;gt;  (P \lor  Q) \limp  R \;\;\defi\;\;  (P \limp  R) \land  (Q \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQV}}||&amp;lt;math&amp;gt;  P \leqv  Q \;\;\defi\;\;  (P \limp  Q) \land  (Q \limp  P) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_AND}}||&amp;lt;math&amp;gt;  \lnot\,(P \land  Q) \;\;\defi\;\;  \lnot\, P \lor  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_OR}}||&amp;lt;math&amp;gt;  \lnot\,(P \lor  Q) \;\;\defi\;\;  \lnot\, P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_IMP}}||&amp;lt;math&amp;gt;  \lnot\,(P \limp  Q) \;\;\defi\;\;  P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_FORALL}}||&amp;lt;math&amp;gt;  \lnot\, \forall x \qdot  P \;\;\defi\;\;  \exists x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_EXISTS}}||&amp;lt;math&amp;gt;  \lnot\, \exists x \qdot  P \;\;\defi\;\;  \forall x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \cprod  T \;\;\defi\;\;  E \in  S \land  F \in  T &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW}}||&amp;lt;math&amp;gt;  E \in  \pow (S) \;\;\defi\;\;  E \subseteq  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW1}}||&amp;lt;math&amp;gt;  E \in  \pown (S) \;\;\defi\;\; E \in  \pow (S) \land S \neq \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSETEQ}}||&amp;lt;math&amp;gt; S \subseteq T  \;\;\defi\;\;  \forall x \qdot  x \in  S \limp  x \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is not free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BUNION}}||&amp;lt;math&amp;gt;  E \in  S \bunion  T \;\;\defi\;\;  E \in  S \lor  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BINTER}}||&amp;lt;math&amp;gt;  E \in  S \binter  T \;\;\defi\;\;  E \in  S \land  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETMINUS}}||&amp;lt;math&amp;gt;  E \in  S \setminus T \;\;\defi\;\;  E \in  S \land  \lnot\,(E \in  T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETENUM}}||&amp;lt;math&amp;gt;  E \in  \{ A, \ldots , B\}  \;\;\defi\;\;  E = A \lor  \ldots  \lor  E = B &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KUNION}}||&amp;lt;math&amp;gt;  E \in  \union (S) \;\;\defi\;\;  \exists s \qdot  s \in  S \land  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QUNION}}||&amp;lt;math&amp;gt;  E \in  (\Union x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \exists s \qdot P(s) \land E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KINTER}}||&amp;lt;math&amp;gt;  E \in  \inter (S) \;\;\defi\;\;  \forall s \qdot  s \in  S \limp  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QINTER}}||&amp;lt;math&amp;gt;  E \in  (\Inter x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \forall s \qdot P(s) \limp E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_UPTO}}||&amp;lt;math&amp;gt;  E \in  a \upto b \;\;\defi\;\; a \leq E \land E \leq b  &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BUNION_BINTER}}||&amp;lt;math&amp;gt;  S \bunion  (T \binter  U) \;\;\defi\;\;  (S \bunion  T) \binter  (S \bunion  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BINTER_BUNION}}||&amp;lt;math&amp;gt;  S \binter  (T \bunion  U) \;\;\defi\;\;  (S \binter  T) \bunion  (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_BINTER_SETMINUS}}||&amp;lt;math&amp;gt;  S \binter  (T \setminus U) \;\;\defi\;\;  (S \binter  T) \setminus (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  S \setminus (T \bunion  U) \;\;\defi\;\;  S \setminus T \setminus U &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BINTER}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \binter  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \bunion  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \binter  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \setminus T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BINTER}}||&amp;lt;math&amp;gt;  S \cprod  (T \binter  U) \;\;\defi\;\;  (S \cprod  T) \binter  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BUNION}}||&amp;lt;math&amp;gt;  S \cprod  (T \bunion  U) \;\;\defi\;\;  (S \cprod  T) \bunion  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_SETMINUS}}||&amp;lt;math&amp;gt;  S \cprod  (T \setminus U) \;\;\defi\;\;  (S \cprod  T) \setminus (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  T \;\;\defi\;\;  (\mathit{Ty} \setminus T) \subseteq  (\mathit{Ty} \setminus S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL}}||&amp;lt;math&amp;gt;  S = T \;\;\defi\;\;  S \subseteq  T \land  T \subseteq  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_L}}||&amp;lt;math&amp;gt;  A \setminus B \subseteq  S \;\;\defi\;\;  A \subseteq  B \bunion  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \subseteq  A \setminus B \;\;\defi\;\;  S \subseteq  A \land  S \binter  B = \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_PARTITION}}||&amp;lt;math&amp;gt;  \operatorname{partition} (s, s_1, s_2, \ldots, s_n) \;\;\defi\;\; &lt;br /&gt;
 		  	\begin{array}{ll}&lt;br /&gt;
		  		&amp;amp; s = s_1\bunion s_2\bunion\cdots\bunion s_n\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_2 = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_n = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_{n-1}\binter s_n = \emptyset&lt;br /&gt;
			\end{array}&amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_EMPTY_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S)  \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_SINGLE_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S, T)  \;\;\defi\;\;  S = T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|DEF_EQUAL_CARD}}||&amp;lt;math&amp;gt;\operatorname{card}(S) = k \;\;\defi\;\; \exists f \qdot f \in 1..k \tbij S&amp;lt;/math&amp;gt;|| also works for &amp;lt;math&amp;gt;k = \operatorname{card}(S)&amp;lt;/math&amp;gt; || M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_EQUAL_CARD}}||&amp;lt;math&amp;gt;\operatorname{card}(S) = \operatorname{card}(T) \;\;\defi\;\; \exists f \qdot f \in S \tbij T&amp;lt;/math&amp;gt;|| || M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14501</id>
		<title>Set Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14501"/>
		<updated>2022-10-21T15:30:03Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Move rewrite rules for KUNION and QUNION to the commented-out section for disabled rules, as they are false&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BTRUE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \btrue  \land  \ldots  \land  Q \;\;\defi\;\;  P \land  \ldots  \land  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BFALSE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \bfalse  \land  \ldots  \land  Q \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  Q \land  \ldots  \land  R \;\;\defi\;\;  P \land  \ldots  \land  Q \land  \ldots  \land  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND_NOT}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BTRUE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \btrue  \lor  \ldots  \lor  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BFALSE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \bfalse  \lor  \ldots  \lor  Q \;\;\defi\;\;  P \lor  \ldots  \lor  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR_NOT}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_R}}||&amp;lt;math&amp;gt;  P \limp  \btrue  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_L}}||&amp;lt;math&amp;gt;  \btrue  \limp  P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_R}}||&amp;lt;math&amp;gt;  P \limp  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_L}}||&amp;lt;math&amp;gt;  \bfalse  \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP}}||&amp;lt;math&amp;gt;  P \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_L}}||&amp;lt;math&amp;gt;\lnot P\limp P\;\;\defi\;\; P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_R}}||&amp;lt;math&amp;gt;P\limp\lnot P\;\;\defi\;\;\lnot P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_R}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  \lnot\, Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_L}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV}}||&amp;lt;math&amp;gt;  P \leqv  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV_NOT}}||&amp;lt;math&amp;gt;  P \leqv  \lnot\, P \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BTRUE}}||&amp;lt;math&amp;gt;  \lnot\, \btrue  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BFALSE}}||&amp;lt;math&amp;gt;  \lnot\, \bfalse  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_NOT}}||&amp;lt;math&amp;gt;  \lnot\, \lnot\, P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  F \;\;\defi\;\;  \lnot\, E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTIN}}||&amp;lt;math&amp;gt;  E \notin  F \;\;\defi\;\;  \lnot\, E \in  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSET}}||&amp;lt;math&amp;gt;  E  \not\subset  F \;\;\defi\;\;  \lnot\, E  \subset  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSETEQ}}||&amp;lt;math&amp;gt;  E  \not\subseteq  F \;\;\defi\;\;  \lnot\, E \subseteq  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LE}}||&amp;lt;math&amp;gt;  \lnot\, a \leq  b \;\;\defi\;\;  a &amp;gt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GE}}||&amp;lt;math&amp;gt;  \lnot\, a \geq  b \;\;\defi\;\;  a &amp;lt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;lt; b \;\;\defi\;\;  a \geq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;gt; b \;\;\defi\;\;  a \leq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \False ) \;\;\defi\;\;  (E = \True ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\False  = E) \;\;\defi\;\;  (\True  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \True ) \;\;\defi\;\;  (E = \False ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\True  = E) \;\;\defi\;\;  (\False  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL_AND}}||&amp;lt;math&amp;gt;  \forall x \qdot  P \land  Q \;\;\defi\;\;  (\forall x \qdot  P) \land  (\forall x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_OR}}||&amp;lt;math&amp;gt;  \exists x \qdot  P \lor  Q \;\;\defi\;\;  (\exists x \qdot  P) \lor  (\exists x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_IMP}}||&amp;lt;math&amp;gt;\exists x\qdot P\limp Q\;\;\defi\;\;(\forall x\qdot P)\limp(\exists x\qdot Q)&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL}}||&amp;lt;math&amp;gt;  \forall \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \forall z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS}}||&amp;lt;math&amp;gt;  \exists \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \exists z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL}}||&amp;lt;math&amp;gt;  E = E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F = G \mapsto  H \;\;\defi\;\;  E = G \land  F = H &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_SING}}||&amp;lt;math&amp;gt;  \{ E\}  = \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_TRUE}}||&amp;lt;math&amp;gt;  \True  = \False  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_SING}}||&amp;lt;math&amp;gt;  \{ E\}  \subseteq  S \;\;\defi\;\;  E \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSETEQ}}||&amp;lt;math&amp;gt;  \emptyset  \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  S \subseteq  A \bunion  \ldots  \bunion  S \bunion  \ldots  \bunion  B \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  A \binter  \ldots  \binter  S \binter  \ldots  \binter  B \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B \subseteq  S \;\;\defi\;\;  A \subseteq  S \land  \ldots  \land  B \subseteq  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  S \subseteq  A \binter  \ldots  \binter  B \;\;\defi\;\;  S \subseteq  A \land  \ldots  \land  S \subseteq  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B  \subset  S \;\;\defi\;\;  A  \subset  S \land  \ldots  \land  B  \subset  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BINTER}}||&amp;lt;math&amp;gt;  S  \subset  A \binter  \ldots  \binter  B \;\;\defi\;\;  S  \subset  A \land  \ldots  \land  S  \subset  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN}}||&amp;lt;math&amp;gt;  E \in  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IN}}||&amp;lt;math&amp;gt;  B \in  \{ A, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_SING}}||&amp;lt;math&amp;gt;  E \in  \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETENUM}}||&amp;lt;math&amp;gt;  \{ A, \ldots , B, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \{ A, \ldots , B, \ldots , C\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \emptyset  \binter  \ldots  \binter  T \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \mathit{Ty} \binter  \ldots  \binter  T \;\;\defi\;\;  S \binter  \ldots  \binter  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  T \binter  \ldots  \binter  U \;\;\defi\;\;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U = T \;\;\defi\;\;  T \subseteq  S \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \emptyset  \bunion  \ldots  \bunion  T \;\;\defi\;\;  S \bunion  \ldots  \bunion  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \mathit{Ty} \bunion  \ldots  \bunion  T \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion T \bunion  \ldots  \bunion T \bunion \ldots  \bunion  U \;\;\defi\;\;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U = T \;\;\defi\;\;  S \bunion  \ldots  \bunion  U \subseteq  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \setminus \emptyset  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_L}}||&amp;lt;math&amp;gt;  \emptyset  \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus \mathit{Ty} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt; \mathit{Ty} \setminus (\mathit{Ty} \setminus S) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW}}||&amp;lt;math&amp;gt;  \union (\pow (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW1}}||&amp;lt;math&amp;gt;  \union (\pown (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KUNION}}||&amp;lt;math&amp;gt;  \union (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_QUNION}}||&amp;lt;math&amp;gt;  \Union  x\qdot  \bfalse  \mid  E \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KINTER}}||&amp;lt;math&amp;gt;  \inter (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KINTER_POW}}||&amp;lt;math&amp;gt;  \inter (\pow (S)) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW}}||&amp;lt;math&amp;gt;  \pow (\emptyset ) \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW1}}||&amp;lt;math&amp;gt;  \pown (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_R}}||&amp;lt;math&amp;gt;  S \cprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \cprod  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_COMPSET_EQUAL}}||&amp;lt;math&amp;gt;  \{ x, y \qdot x = E(y) \land P(y) \mid F(x, y) \}  \;\;\defi\;\;  \{ y \qdot P(y) \mid F(E(y), y) \} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and non free in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_IN}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \in  S \mid  x \}  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_SUBSETEQ}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \subseteq  S \mid  x \}  \;\;\defi\;\;  \pow (S)  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BFALSE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \bfalse  \mid  x \}  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BTRUE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \btrue  \mid  E \}  \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where the type of &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of locally-bound, pairwise-distinct bound identifiers ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_COMPSET_L}}||&amp;lt;math&amp;gt;  \{  x \qdot  P(x) \mid  E(x) \}  \subseteq  S \;\;\defi\;\;  \forall y\qdot  P(y) \limp  E(y) \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; is fresh ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET}}||&amp;lt;math&amp;gt;  F \in  \{  x,y,\ldots \qdot  P(x,y,\ldots) \mid  E(x,y,\ldots) \}  \;\;\defi\;\;  \exists x,y,\ldots \qdot P(x,y,\ldots) \land E(x,y,\ldots) = F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\ldots&amp;lt;/math&amp;gt; are not free in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET_ONEPOINT}}||&amp;lt;math&amp;gt;  E \in  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  P(E) &amp;lt;/math&amp;gt;|| Equivalent to general simplification followed by One Point Rule application with the last conjunct predicate ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSETEQ_COMPSET_R}}||&amp;lt;math&amp;gt;  S \subseteq  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  \forall y\qdot  y \in  S \limp  P(y) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, \{  x \qdot  P(x) \mid  x \}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||&amp;lt;math&amp;gt;  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BTRUE}}||&amp;lt;math&amp;gt;  \bool (\btrue ) \;\;\defi\;\;  \True &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BFALSE}}||&amp;lt;math&amp;gt;  \bool (\bfalse ) \;\;\defi\;\;  \False &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SUBSETEQ_BUNION_SING}}||&amp;lt;math&amp;gt;  S \bunion  \{ F\}  \subseteq  T \;\;\defi\;\;  S \subseteq  T \land  F \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; is a single expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_FINITE}}||&amp;lt;math&amp;gt;  \finite(S) \;\;\defi\;\;  \exists n,f\qdot f\in 1\upto n \tbij S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FINITE}}||&amp;lt;math&amp;gt;  \finite (\emptyset ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_SETENUM}}||&amp;lt;math&amp;gt;  \finite (\{ a, \ldots , b\} ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BUNION}}||&amp;lt;math&amp;gt;  \finite (S \bunion  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_POW}}||&amp;lt;math&amp;gt;  \finite (\pow (S)) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  S = \emptyset  \lor  T = \emptyset  \lor  (\finite (S) \land  \finite (T)) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_CONVERSE}}||&amp;lt;math&amp;gt;  \finite (r^{-1} ) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_UPTO}}||&amp;lt;math&amp;gt;  \finite (a \upto  b) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!-- Disabled rules (some are false, need more thinking to check which)&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_UNION}}||&amp;lt;math&amp;gt;\finite(\union(S)) \;\;\defi\;\; \finite(S)\;\land\;(\forall x\qdot x\in S\limp \finite(x))&amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_QUNION}}||&amp;lt;math&amp;gt;\finite(\Union x\qdot P\mid E) \;\;\defi\;\; \finite(\{x\qdot P\mid E\})\;\land\;(\forall x\qdot P\limp \finite(E))&amp;lt;/math&amp;gt;|| this equivalence is false: for example, the union of an infinite set of empty sets is finite; the right-to-left implication is true ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_L}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_R}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_SETMINUS}}||&amp;lt;math&amp;gt;  \finite (S \setminus T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMRES}}||&amp;lt;math&amp;gt;  \finite (S \domres  r)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANRES}}||&amp;lt;math&amp;gt;  \finite (r \ranres  S)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMSUB}}||&amp;lt;math&amp;gt;  \finite (S \domsub  r) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANSUB}}||&amp;lt;math&amp;gt;  \finite (r \ransub  S) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RELIMAGE}}||&amp;lt;math&amp;gt;  \finite (r[S]) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_OVERL}}||&amp;lt;math&amp;gt;  \finite (r \ovl  s)  \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_REL}}||&amp;lt;math&amp;gt;  \finite (S \rel  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_FCOMP}}||&amp;lt;math&amp;gt;  \finite (r \fcomp s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BCOMP}}||&amp;lt;math&amp;gt;  \finite (r \bcomp  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DPROD}}||&amp;lt;math&amp;gt;  \finite (r \dprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_PPROD}}||&amp;lt;math&amp;gt;  \finite (r \pprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_COMPSET}}||&amp;lt;math&amp;gt;  \finite (\{ x \qdot  x \in  S \land  \ldots  \land  P \mid  x\} ) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RAN}}||&amp;lt;math&amp;gt;  \finite (\ran (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOM}}||&amp;lt;math&amp;gt;  \finite (\dom (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_QINTER}}||&amp;lt;math&amp;gt;  \finite (\Inter  x \qdot  P \mid  E) \;\;\defi\;\;  \exists x \qdot  P \land  \finite (E) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID}}||&amp;lt;math&amp;gt;  \finite (\id) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \id) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1}}||&amp;lt;math&amp;gt;  \finite (\prjone) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2}}||&amp;lt;math&amp;gt;  \finite (\prjtwo) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjone) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjtwo) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL}}||&amp;lt;math&amp;gt;  \finite (\nat ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL1}}||&amp;lt;math&amp;gt;  \finite (\natn ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_INTEGER}}||&amp;lt;math&amp;gt;  \finite (\intg ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BOOL}}||&amp;lt;math&amp;gt;  \finite (\Bool ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_LAMBDA}}||&amp;lt;math&amp;gt;  \finite(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\;  \finite(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_IN}}||&amp;lt;math&amp;gt;  t \in  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BTRUE}}||&amp;lt;math&amp;gt;  P \leqv  \btrue  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BFALSE}}||&amp;lt;math&amp;gt;  P \leqv  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSET}}||&amp;lt;math&amp;gt;  A  \subset  B  \;\;\defi\;\;  A \subseteq B \land \lnot A = B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_R}}||&amp;lt;math&amp;gt;  S  \subset  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_L}}||&amp;lt;math&amp;gt;\emptyset\subset S \;\;\defi\;\;  \lnot\; S = \emptyset&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSET_L}}||&amp;lt;math&amp;gt;  S  \subset  \mathit{Ty} \;\;\defi\;\;  S \neq  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSET}}||&amp;lt;math&amp;gt;  S  \subset  S \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{constr} (a_1, \ldots, a_n) = \operatorname{constr} (b_1, \ldots, b_n)  \;\;\defi\;\;  a_1 = b_1 \land \ldots \land  a_n = b_n  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; is a datatype constructor ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR_DIFF}}||&amp;lt;math&amp;gt;  \operatorname{constr_1} (\ldots) = \operatorname{constr_2} (\ldots)  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\operatorname{constr_2}&amp;lt;/math&amp;gt; are different datatype constructors ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DESTR_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{destr} (\operatorname{constr} (a_1, \ldots, a_n))  \;\;\defi\;\;  a_i  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{destr}&amp;lt;/math&amp;gt; is the datatype destructor for the i-th argument of datatype constructor &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_AND_OR}}||&amp;lt;math&amp;gt;  P \land  (Q \lor  R) \;\;\defi\;\;  (P \land  Q) \lor  (P \land  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_OR_AND}}||&amp;lt;math&amp;gt;  P \lor  (Q \land  R) \;\;\defi\;\;  (P \lor  Q) \land  (P \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_OR}}||&amp;lt;math&amp;gt;  P \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  \lnot\, P \limp  (Q \lor  \ldots  \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP}}||&amp;lt;math&amp;gt;  P \limp  Q \;\;\defi\;\;  \lnot\, Q \limp  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP_IMP}}||&amp;lt;math&amp;gt;  P \limp  (Q \limp  R) \;\;\defi\;\;  P \land  Q \limp  R &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_AND}}||&amp;lt;math&amp;gt;  P \limp  (Q \land  R) \;\;\defi\;\;  (P \limp  Q) \land  (P \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_OR}}||&amp;lt;math&amp;gt;  (P \lor  Q) \limp  R \;\;\defi\;\;  (P \limp  R) \land  (Q \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQV}}||&amp;lt;math&amp;gt;  P \leqv  Q \;\;\defi\;\;  (P \limp  Q) \land  (Q \limp  P) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_AND}}||&amp;lt;math&amp;gt;  \lnot\,(P \land  Q) \;\;\defi\;\;  \lnot\, P \lor  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_OR}}||&amp;lt;math&amp;gt;  \lnot\,(P \lor  Q) \;\;\defi\;\;  \lnot\, P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_IMP}}||&amp;lt;math&amp;gt;  \lnot\,(P \limp  Q) \;\;\defi\;\;  P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_FORALL}}||&amp;lt;math&amp;gt;  \lnot\, \forall x \qdot  P \;\;\defi\;\;  \exists x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_EXISTS}}||&amp;lt;math&amp;gt;  \lnot\, \exists x \qdot  P \;\;\defi\;\;  \forall x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \cprod  T \;\;\defi\;\;  E \in  S \land  F \in  T &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW}}||&amp;lt;math&amp;gt;  E \in  \pow (S) \;\;\defi\;\;  E \subseteq  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW1}}||&amp;lt;math&amp;gt;  E \in  \pown (S) \;\;\defi\;\; E \in  \pow (S) \land S \neq \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSETEQ}}||&amp;lt;math&amp;gt; S \subseteq T  \;\;\defi\;\;  \forall x \qdot  x \in  S \limp  x \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is not free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BUNION}}||&amp;lt;math&amp;gt;  E \in  S \bunion  T \;\;\defi\;\;  E \in  S \lor  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BINTER}}||&amp;lt;math&amp;gt;  E \in  S \binter  T \;\;\defi\;\;  E \in  S \land  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETMINUS}}||&amp;lt;math&amp;gt;  E \in  S \setminus T \;\;\defi\;\;  E \in  S \land  \lnot\,(E \in  T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETENUM}}||&amp;lt;math&amp;gt;  E \in  \{ A, \ldots , B\}  \;\;\defi\;\;  E = A \lor  \ldots  \lor  E = B &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KUNION}}||&amp;lt;math&amp;gt;  E \in  \union (S) \;\;\defi\;\;  \exists s \qdot  s \in  S \land  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QUNION}}||&amp;lt;math&amp;gt;  E \in  (\Union x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \exists s \qdot P(s) \land E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KINTER}}||&amp;lt;math&amp;gt;  E \in  \inter (S) \;\;\defi\;\;  \forall s \qdot  s \in  S \limp  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QINTER}}||&amp;lt;math&amp;gt;  E \in  (\Inter x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \forall s \qdot P(s) \limp E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_UPTO}}||&amp;lt;math&amp;gt;  E \in  a \upto b \;\;\defi\;\; a \leq E \land E \leq b  &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BUNION_BINTER}}||&amp;lt;math&amp;gt;  S \bunion  (T \binter  U) \;\;\defi\;\;  (S \bunion  T) \binter  (S \bunion  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BINTER_BUNION}}||&amp;lt;math&amp;gt;  S \binter  (T \bunion  U) \;\;\defi\;\;  (S \binter  T) \bunion  (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_BINTER_SETMINUS}}||&amp;lt;math&amp;gt;  S \binter  (T \setminus U) \;\;\defi\;\;  (S \binter  T) \setminus (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  S \setminus (T \bunion  U) \;\;\defi\;\;  S \setminus T \setminus U &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BINTER}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \binter  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \bunion  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \binter  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \setminus T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BINTER}}||&amp;lt;math&amp;gt;  S \cprod  (T \binter  U) \;\;\defi\;\;  (S \cprod  T) \binter  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BUNION}}||&amp;lt;math&amp;gt;  S \cprod  (T \bunion  U) \;\;\defi\;\;  (S \cprod  T) \bunion  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_SETMINUS}}||&amp;lt;math&amp;gt;  S \cprod  (T \setminus U) \;\;\defi\;\;  (S \cprod  T) \setminus (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  T \;\;\defi\;\;  (\mathit{Ty} \setminus T) \subseteq  (\mathit{Ty} \setminus S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL}}||&amp;lt;math&amp;gt;  S = T \;\;\defi\;\;  S \subseteq  T \land  T \subseteq  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_L}}||&amp;lt;math&amp;gt;  A \setminus B \subseteq  S \;\;\defi\;\;  A \subseteq  B \bunion  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \subseteq  A \setminus B \;\;\defi\;\;  S \subseteq  A \land  S \binter  B = \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_PARTITION}}||&amp;lt;math&amp;gt;  \operatorname{partition} (s, s_1, s_2, \ldots, s_n) \;\;\defi\;\; &lt;br /&gt;
 		  	\begin{array}{ll}&lt;br /&gt;
		  		&amp;amp; s = s_1\bunion s_2\bunion\cdots\bunion s_n\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_2 = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_n = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_{n-1}\binter s_n = \emptyset&lt;br /&gt;
			\end{array}&amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_EMPTY_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S)  \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_SINGLE_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S, T)  \;\;\defi\;\;  S = T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14500</id>
		<title>Inference Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14500"/>
		<updated>2022-10-21T15:26:39Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Fix inference rule FIN_KUNION_R&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;font color=red&amp;gt;CAUTION! Any modification to this page shall be announced on the [[#Mailing_lists |User]] mailing list!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Inference_Rules]].&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; in the first column are currently broken in Rodin 1.1 (see [http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2895507&amp;amp;group_id=108850&amp;amp;atid=651669 bug 2895507]).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{P} \;\;\vdash \;\; \textbf{P}^{\dagger}} &amp;lt;/math&amp;gt;|| see below for &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP_OR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{Q} \;\;\vdash \;\; \textbf{P} \lor \ldots \lor  \textbf{Q}^{\dagger} \lor \ldots \lor \textbf{R}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{Q}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CNTR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\textbf{P},\;\textbf{nP}^{\dagger} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FALSE_HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\bfalse \;\;\vdash \;\; \textbf{P}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|TRUE_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H} \;\;\vdash \;\; \btrue}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in E\;\mathit{op}\;F \;\;\vdash\;\; f\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_IMAGE_GOAL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2,\; f(E)\in S_2\;\;\vdash\;\; \mathbf{P}(f(E))}{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2\;\;\vdash\;\; \mathbf{P}(f(E))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FUN_GOAL_REC}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S_1\;\mathit{op_1}\;(S_2\;\mathit{op_2}\;(\ldots(S_n\;\mathit{op_n}(U\;\mathit{opf}\;V\;))\ldots)) \;\vdash\;\; f(E_1)(E_2)...(E_n)\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types, &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathit{opf}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DBL_HYP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H},\;\textbf{P},\;\textbf{P}  \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P},\textbf{Q} \; \; \vdash \; \;  \textbf{R}}{\textbf{H},\; \textbf{P} \land \textbf{Q} \; \; \vdash \; \;  &lt;br /&gt;
\textbf{R}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \;  \textbf{P} \qquad \textbf{H} \; \; \vdash \; \; \textbf{Q}}{\textbf{H} \; \; \vdash \; \;  \textbf{P} \; \land \; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|IMP_L1}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T}}{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{Q} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H} \;\;\vdash \;\; \textbf{P} \limp \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P} \limp \textbf{Q},  \textbf{P} \limp \textbf{R}\;\;\vdash \;\; \textbf{S}}{\textbf{H},\;\textbf{P} \limp  \textbf{Q} \land \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_OR_L}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P} \limp \textbf{R},  \textbf{Q} \limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P} \lor  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AUTO_MH}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P},\;\textbf{Q}\limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P},\; \textbf{P} \land  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (E=b)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (E=b) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (b=E)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (b=E) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|XST_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;  \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}{&lt;br /&gt;
\textbf{H},\;  \exists \, \textbf{x}\, \qdot\, \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ALL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}\; \; \vdash \; \;  \textbf{P(x)} }{ \textbf{H} \; \; \vdash \; \;  \forall \textbf{x}\, \qdot\, \textbf{P(x)} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; x=E \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; E=x \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SUBSET_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{V})}&lt;br /&gt;
{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U} \binter \dots \binter \textbf{V})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{U}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|IN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{U})}&lt;br /&gt;
{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|NOTIN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\emptyset)}&lt;br /&gt;
{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \neg\,\textbf{P}}{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \bfalse}{\textbf{H} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad\ldots\qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \lor \ldots \lor \textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \lnot\textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \limp\textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|MH}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\textbf{P} \qquad \textbf{H},\; \textbf{Q} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HM}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\neg\,\textbf{Q} \qquad \textbf{H},\; \neg\,\textbf{P} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|EQV_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(Q)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(Q)}}{\textbf{H(P)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(P)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|EQV_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(P)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(P)}}{\textbf{H(Q)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(Q)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E  &lt;br /&gt;
,\;\textbf{P}(F)\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,(G=E)  &lt;br /&gt;
,\;\textbf{P}((\{E\}) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl\{E &lt;br /&gt;
\mapsto F\})(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E \;\;\vdash\;\;\textbf{Q}(F) &lt;br /&gt;
\qquad \textbf{H},\; \neg\,(G=E)  \;\;\vdash\;\;\textbf{Q}((\{E\}) \domsub f)(G))}{\textbf{H} &lt;br /&gt;
\;\;\vdash \;\; \textbf{Q}((f\ovl\{E \mapsto F\})(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g)  ,\;\textbf{P}(g(G))\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,G \in \dom(g)  ,\;\textbf{P}((\dom(g) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl g)(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g) \;\;\vdash\;\;\textbf{Q}(g(G)) \qquad \textbf{H},\; \neg\, G \in \dom(g) \;\;\vdash\;\;\textbf{Q}((\dom(g) \domsub f)(G))}{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f\ovl g)(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \binter f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \binter T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \binter f[T]) \;\;\vdash\;\;\textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \binter T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \setminus f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \setminus T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \setminus f[T]) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \setminus T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H} \; \; \vdash \; \; \textbf{Q}(\{ f(E)\} ) }{\textbf{H} \; \; \vdash \; \;  \textbf{Q}(f[\{ E\} ])} &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H},\; \textbf{Q}(\{ f(E)\}) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[\{ E\} ]) \;\;\vdash\;\; \textbf{G} } &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(g(f(x))) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f \fcomp g)(x))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H},\; \textbf{Q}(g(f(x))) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}((f \fcomp g)(x)) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SUBSETEQ_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(T) \qquad\textbf{H} \;\;\vdash \;\; S \subseteq T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(S)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\lor\;\ldots \;\lor\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\binter\;\ldots \;\binter\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_KINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, s \in S \land \finite\,(s)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\inter(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_QINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, P \land \finite\,(E)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Inter s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_BUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\land\;\ldots \;\land\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\bunion\;\ldots \;\bunion\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_KUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S) \;\land\; (\forall s\, \qdot\, s \in S \limp \finite\,(s))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\union(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_QUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite(\{s\qdot P\mid E\})\;\land\;(\forall s\, \qdot\, P \limp \finite\,(E))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Union s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S)}{\textbf{H} \;\;\vdash \;\; \finite\,(S \;\setminus\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_REL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; r\in S\;\mathit{op}\;T,\; \finite\,(S),\; \finite\,(T) \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\rel T) \qquad\textbf{H} \;\;\vdash \;\; r \;\in\; S \rel T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S \rel T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(r[s])}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_DOM}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(S) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_RAN}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(T) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN1_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN2_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(s) }{\textbf{H} \;\;\vdash \;\; \finite\,(f[s])}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_LT_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \intg \setminus \natn }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_GE_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \nat }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|CARD_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b \;\;\vdash \;\; \textbf{Q}(b-a+1) \qquad \textbf{H},\, b &amp;lt; a \;\;\vdash \;\; \textbf{Q}(0) }{\textbf{H} \;\;\vdash\;\; \textbf{Q}(\card\,(a\upto b))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|CARD_EMPTY_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b,\,\textbf{P}(b-a+1)  \;\;\vdash \;\; \textbf{Q} \qquad \textbf{H},\, b &amp;lt; a ,\, \textbf{P}(0)\;\;\vdash \;\; \textbf{Q} }{\textbf{H},\,\textbf{P}(\card\,(a\upto b))  \;\;\vdash\;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subseteq T}{\textbf{H} \;\;\vdash\;\; \card(S) \leq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subseteq S}{\textbf{H} \;\;\vdash\;\; \card(S) \geq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subset T}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;lt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subset S}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;gt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S = T}{\textbf{H} \;\;\vdash\;\; \card(S) = \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card(S) - \card(S\binter T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) - \card(S\binter T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \setminus  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(T) \qquad \textbf{H},\, \textbf{P}(\card(S) * \card(T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \finite(T) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) * \card(T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \cprod  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} , [x \bcmeq E]\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\textbf{P} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\textbf{Q} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Ponens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\lnot\textbf{Q} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\lnot\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Tollens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CUT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}) \;\;\vdash \;\; \textbf{\textbf{P}} \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || hypothesis &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; is added || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EXISTS_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(E)}{\textbf{H} \;\;\vdash\;\; \exists x \qdot \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTINCT_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{\textbf{G}} \qquad  \textbf{H}, {WD}(\textbf{P}), \lnot \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || case distinction on predicate &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} \;\;\vdash \;\; \textbf{G}}{ \textbf{H}, \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H} \;\;\vdash \;\; \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} }{ \textbf{H}  \;\;\vdash\;\; \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R} }&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_REL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\rel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TREL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\trel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_PFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\pfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\tfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H}, x=0 \;\;\vdash \;\; \textbf{P}(x) \qquad \textbf{H}, n\in\nat, \textbf{P}(n) \;\;\vdash \;\; \textbf{P}(n+1)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT_COMPL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(0) \qquad \textbf{H}, n\in\nat, \forall k\qdot 0\leq k\land k &amp;lt; n \limp \textbf{P}(k) \;\;\vdash \;\; \textbf{P}(n)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Those following rules have been implemented in the reasoner GeneralizedModusPonens.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{P,\varphi(\btrue) \vdash G}{P,\varphi(P^{\dagger}) \vdash G} &amp;lt;/math&amp;gt; ||  see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger},\varphi(\bfalse) \vdash G}{nP^{\dagger},\varphi(P) \vdash G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{P \vdash \varphi(\btrue)}{P \vdash \varphi(P^{\dagger})} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger} \vdash \varphi(\bfalse)}{nP^{\dagger} \vdash \varphi(P)} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash \lnot nG^{\dagger}}{H,\varphi(G)\vdash \lnot nG^{\dagger}} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash \lnot G}{H,\varphi(G^{\dagger})\vdash \lnot G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n}{H,\varphi(G_i)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n}{H,\varphi(G_i^{\dagger})\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thos following rules have been implemented in the MembershipGoal reasoner.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SUBSET_SUBSETEQ}}|| &amp;lt;math&amp;gt; A\subset B\vdash A\subseteq B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DOM_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \dom(A)\subseteq\dom(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RAN_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \ran(A)\subseteq\ran(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_LR}}|| &amp;lt;math&amp;gt; A=B\vdash A\subseteq B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_RL}}|| &amp;lt;math&amp;gt; A=B\vdash B\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_CPROD}}|| &amp;lt;math&amp;gt; x\in\dom(A\cprod B)\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_CPROD}}|| &amp;lt;math&amp;gt; y\in\ran(A\cprod B)\vdash y\in B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash x\in\dom(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash y\in\ran(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SETENUM_SUBSET}}|| &amp;lt;math&amp;gt; \left\{a,\cdots,x,\cdots, z\right\}\subseteq A\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OVR_RIGHT_SUBSET}}|| &amp;lt;math&amp;gt; f\ovl\cdots\ovl g\ovl\cdots\ovl h\subseteq A\vdash g\ovl\cdots\ovl h\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RELSET_SUBSET_CPROD}}|| &amp;lt;math&amp;gt; f\in A\;op\;B\vdash f\subseteq A\cprod B&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IN_SUBSET}}|| &amp;lt;math&amp;gt; x\in A,\;\; A\subseteq B\vdash x\in B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The conventions used in this table are described in [[Variations in HYP, CNTR and GenMP]].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;RRHeader&amp;quot; text-align=&amp;quot;left&amp;quot; border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;8&amp;quot; rules=&amp;quot;all&amp;quot; frame=&amp;quot;box&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border-style:solid; border-color:#AAAAAA;  display:table; {{{style|}}}&amp;quot;&lt;br /&gt;
! &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; !! Side Condition&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b , \ \ b \ge a  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b , \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; || where a and b are integers&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;lt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;gt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a  &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \le b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \ge b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A \subseteq B, \ \ B \subseteq A  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \ \ A \subset B, \ \ B \subset A &amp;lt;/math&amp;gt; || where A and B are sets&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, B \subset A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B, \ \ A \subseteq B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot B \subset A, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot A \subseteq B  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; B \subset A, \ \ B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt;||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \ \ A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot f = e &amp;lt;/math&amp;gt; || where e and f are scalars&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot  f = e &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; || || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also [[Extension Proof Rules#Inference Rules]].&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14499</id>
		<title>Set Rewrite Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Set_Rewrite_Rules&amp;diff=14499"/>
		<updated>2022-10-17T09:26:18Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: add note about finiteness of infinite union&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Rewrite_Rules]].&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BTRUE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \btrue  \land  \ldots  \land  Q \;\;\defi\;\;  P \land  \ldots  \land  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_AND_BFALSE}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \bfalse  \land  \ldots  \land  Q \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  Q \land  \ldots  \land  R \;\;\defi\;\;  P \land  \ldots  \land  Q \land  \ldots  \land  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_AND_NOT}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BTRUE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \btrue  \lor  \ldots  \lor  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OR_BFALSE}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  \bfalse  \lor  \ldots  \lor  Q \;\;\defi\;\;  P \lor  \ldots  \lor  Q &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  R &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_OR_NOT}}||&amp;lt;math&amp;gt;  P \lor  \ldots  \lor  Q \lor  \ldots  \lor  \lnot\, Q \land  \ldots  \land  R \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_R}}||&amp;lt;math&amp;gt;  P \limp  \btrue  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BTRUE_L}}||&amp;lt;math&amp;gt;  \btrue  \limp  P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_R}}||&amp;lt;math&amp;gt;  P \limp  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IMP_BFALSE_L}}||&amp;lt;math&amp;gt;  \bfalse  \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP}}||&amp;lt;math&amp;gt;  P \limp  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_L}}||&amp;lt;math&amp;gt;\lnot P\limp P\;\;\defi\;\; P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_NOT_R}}||&amp;lt;math&amp;gt;P\limp\lnot P\;\;\defi\;\;\lnot P&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_R}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  Q \land  \ldots  \land  R \limp  \lnot\, Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IMP_AND_NOT_L}}||&amp;lt;math&amp;gt;  P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R \limp  Q \;\;\defi\;\;  \lnot\,(P \land  \ldots  \land  \lnot\, Q \land  \ldots  \land  R) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV}}||&amp;lt;math&amp;gt;  P \leqv  P \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQV_NOT}}||&amp;lt;math&amp;gt;  P \leqv  \lnot\, P \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BTRUE}}||&amp;lt;math&amp;gt;  \lnot\, \btrue  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_BFALSE}}||&amp;lt;math&amp;gt;  \lnot\, \bfalse  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_NOT}}||&amp;lt;math&amp;gt;  \lnot\, \lnot\, P \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  F \;\;\defi\;\;  \lnot\, E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTIN}}||&amp;lt;math&amp;gt;  E \notin  F \;\;\defi\;\;  \lnot\, E \in  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSET}}||&amp;lt;math&amp;gt;  E  \not\subset  F \;\;\defi\;\;  \lnot\, E  \subset  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOTSUBSETEQ}}||&amp;lt;math&amp;gt;  E  \not\subseteq  F \;\;\defi\;\;  \lnot\, E \subseteq  F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LE}}||&amp;lt;math&amp;gt;  \lnot\, a \leq  b \;\;\defi\;\;  a &amp;gt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GE}}||&amp;lt;math&amp;gt;  \lnot\, a \geq  b \;\;\defi\;\;  a &amp;lt; b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_LT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;lt; b \;\;\defi\;\;  a \geq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_NOT_GT}}||&amp;lt;math&amp;gt;  \lnot\, a &amp;gt; b \;\;\defi\;\;  a \leq  b &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \False ) \;\;\defi\;\;  (E = \True ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_FALSE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\False  = E) \;\;\defi\;\;  (\True  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_R}}||&amp;lt;math&amp;gt;  \lnot\, (E = \True ) \;\;\defi\;\;  (E = \False ) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_NOT_EQUAL_TRUE_L}}||&amp;lt;math&amp;gt;  \lnot\, (\True  = E) \;\;\defi\;\;  (\False  = E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL_AND}}||&amp;lt;math&amp;gt;  \forall x \qdot  P \land  Q \;\;\defi\;\;  (\forall x \qdot  P) \land  (\forall x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_OR}}||&amp;lt;math&amp;gt;  \exists x \qdot  P \lor  Q \;\;\defi\;\;  (\exists x \qdot  P) \lor  (\exists x \qdot  Q) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS_IMP}}||&amp;lt;math&amp;gt;\exists x\qdot P\limp Q\;\;\defi\;\;(\forall x\qdot P)\limp(\exists x\qdot Q)&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FORALL}}||&amp;lt;math&amp;gt;  \forall \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \forall z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EXISTS}}||&amp;lt;math&amp;gt;  \exists \ldots ,z,\ldots  \qdot  P(z) \;\;\defi\;\;  \exists z \qdot  P(z) &amp;lt;/math&amp;gt;|| Quantified identifiers other than &amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt; do not occur in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL}}||&amp;lt;math&amp;gt;  E = E \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_NOTEQUAL}}||&amp;lt;math&amp;gt;  E \neq  E \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F = G \mapsto  H \;\;\defi\;\;  E = G \land  F = H &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_SING}}||&amp;lt;math&amp;gt;  \{ E\}  = \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQUAL_TRUE}}||&amp;lt;math&amp;gt;  \True  = \False  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_SING}}||&amp;lt;math&amp;gt;  \{ E\}  \subseteq  S \;\;\defi\;\;  E \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a single expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSETEQ}}||&amp;lt;math&amp;gt;  \emptyset  \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  S \subseteq  A \bunion  \ldots  \bunion  S \bunion  \ldots  \bunion  B \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  A \binter  \ldots  \binter  S \binter  \ldots  \binter  B \subseteq  S \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B \subseteq  S \;\;\defi\;\;  A \subseteq  S \land  \ldots  \land  B \subseteq  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_BINTER}}||&amp;lt;math&amp;gt;  S \subseteq  A \binter  \ldots  \binter  B \;\;\defi\;\;  S \subseteq  A \land  \ldots  \land  S \subseteq  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BUNION}}||&amp;lt;math&amp;gt;  A \bunion  \ldots  \bunion  B  \subset  S \;\;\defi\;\;  A  \subset  S \land  \ldots  \land  B  \subset  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSET_BINTER}}||&amp;lt;math&amp;gt;  S  \subset  A \binter  \ldots  \binter  B \;\;\defi\;\;  S  \subset  A \land  \ldots  \land  S  \subset  B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_IN}}||&amp;lt;math&amp;gt;  E \in  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_IN}}||&amp;lt;math&amp;gt;  B \in  \{ A, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_SING}}||&amp;lt;math&amp;gt;  E \in  \{ F\}  \;\;\defi\;\;  E = F &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETENUM}}||&amp;lt;math&amp;gt;  \{ A, \ldots , B, \ldots , B, \ldots , C\}  \;\;\defi\;\;  \{ A, \ldots , B, \ldots , C\} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \emptyset  \binter  \ldots  \binter  T \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  \mathit{Ty} \binter  \ldots  \binter  T \;\;\defi\;\;  S \binter  \ldots  \binter  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  T \binter  \ldots  \binter  U \;\;\defi\;\;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BINTER}}||&amp;lt;math&amp;gt;  S \binter  \ldots  \binter  T \binter  \ldots  \binter  U = T \;\;\defi\;\;  T \subseteq  S \binter  \ldots  \binter  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \emptyset  \bunion  \ldots  \bunion  T \;\;\defi\;\;  S \bunion  \ldots  \bunion  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  \mathit{Ty} \bunion  \ldots  \bunion  T \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion T \bunion  \ldots  \bunion T \bunion \ldots  \bunion  U \;\;\defi\;\;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_EQUAL_BUNION}}||&amp;lt;math&amp;gt;  S \bunion  \ldots  \bunion  T \bunion  \ldots  \bunion  U = T \;\;\defi\;\;  S \bunion  \ldots  \bunion  U \subseteq  T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \setminus \emptyset  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SETMINUS_L}}||&amp;lt;math&amp;gt;  \emptyset  \setminus S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS}}||&amp;lt;math&amp;gt;  S \setminus \mathit{Ty} \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt; \mathit{Ty} \setminus (\mathit{Ty} \setminus S) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW}}||&amp;lt;math&amp;gt;  \union (\pow (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KUNION_POW1}}||&amp;lt;math&amp;gt;  \union (\pown (S)) \;\;\defi\;\;  S &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KUNION}}||&amp;lt;math&amp;gt;  \union (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_QUNION}}||&amp;lt;math&amp;gt;  \Union  x\qdot  \bfalse  \mid  E \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KINTER}}||&amp;lt;math&amp;gt;  \inter (\{ \emptyset \} ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_KINTER_POW}}||&amp;lt;math&amp;gt;  \inter (\pow (S)) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW}}||&amp;lt;math&amp;gt;  \pow (\emptyset ) \;\;\defi\;\;  \{ \emptyset \} &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_POW1}}||&amp;lt;math&amp;gt;  \pown (\emptyset ) \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_R}}||&amp;lt;math&amp;gt;  S \cprod  \emptyset  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_CPROD_L}}||&amp;lt;math&amp;gt;  \emptyset  \cprod  S \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_COMPSET_EQUAL}}||&amp;lt;math&amp;gt;  \{ x, y \qdot x = E(y) \land P(y) \mid F(x, y) \}  \;\;\defi\;\;  \{ y \qdot P(y) \mid F(E(y), y) \} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and non free in &amp;lt;math&amp;gt;P&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_IN}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \in  S \mid  x \}  \;\;\defi\;\;  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_COMPSET_SUBSETEQ}}||&amp;lt;math&amp;gt;  \{  x \qdot  x \subseteq  S \mid  x \}  \;\;\defi\;\;  \pow (S)  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BFALSE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \bfalse  \mid  x \}  \;\;\defi\;\;  \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_COMPSET_BTRUE}}||&amp;lt;math&amp;gt;  \{  x \qdot  \btrue  \mid  E \}  \;\;\defi\;\;  \mathit{Ty} &amp;lt;/math&amp;gt;|| where the type of &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of locally-bound, pairwise-distinct bound identifiers ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SUBSETEQ_COMPSET_L}}||&amp;lt;math&amp;gt;  \{  x \qdot  P(x) \mid  E(x) \}  \subseteq  S \;\;\defi\;\;  \forall y\qdot  P(y) \limp  E(y) \in  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; is fresh ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET}}||&amp;lt;math&amp;gt;  F \in  \{  x,y,\ldots \qdot  P(x,y,\ldots) \mid  E(x,y,\ldots) \}  \;\;\defi\;\;  \exists x,y,\ldots \qdot P(x,y,\ldots) \land E(x,y,\ldots) = F &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\ldots&amp;lt;/math&amp;gt; are not free in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_IN_COMPSET_ONEPOINT}}||&amp;lt;math&amp;gt;  E \in  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  P(E) &amp;lt;/math&amp;gt;|| Equivalent to general simplification followed by One Point Rule application with the last conjunct predicate ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_SUBSETEQ_COMPSET_R}}||&amp;lt;math&amp;gt;  S \subseteq  \{  x \qdot  P(x) \mid  x \}  \;\;\defi\;\;  \forall y\qdot  y \in  S \limp  P(y) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S, \{  x \qdot  P(x) \mid  x \}&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_OVERL}}||&amp;lt;math&amp;gt;  r \ovl  \ldots  \ovl  \emptyset  \ovl  \ldots  \ovl  s \;\;\defi\;\;  r \ovl  \ldots  \ovl  s &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BTRUE}}||&amp;lt;math&amp;gt;  \bool (\btrue ) \;\;\defi\;\;  \True &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_KBOOL_BFALSE}}||&amp;lt;math&amp;gt;  \bool (\bfalse ) \;\;\defi\;\;  \False &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SUBSETEQ_BUNION_SING}}||&amp;lt;math&amp;gt;  S \bunion  \{ F\}  \subseteq  T \;\;\defi\;\;  S \subseteq  T \land  F \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; is a single expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_FINITE}}||&amp;lt;math&amp;gt;  \finite(S) \;\;\defi\;\;  \exists n,f\qdot f\in 1\upto n \tbij S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_FINITE}}||&amp;lt;math&amp;gt;  \finite (\emptyset ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_SETENUM}}||&amp;lt;math&amp;gt;  \finite (\{ a, \ldots , b\} ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BUNION}}||&amp;lt;math&amp;gt;  \finite (S \bunion  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_FINITE_UNION}}||&amp;lt;math&amp;gt;\finite(\union(S)) \;\;\defi\;\; \finite(S)\;\land\;(\forall x\qdot x\in S\limp \finite(x))&amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_FINITE_QUNION}}||&amp;lt;math&amp;gt;\finite(\Union x\qdot P\mid E) \;\;\defi\;\; \finite(\{x\qdot P\mid E\})\;\land\;(\forall x\qdot P\limp \finite(E))&amp;lt;/math&amp;gt;|| this equivalence is false: for example, the union of an infinite set of empty sets is finite; the right-to-left implication is true ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_POW}}||&amp;lt;math&amp;gt;  \finite (\pow (S)) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  S = \emptyset  \lor  T = \emptyset  \lor  (\finite (S) \land  \finite (T)) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_CONVERSE}}||&amp;lt;math&amp;gt;  \finite (r^{-1} ) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_UPTO}}||&amp;lt;math&amp;gt;  \finite (a \upto  b) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
&amp;lt;!-- Disabled rules (some are false, need more thinking to check which)&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_L}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BINTER_R}}||&amp;lt;math&amp;gt;  \finite (S \binter  T) \;\;\defi\;\;  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_SETMINUS}}||&amp;lt;math&amp;gt;  \finite (S \setminus T) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMRES}}||&amp;lt;math&amp;gt;  \finite (S \domres  r)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANRES}}||&amp;lt;math&amp;gt;  \finite (r \ranres  S)  \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOMSUB}}||&amp;lt;math&amp;gt;  \finite (S \domsub  r) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RANSUB}}||&amp;lt;math&amp;gt;  \finite (r \ransub  S) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RELIMAGE}}||&amp;lt;math&amp;gt;  \finite (r[S]) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_CPROD}}||&amp;lt;math&amp;gt;  \finite (S \cprod  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_OVERL}}||&amp;lt;math&amp;gt;  \finite (r \ovl  s)  \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_REL}}||&amp;lt;math&amp;gt;  \finite (S \rel  T) \;\;\defi\;\;  \finite (S) \land  \finite (T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_FCOMP}}||&amp;lt;math&amp;gt;  \finite (r \fcomp s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_BCOMP}}||&amp;lt;math&amp;gt;  \finite (r \bcomp  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DPROD}}||&amp;lt;math&amp;gt;  \finite (r \dprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_PPROD}}||&amp;lt;math&amp;gt;  \finite (r \pprod  s) \;\;\defi\;\;  \finite (r) \land  \finite (s) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_COMPSET}}||&amp;lt;math&amp;gt;  \finite (\{ x \qdot  x \in  S \land  \ldots  \land  P \mid  x\} ) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; non free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_RAN}}||&amp;lt;math&amp;gt;  \finite (\ran (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_DOM}}||&amp;lt;math&amp;gt;  \finite (\dom (r)) \;\;\defi\;\;  \finite (r) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|SIMP_FINITE_QINTER}}||&amp;lt;math&amp;gt;  \finite (\Inter  x \qdot  P \mid  E) \;\;\defi\;\;  \exists x \qdot  P \land  \finite (E) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID}}||&amp;lt;math&amp;gt;  \finite (\id) \;\;\defi\;\;  \finite (S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\id&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_ID_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \id) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1}}||&amp;lt;math&amp;gt;  \finite (\prjone) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjone&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod S)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2}}||&amp;lt;math&amp;gt;  \finite (\prjtwo) \;\;\defi\;\;  \finite (S \cprod T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\prjtwo&amp;lt;/math&amp;gt; has type &amp;lt;math&amp;gt;\pow(S \cprod T \cprod T)&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ1_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjone) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_PRJ2_DOMRES}}||&amp;lt;math&amp;gt;  \finite (E \domres \prjtwo) \;\;\defi\;\;  \finite (E) &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL}}||&amp;lt;math&amp;gt;  \finite (\nat ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_NATURAL1}}||&amp;lt;math&amp;gt;  \finite (\natn ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_INTEGER}}||&amp;lt;math&amp;gt;  \finite (\intg ) \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_BOOL}}||&amp;lt;math&amp;gt;  \finite (\Bool ) \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_FINITE_LAMBDA}}||&amp;lt;math&amp;gt;  \finite(\{x\qdot P\mid E\mapsto F\}) \;\;\defi\;\;  \finite(\{x\qdot P\mid E\} ) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is a maplet combination of bound identifiers and expressions that are not bound by the comprehension set (i.e., &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; is syntactically injective) and all identifiers bound by the comprehension set that occur in &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; also occur in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_IN}}||&amp;lt;math&amp;gt;  t \in  \mathit{Ty} \;\;\defi\;\;  \btrue &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BTRUE}}||&amp;lt;math&amp;gt;  P \leqv  \btrue  \;\;\defi\;\;  P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_EQV_BFALSE}}||&amp;lt;math&amp;gt;  P \leqv  \bfalse  \;\;\defi\;\;  \lnot\, P &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSET}}||&amp;lt;math&amp;gt;  A  \subset  B  \;\;\defi\;\;  A \subseteq B \land \lnot A = B &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_R}}||&amp;lt;math&amp;gt;  S  \subset  \emptyset  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_SPECIAL_SUBSET_L}}||&amp;lt;math&amp;gt;\emptyset\subset S \;\;\defi\;\;  \lnot\; S = \emptyset&amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_TYPE_SUBSET_L}}||&amp;lt;math&amp;gt;  S  \subset  \mathit{Ty} \;\;\defi\;\;  S \neq  \mathit{Ty} &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_MULTI_SUBSET}}||&amp;lt;math&amp;gt;  S  \subset  S \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{constr} (a_1, \ldots, a_n) = \operatorname{constr} (b_1, \ldots, b_n)  \;\;\defi\;\;  a_1 = b_1 \land \ldots \land  a_n = b_n  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; is a datatype constructor ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_EQUAL_CONSTR_DIFF}}||&amp;lt;math&amp;gt;  \operatorname{constr_1} (\ldots) = \operatorname{constr_2} (\ldots)  \;\;\defi\;\;  \bfalse &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{constr_1}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\operatorname{constr_2}&amp;lt;/math&amp;gt; are different datatype constructors ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIMP_DESTR_CONSTR}}||&amp;lt;math&amp;gt;  \operatorname{destr} (\operatorname{constr} (a_1, \ldots, a_n))  \;\;\defi\;\;  a_i  &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\operatorname{destr}&amp;lt;/math&amp;gt; is the datatype destructor for the i-th argument of datatype constructor &amp;lt;math&amp;gt;\operatorname{constr}&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_AND_OR}}||&amp;lt;math&amp;gt;  P \land  (Q \lor  R) \;\;\defi\;\;  (P \land  Q) \lor  (P \land  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_OR_AND}}||&amp;lt;math&amp;gt;  P \lor  (Q \land  R) \;\;\defi\;\;  (P \lor  Q) \land  (P \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_OR}}||&amp;lt;math&amp;gt;  P \lor  Q \lor  \ldots  \lor  R \;\;\defi\;\;  \lnot\, P \limp  (Q \lor  \ldots  \lor  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP}}||&amp;lt;math&amp;gt;  P \limp  Q \;\;\defi\;\;  \lnot\, Q \limp  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IMP_IMP}}||&amp;lt;math&amp;gt;  P \limp  (Q \limp  R) \;\;\defi\;\;  P \land  Q \limp  R &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_AND}}||&amp;lt;math&amp;gt;  P \limp  (Q \land  R) \;\;\defi\;\;  (P \limp  Q) \land  (P \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_IMP_OR}}||&amp;lt;math&amp;gt;  (P \lor  Q) \limp  R \;\;\defi\;\;  (P \limp  R) \land  (Q \limp  R) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_EQV}}||&amp;lt;math&amp;gt;  P \leqv  Q \;\;\defi\;\;  (P \limp  Q) \land  (Q \limp  P) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_AND}}||&amp;lt;math&amp;gt;  \lnot\,(P \land  Q) \;\;\defi\;\;  \lnot\, P \lor  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_NOT_OR}}||&amp;lt;math&amp;gt;  \lnot\,(P \lor  Q) \;\;\defi\;\;  \lnot\, P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_IMP}}||&amp;lt;math&amp;gt;  \lnot\,(P \limp  Q) \;\;\defi\;\;  P \land  \lnot\, Q &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_FORALL}}||&amp;lt;math&amp;gt;  \lnot\, \forall x \qdot  P \;\;\defi\;\;  \exists x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_NOT_EXISTS}}||&amp;lt;math&amp;gt;  \lnot\, \exists x \qdot  P \;\;\defi\;\;  \forall x \qdot  \lnot\, P &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_MAPSTO}}||&amp;lt;math&amp;gt;  E \mapsto  F \in  S \cprod  T \;\;\defi\;\;  E \in  S \land  F \in  T &amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW}}||&amp;lt;math&amp;gt;  E \in  \pow (S) \;\;\defi\;\;  E \subseteq  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_POW1}}||&amp;lt;math&amp;gt;  E \in  \pown (S) \;\;\defi\;\; E \in  \pow (S) \land S \neq \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_SUBSETEQ}}||&amp;lt;math&amp;gt; S \subseteq T  \;\;\defi\;\;  \forall x \qdot  x \in  S \limp  x \in  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is not free in &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BUNION}}||&amp;lt;math&amp;gt;  E \in  S \bunion  T \;\;\defi\;\;  E \in  S \lor  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_BINTER}}||&amp;lt;math&amp;gt;  E \in  S \binter  T \;\;\defi\;\;  E \in  S \land  E \in  T &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETMINUS}}||&amp;lt;math&amp;gt;  E \in  S \setminus T \;\;\defi\;\;  E \in  S \land  \lnot\,(E \in  T) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_SETENUM}}||&amp;lt;math&amp;gt;  E \in  \{ A, \ldots , B\}  \;\;\defi\;\;  E = A \lor  \ldots  \lor  E = B &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KUNION}}||&amp;lt;math&amp;gt;  E \in  \union (S) \;\;\defi\;\;  \exists s \qdot  s \in  S \land  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QUNION}}||&amp;lt;math&amp;gt;  E \in  (\Union x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \exists s \qdot P(s) \land E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_KINTER}}||&amp;lt;math&amp;gt;  E \in  \inter (S) \;\;\defi\;\;  \forall s \qdot  s \in  S \limp  E \in  s &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_QINTER}}||&amp;lt;math&amp;gt;  E \in  (\Inter x \qdot P(x) \mid T(x)) \;\;\defi\;\;  \forall s \qdot P(s) \limp E \in T(s) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_IN_UPTO}}||&amp;lt;math&amp;gt;  E \in  a \upto b \;\;\defi\;\; a \leq E \land E \leq b  &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BUNION_BINTER}}||&amp;lt;math&amp;gt;  S \bunion  (T \binter  U) \;\;\defi\;\;  (S \bunion  T) \binter  (S \bunion  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTRI_BINTER_BUNION}}||&amp;lt;math&amp;gt;  S \binter  (T \bunion  U) \;\;\defi\;\;  (S \binter  T) \bunion  (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_BINTER_SETMINUS}}||&amp;lt;math&amp;gt;  S \binter  (T \setminus U) \;\;\defi\;\;  (S \binter  T) \setminus (S \binter  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  S \setminus (T \bunion  U) \;\;\defi\;\;  S \setminus T \setminus U &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BINTER}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \binter  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_BUNION}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \bunion  T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \binter  (\mathit{Ty} \setminus T) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_TYPE_SETMINUS_SETMINUS}}||&amp;lt;math&amp;gt;  \mathit{Ty} \setminus (S \setminus T) \;\;\defi\;\;  (\mathit{Ty} \setminus S) \bunion  T &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\mathit{Ty}&amp;lt;/math&amp;gt; is a type expression ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BINTER}}||&amp;lt;math&amp;gt;  S \cprod  (T \binter  U) \;\;\defi\;\;  (S \cprod  T) \binter  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_BUNION}}||&amp;lt;math&amp;gt;  S \cprod  (T \bunion  U) \;\;\defi\;\;  (S \cprod  T) \bunion  (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|||{{Rulename|DISTRI_CPROD_SETMINUS}}||&amp;lt;math&amp;gt;  S \cprod  (T \setminus U) \;\;\defi\;\;  (S \cprod  T) \setminus (S \cprod  U) &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ}}||&amp;lt;math&amp;gt;  S \subseteq  T \;\;\defi\;\;  (\mathit{Ty} \setminus T) \subseteq  (\mathit{Ty} \setminus S) &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL}}||&amp;lt;math&amp;gt;  S = T \;\;\defi\;\;  S \subseteq  T \land  T \subseteq  S &amp;lt;/math&amp;gt;|| where &amp;lt;math&amp;gt;\pow (\mathit{Ty})&amp;lt;/math&amp;gt; is the type of &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_L}}||&amp;lt;math&amp;gt;  A \setminus B \subseteq  S \;\;\defi\;\;  A \subseteq  B \bunion  S &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_SUBSETEQ_SETMINUS_R}}||&amp;lt;math&amp;gt;  S \subseteq  A \setminus B \;\;\defi\;\;  S \subseteq  A \land  S \binter  B = \emptyset &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DEF_PARTITION}}||&amp;lt;math&amp;gt;  \operatorname{partition} (s, s_1, s_2, \ldots, s_n) \;\;\defi\;\; &lt;br /&gt;
 		  	\begin{array}{ll}&lt;br /&gt;
		  		&amp;amp; s = s_1\bunion s_2\bunion\cdots\bunion s_n\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_2 = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_1\binter s_n = \emptyset\\&lt;br /&gt;
				\vdots\\&lt;br /&gt;
				\land&amp;amp; s_{n-1}\binter s_n = \emptyset&lt;br /&gt;
			\end{array}&amp;lt;/math&amp;gt;||  ||  AM&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_EMPTY_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S)  \;\;\defi\;\;  S = \emptyset &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_SINGLE_PARTITION}}||&amp;lt;math&amp;gt;\operatorname{partition}(S, T)  \;\;\defi\;\;  S = T &amp;lt;/math&amp;gt;||  ||  A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14498</id>
		<title>Inference Rules</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Inference_Rules&amp;diff=14498"/>
		<updated>2022-10-17T09:20:11Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add rules for finiteness of union&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; &amp;lt;font color=red&amp;gt;CAUTION! Any modification to this page shall be announced on the [[#Mailing_lists |User]] mailing list!&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; in the first column are implemented in the latest version of Rodin.&lt;br /&gt;
Rules without a &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; are planned to be implemented in future versions.&lt;br /&gt;
Other conventions used in these tables are described in [[The_Proving_Perspective_%28Rodin_User_Manual%29#Inference_Rules]].&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Rules that are marked with a &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt; in the first column are currently broken in Rodin 1.1 (see [http://sourceforge.net/tracker/?func=detail&amp;amp;aid=2895507&amp;amp;group_id=108850&amp;amp;atid=651669 bug 2895507]).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{P} \;\;\vdash \;\; \textbf{P}^{\dagger}} &amp;lt;/math&amp;gt;|| see below for &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HYP_OR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\textbf{Q} \;\;\vdash \;\; \textbf{P} \lor \ldots \lor  \textbf{Q}^{\dagger} \lor \ldots \lor \textbf{R}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{Q}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CNTR}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\textbf{P},\;\textbf{nP}^{\dagger} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FALSE_HYP}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\bfalse \;\;\vdash \;\; \textbf{P}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|TRUE_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H} \;\;\vdash \;\; \btrue}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_GOAL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in E\;\mathit{op}\;F \;\;\vdash\;\; f\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types and &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FUN_IMAGE_GOAL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2,\; f(E)\in S_2\;\;\vdash\;\; \mathbf{P}(f(E))}{\textbf{H},\; f\in S_1\;\mathit{op}\;S_2\;\;\vdash\;\; \mathbf{P}(f(E))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FUN_GOAL_REC}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S_1\;\mathit{op_1}\;(S_2\;\mathit{op_2}\;(\ldots(S_n\;\mathit{op_n}(U\;\mathit{opf}\;V\;))\ldots)) \;\vdash\;\; f(E_1)(E_2)...(E_n)\in T_1\pfun T_2}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;T_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T_2&amp;lt;/math&amp;gt; denote types, &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) and &amp;lt;math&amp;gt;\mathit{opf}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt;. || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DBL_HYP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H},\;\textbf{P},\;\textbf{P}  \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P},\textbf{Q} \; \; \vdash \; \;  \textbf{R}}{\textbf{H},\; \textbf{P} \land \textbf{Q} \; \; \vdash \; \;  &lt;br /&gt;
\textbf{R}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \;  \textbf{P} \qquad \textbf{H} \; \; \vdash \; \; \textbf{Q}}{\textbf{H} \; \; \vdash \; \;  \textbf{P} \; \land \; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|IMP_L1}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T}}{\textbf{H},\; \textbf{Q},\; \textbf{P} \land \ldots \land \textbf{Q} \land \ldots \land \textbf{R} \limp \textbf{S} \;\;\vdash \;\; \textbf{T} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \textbf{P} \;\;\vdash \;\; \textbf{Q}}{\textbf{H} \;\;\vdash \;\; \textbf{P} \limp \textbf{Q}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_AND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\textbf{P} \limp \textbf{Q},  \textbf{P} \limp \textbf{R}\;\;\vdash \;\; \textbf{S}}{\textbf{H},\;\textbf{P} \limp  \textbf{Q} \land \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_OR_L}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P} \limp \textbf{R},  \textbf{Q} \limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P} \lor  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|AUTO_MH}}|| &amp;lt;math&amp;gt;\frac{&lt;br /&gt;
\textbf{H},\textbf{P},\;\textbf{Q}\limp \textbf{R}\;\;\vdash \;\; \textbf{S} }{\textbf{H},\;\textbf{P},\; \textbf{P} \land  \textbf{Q} \limp \textbf{R}  \;\;\vdash \;\; \textbf{S}}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (E=b)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (E=b) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|NEG_IN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; E \in \{ a,\ldots , c\},\; \neg\, (b=E)  \; \; \vdash \; \; \textbf{P} }{\textbf{H},\; E \in \{ a,\ldots , b, \ldots , c\} , \neg \, (b=E) \; \; \vdash \; \;  \textbf{P} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|XST_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;  \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}{&lt;br /&gt;
\textbf{H},\;  \exists \, \textbf{x}\, \qdot\, \textbf{P(x)} \; \; \vdash \; \;  \textbf{Q}&lt;br /&gt;
}&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ALL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}\; \; \vdash \; \;  \textbf{P(x)} }{ \textbf{H} \; \; \vdash \; \;  \forall \textbf{x}\, \qdot\, \textbf{P(x)} }&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; x=E \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQL_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(E)} \; \; \vdash \; \; \textbf{P(E)} }{\textbf{H(x)},\; E=x \; \; \vdash \; \;  \textbf{P(x)} }&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is a variable which is not free in &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SUBSET_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{V})}&lt;br /&gt;
{\textbf{H},\;\textbf{T} \subseteq \textbf{U} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U} \binter \dots \binter \textbf{V})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{U}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|IN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{U})}&lt;br /&gt;
{\textbf{H},\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|NOTIN_INTER}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\emptyset)}&lt;br /&gt;
{\textbf{H},\;\lnot\;\textbf{E} \in \textbf{T} \;\;\vdash \;\; &lt;br /&gt;
\textbf{G}(\textbf{S} \binter \dots \binter \{\textbf{E}\} \binter \dots \binter \textbf{T} \binter \dots \binter \textbf{U})}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{E}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\mathbf{T}&amp;lt;/math&amp;gt; are not bound by &amp;lt;math&amp;gt;\mathbf{G}&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_L_UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\;\finite(S) \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || The goal is discharged || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \neg\,\textbf{P}}{\textbf{H},\;\textbf{P} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CONTRADICT_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\;\neg\,\textbf{Q} \;\;\vdash \;\; \bfalse}{\textbf{H} \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad\ldots\qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \lor \ldots \lor \textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IMP_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}, \; \lnot\textbf{P} \; \; \vdash \; \;  \textbf{R} \qquad \textbf{H}, \; \textbf{Q} \; \; \vdash \; \;  \textbf{R} }{\textbf{H},\; \textbf{P} \limp\textbf{Q} \; \; \vdash \; \;  \textbf{R} }&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|MH}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\textbf{P} \qquad \textbf{H},\; \textbf{Q} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|HM}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;\neg\,\textbf{Q} \qquad \textbf{H},\; \neg\,\textbf{P} \;\;\vdash \;\; \textbf{R} }{\textbf{H},\;\textbf{P} \limp \textbf{Q} \;\;\vdash \;\; \textbf{R}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|EQV_LR}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(Q)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(Q)}}{\textbf{H(P)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(P)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|EQV_RL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H(P)},\; \textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash\;\; \textbf{G(P)}}{\textbf{H(Q)},\;\textbf{P} \leqv \textbf{Q} &lt;br /&gt;
\;\;\vdash \;\; \textbf{G(Q)}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E  &lt;br /&gt;
,\;\textbf{P}(F)\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,(G=E)  &lt;br /&gt;
,\;\textbf{P}((\{E\}) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl\{E &lt;br /&gt;
\mapsto F\})(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_SETENUM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G=E \;\;\vdash\;\;\textbf{Q}(F) &lt;br /&gt;
\qquad \textbf{H},\; \neg\,(G=E)  \;\;\vdash\;\;\textbf{Q}((\{E\}) \domsub f)(G))}{\textbf{H} &lt;br /&gt;
\;\;\vdash \;\; \textbf{Q}((f\ovl\{E \mapsto F\})(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g)  ,\;\textbf{P}(g(G))\;\;\vdash\;\;\textbf{Q} \qquad \textbf{H},\; \neg\,G \in \dom(g)  ,\;\textbf{P}((\dom(g) \domsub f)(G))\;\;\vdash\;\;\textbf{Q}}{\textbf{H},\;\textbf{P}((f\ovl g)(G)) \;\;\vdash \;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OV_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\; G \in \dom(g) \;\;\vdash\;\;\textbf{Q}(g(G)) \qquad \textbf{H},\; \neg\, G \in \dom(g) \;\;\vdash\;\;\textbf{Q}((\dom(g) \domsub f)(G))}{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f\ovl g)(G))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \binter f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \binter T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_BINTER_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \binter f[T]) \;\;\vdash\;\;\textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \binter T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(f[S] \setminus f[T]) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}(f[S \setminus T])}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DIS_SETMINUS_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; f^{-1} \in A \pfun B    \qquad\textbf{H},\;\textbf{Q}(f[S] \setminus f[T]) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[S \setminus T]) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; denote types. || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H} \; \; \vdash \; \; \textbf{Q}(\{ f(E)\} ) }{\textbf{H} \; \; \vdash \; \;  \textbf{Q}(f[\{ E\} ])} &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_REL_IMAGE_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \; \; \vdash \; \; {WD}(\textbf{Q}(\{ f(E)\} )) \qquad\textbf{H},\; \textbf{Q}(\{ f(E)\}) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}(f[\{ E\} ]) \;\;\vdash\;\; \textbf{G} } &amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H} \;\;\vdash\;\;\textbf{Q}(g(f(x))) }{\textbf{H} \;\;\vdash \;\; \textbf{Q}((f \fcomp g)(x))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_FCOMP_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(\textbf{Q}(g(f(x))))    \qquad\textbf{H},\; \textbf{Q}(g(f(x))) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\; \textbf{Q}((f \fcomp g)(x)) \;\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SUBSETEQ_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(T) \qquad\textbf{H} \;\;\vdash \;\; S \subseteq T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(S)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_BINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\lor\;\ldots \;\lor\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\binter\;\ldots \;\binter\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_KINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, s \in S \land \finite\,(s)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\inter(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_QINTER_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\exists s\, \qdot\, P \land \finite\,(E)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Inter s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_BUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S) \;\land\;\ldots \;\land\; \finite\,(T)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(S \;\bunion\;\ldots \;\bunion\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_KUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\forall s\, \qdot\, s \in S \limp \finite\,(s)}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\union(S))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;s&amp;lt;/math&amp;gt; is fresh || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_QUNION_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite(\{s\qdot P\mid E\})\;\land\;(\forall s\, \qdot\, P \limp \finite\,(E))}{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\; \finite\,(\Union s\,\qdot\,P\,\mid\,E)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_SETMINUS_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash &lt;br /&gt;
\;\;\finite\,(S)}{\textbf{H} \;\;\vdash \;\; \finite\,(S \;\setminus\; T)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_REL}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; r\in S\;\mathit{op}\;T,\; \finite\,(S),\; \finite\,(T) \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; denotes a set of relations (any arrow) || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\rel T) \qquad\textbf{H} \;\;\vdash \;\; r \;\in\; S \rel T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) \qquad \textbf{H} \;\;\vdash \;\; \finite\,(T)}{\textbf{H} \;\;\vdash \;\; \finite\,(r)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S \rel T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(r[s])}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_REL_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite\,(r) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(r))}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_DOM}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(S) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|FIN_FUN_RAN}}|| &amp;lt;math&amp;gt;\frac{}{\textbf{H},\; f\in S\;\mathit{op}\;T,\; \finite\,(T) \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN1_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN2_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(f)}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_IMG_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(s) }{\textbf{H} \;\;\vdash \;\; \finite\,(f[s])}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_RAN_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\ran(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_FUN_DOM_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\;{WD}(S\pfun T) \qquad\textbf{H} \;\;\vdash \;\; f^{-1} \;\in\; S \pfun T \qquad \textbf{H} \;\;\vdash \;\; \finite\,(S) }{\textbf{H} \;\;\vdash \;\; \finite\,(\dom(f))}&amp;lt;/math&amp;gt; || the user has to write the set corresponding to &amp;lt;math&amp;gt;S  \pfun T&amp;lt;/math&amp;gt; in the editing area of the Proof Control Window || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|LOWER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \geq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_L}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \geq x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|UPPER_BOUND_R}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \finite(S)  }{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; must not contain any bound variable || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_LT_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; n \leq x)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \intg \setminus \natn }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FIN_GE_0}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; \exists n\,\qdot\, (\forall x \,\qdot\, x \in S \;\limp\; x \leq n)  \qquad \textbf{H} \;\;\vdash \;\; S \subseteq \nat }{\textbf{H} \;\;\vdash \;\; \finite(S)}&amp;lt;/math&amp;gt; ||  || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|||{{Rulename|CARD_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b \;\;\vdash \;\; \textbf{Q}(b-a+1) \qquad \textbf{H},\, b &amp;lt; a \;\;\vdash \;\; \textbf{Q}(0) }{\textbf{H} \;\;\vdash\;\; \textbf{Q}(\card\,(a\upto b))}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{Q}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|CARD_EMPTY_INTERV}}|| &amp;lt;math&amp;gt;\frac{\textbf{H},\, a \leq b,\,\textbf{P}(b-a+1)  \;\;\vdash \;\; \textbf{Q} \qquad \textbf{H},\, b &amp;lt; a ,\, \textbf{P}(0)\;\;\vdash \;\; \textbf{Q} }{\textbf{H},\,\textbf{P}(\card\,(a\upto b))  \;\;\vdash\;\; \textbf{Q}}&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathbf{P}&amp;lt;/math&amp;gt; is WD strict || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subseteq T}{\textbf{H} \;\;\vdash\;\; \card(S) \leq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GE_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subseteq S}{\textbf{H} \;\;\vdash\;\; \card(S) \geq \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_LT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S \subset T}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;lt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_GT_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; T \subset S}{\textbf{H} \;\;\vdash\;\; \card(S) &amp;gt; \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_EQUAL_CARD}}|| &amp;lt;math&amp;gt;\frac{\textbf{H}  \;\;\vdash\;\; S = T}{\textbf{H} \;\;\vdash\;\; \card(S) = \card(T)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; bear the same type || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card(S) - \card(S\binter T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \setminus  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_SETMINUS_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) - \card(S\binter T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \setminus  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(S) \qquad \textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \finite(T) \qquad \textbf{H},\, \textbf{P}(\card(S) * \card(T)) \;\;\vdash\;\; \textbf{G}}{\textbf{H},\, \textbf{P}(\card (S \cprod  T)) \;\;\vdash\;\; \textbf{G}} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
{{RRRow}}| ||{{Rulename|SIMP_CARD_CPROD_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash\;\; \finite(S) \qquad \textbf{H} \;\;\vdash\;\; \finite(T) \qquad \textbf{H} \;\;\vdash\;\; \textbf{P}(\card(S) * \card(T))}{\textbf{H} \;\;\vdash\;\; \textbf{P}(\card (S \cprod  T))} &amp;lt;/math&amp;gt;||  ||  M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} , [x \bcmeq E]\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MP}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\textbf{P} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\textbf{Q} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Ponens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|FORALL_INST_MT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, {WD}(E) \;\;\vdash \;\; [x \bcmeq E]\lnot\textbf{Q} \qquad  \textbf{H}, {WD}(E), [x \bcmeq E]\lnot\textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H}, \forall x \qdot \textbf{P} \limp \textbf{Q}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; and a Modus Tollens is applied|| M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|CUT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}) \;\;\vdash \;\; \textbf{\textbf{P}} \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || hypothesis &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; is added || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EXISTS_INST}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(E)}{\textbf{H} \;\;\vdash\;\; \exists x \qdot \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is instantiated with &amp;lt;math&amp;gt;E&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DISTINCT_CASE}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(\textbf{P}) \qquad  \textbf{H}, {WD}(\textbf{P}), \textbf{P} \;\;\vdash \;\; \textbf{\textbf{G}} \qquad  \textbf{H}, {WD}(\textbf{P}), \lnot \textbf{P} \;\;\vdash \;\; \textbf{G}}{\textbf{H} \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt; || case distinction on predicate &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_L}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H}, \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} \;\;\vdash \;\; \textbf{G}}{ \textbf{H}, \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R}  \;\;\vdash\;\; \textbf{G}}&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|ONE_POINT_R}}||&amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; {WD}(E) \qquad  \textbf{H} \;\;\vdash \;\; \forall x, \ldots, \ldots,z \qdot [y \bcmeq E]\textbf{P} \land \ldots \land \ldots \land [y \bcmeq E]\textbf{Q} \limp [y \bcmeq E]\textbf{R} }{ \textbf{H}  \;\;\vdash\;\; \forall x, \ldots, y, \ldots, z \qdot \textbf{P} \land \ldots \land y = E \land \ldots \land \textbf{Q} \limp \textbf{R} }&amp;lt;/math&amp;gt;|| The rule can be applied with &amp;lt;math&amp;gt;\forall&amp;lt;/math&amp;gt; as well as with &amp;lt;math&amp;gt;\exists&amp;lt;/math&amp;gt; ||  A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_REL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\rel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TREL}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\trel B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;,&amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_PFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\pfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SIM_OV_TFUN}}|| &amp;lt;math&amp;gt; \frac{\textbf{H}\vdash x\in A\qquad \textbf{H}\vdash y\in B}{\textbf{H}, f\in A\;op\; B\vdash f\ovl\left\{x\mapsto y\right\}\in A\tfun B} &amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H}, x=0 \;\;\vdash \;\; \textbf{P}(x) \qquad \textbf{H}, n\in\nat, \textbf{P}(n) \;\;\vdash \;\; \textbf{P}(n+1)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}| ||{{Rulename|INDUC_NAT_COMPL}}|| &amp;lt;math&amp;gt;\frac{\textbf{H} \;\;\vdash \;\; x\in\nat \qquad \textbf{H} \;\;\vdash \;\; \textbf{P}(0) \qquad \textbf{H}, n\in\nat, \forall k\qdot 0\leq k\land k &amp;lt; n \limp \textbf{P}(k) \;\;\vdash \;\; \textbf{P}(n)}{\textbf{H} \;\;\vdash\;\; \textbf{P}(x)}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; of type &amp;lt;math&amp;gt;\intg&amp;lt;/math&amp;gt; appears free in  &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt;; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; is introduced as a fresh identifier || M&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Those following rules have been implemented in the reasoner GeneralizedModusPonens.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{P,\varphi(\btrue) \vdash G}{P,\varphi(P^{\dagger}) \vdash G} &amp;lt;/math&amp;gt; ||  see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_HYP}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger},\varphi(\bfalse) \vdash G}{nP^{\dagger},\varphi(P) \vdash G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{P \vdash \varphi(\btrue)}{P \vdash \varphi(P^{\dagger})} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_HYP_GOAL}}|| &amp;lt;math&amp;gt; \frac{nP^{\dagger} \vdash \varphi(\bfalse)}{nP^{\dagger} \vdash \varphi(P)} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; P^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash \lnot nG^{\dagger}}{H,\varphi(G)\vdash \lnot nG^{\dagger}} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash \lnot G}{H,\varphi(G^{\dagger})\vdash \lnot G} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\bfalse)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n}{H,\varphi(G_i)\vdash G_1\lor\cdots\lor \lnot nG_i^{\dagger}\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; nG_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|GENMP_OR_NOT_GOAL_HYP}}|| &amp;lt;math&amp;gt; \frac{H,\varphi(\btrue)\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n}{H,\varphi(G_i^{\dagger})\vdash G_1\lor\cdots\lor\ \lnot G_i\lor\cdots\lor G_n} &amp;lt;/math&amp;gt; || see below for &amp;lt;math&amp;gt; G_i^{\dagger} &amp;lt;/math&amp;gt; || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thos following rules have been implemented in the MembershipGoal reasoner.&lt;br /&gt;
{{RRHeader}}&lt;br /&gt;
&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SUBSET_SUBSETEQ}}|| &amp;lt;math&amp;gt; A\subset B\vdash A\subseteq B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DOM_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \dom(A)\subseteq\dom(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RAN_SUBSET}}|| &amp;lt;math&amp;gt; A\subseteq B\vdash \ran(A)\subseteq\ran(B)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_LR}}|| &amp;lt;math&amp;gt; A=B\vdash A\subseteq B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|EQUAL_SUBSETEQ_RL}}|| &amp;lt;math&amp;gt; A=B\vdash B\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_CPROD}}|| &amp;lt;math&amp;gt; x\in\dom(A\cprod B)\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_CPROD}}|| &amp;lt;math&amp;gt; y\in\ran(A\cprod B)\vdash y\in B&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_DOM_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash x\in\dom(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|IN_RAN_REL}}|| &amp;lt;math&amp;gt; x\mapsto y\in f\vdash y\in\ran(f)&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|SETENUM_SUBSET}}|| &amp;lt;math&amp;gt; \left\{a,\cdots,x,\cdots, z\right\}\subseteq A\vdash x\in A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|OVR_RIGHT_SUBSET}}|| &amp;lt;math&amp;gt; f\ovl\cdots\ovl g\ovl\cdots\ovl h\subseteq A\vdash g\ovl\cdots\ovl h\subseteq A&amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|RELSET_SUBSET_CPROD}}|| &amp;lt;math&amp;gt; f\in A\;op\;B\vdash f\subseteq A\cprod B&amp;lt;/math&amp;gt; || where &amp;lt;math&amp;gt;\mathit{op}&amp;lt;/math&amp;gt; is one of &amp;lt;math&amp;gt;\rel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\trel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\srel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\strel&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tfun&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\pinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tinj&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\psur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tsur&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\tbij&amp;lt;/math&amp;gt; || A&lt;br /&gt;
{{RRRow}}|*||{{Rulename|DERIV_IN_SUBSET}}|| &amp;lt;math&amp;gt; x\in A,\;\; A\subseteq B\vdash x\in B &amp;lt;/math&amp;gt; ||  || A&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The conventions used in this table are described in [[Variations in HYP, CNTR and GenMP]].&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;RRHeader&amp;quot; text-align=&amp;quot;left&amp;quot; border=&amp;quot;1&amp;quot;  cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;8&amp;quot; rules=&amp;quot;all&amp;quot; frame=&amp;quot;box&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border-style:solid; border-color:#AAAAAA;  display:table; {{{style|}}}&amp;quot;&lt;br /&gt;
! &amp;lt;math&amp;gt;\textbf{P}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{P}^{\dagger}&amp;lt;/math&amp;gt; !! &amp;lt;math&amp;gt;\textbf{nP}^{\dagger}&amp;lt;/math&amp;gt; !! Side Condition&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b , \ \ b \ge a  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b , \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; || where a and b are integers&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;lt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a &amp;gt; b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; a = b, \ \ b = a  &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \le b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \le b, \ \ b \ge a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;gt; b, \ \ b &amp;lt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; a \ge b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a \ge b, \ \ b \le a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a &amp;lt; b, \ \ b &amp;gt; a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot a = b &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot a = b, \ \ \lnot b = a &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; a = b, \ \ b = a &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A \subseteq B, \ \ B \subseteq A  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \ \ A \subset B, \ \ B \subset A &amp;lt;/math&amp;gt; || where A and B are sets&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \lnot B \subset A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, B \subset A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B, \ \ A \subseteq B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot B \subset A, \ \ \lnot B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B, \ \ \lnot A \subseteq B  &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; B \subset A, \ \ B \subseteq A &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt;||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A = B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subseteq B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subseteq B, \ \ \lnot A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; \lnot A = B, \ \ \lnot B = A &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subseteq B, \ \ A \subset B &amp;lt;/math&amp;gt; &amp;lt;br /&amp;gt; &amp;lt;math&amp;gt; A = B, \ \ B = A &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot A \subset B &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; A \subset B &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot f = e &amp;lt;/math&amp;gt; || where e and f are scalars&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot e = f &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot e = f, \ \ \lnot  f = e &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; e = f, \ \ f = e &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
{{RRRow}}| &amp;lt;math&amp;gt; \lnot \textbf{P} &amp;lt;/math&amp;gt; || || &amp;lt;math&amp;gt; \textbf{P} &amp;lt;/math&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also [[Extension Proof Rules#Inference Rules]].&lt;br /&gt;
&lt;br /&gt;
[[Category:User documentation|The Proving Perspective]]&lt;br /&gt;
[[Category:Rodin Platform|The Proving Perspective]]&lt;br /&gt;
[[Category:User manual|The Proving Perspective]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14486</id>
		<title>Template:Dev News</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14486"/>
		<updated>2022-04-01T13:54:25Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Theory plug-in release 4.0.4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[http://wiki.event-b.org/index.php?title=Template:Dev_News/Archives&amp;amp;action=edit Edit Archives]&lt;br /&gt;
== Displayed as follow on the Main Page ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;width:50%;border:1px solid #AAAAAA;background:#FFFFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;!--- News to add here below : ==== ---&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;p style=&amp;quot;font-size:35px&amp;quot;&amp;gt;Rodin 3.6 is out&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
||&amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[[Rodin Platform 3.6 Release Notes | +Learn more... ]]&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Download now]&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* 01/04/22 : [[Theory_Plug-in]] Theory 4.0.4 is now available&lt;br /&gt;
* 14/01/22 : [[SMT_Solvers_Plug-in]] SMT Solvers 1.5 is now available&lt;br /&gt;
* 29/09/21 : [[Theory_Plug-in]] Theory 4.0.3 is now available&lt;br /&gt;
* 04/06/21 : [[Theory_Plug-in]] Theory 4.0.2 is now available&lt;br /&gt;
* 17/05/21 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Release 3.6] of Rodin is now available [[Rodin Platform 3.6 Release Notes | +Learn more]]&lt;br /&gt;
* 22/12/20 : [[Theory_Plug-in]] Theory 4.0.1 is now available&lt;br /&gt;
* 11/09/20 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/ Release 3.5] of Rodin is now available [[Rodin Platform 3.5 Release Notes | +Learn more]]&lt;br /&gt;
* 07/03/18 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.4/ Release 3.4] of Rodin is now available [[Rodin Platform 3.4 Release Notes | +Learn more]]&lt;br /&gt;
* 13/04/17 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.3/ Release 3.3] of Rodin is now available [[Rodin Platform 3.3 Release Notes | +Learn more]]&lt;br /&gt;
* 22/06/15 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.2/ Release 3.2] of Rodin is now available [[Rodin Platform 3.2 Release Notes | +Learn more]]&lt;br /&gt;
* 17/12/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.1/ Release 3.1] of Rodin is now available [[Rodin Platform 3.1 Release Notes | +Learn more]]&lt;br /&gt;
* 25/03/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.0/ Release 3.0] of Rodin is now available [[Rodin_Platform_3.0_Release_Notes | +Learn more]]&lt;br /&gt;
* 18/10/13 : [[SMT_Solvers_Plug-in]] SMT 1.1 is now available&lt;br /&gt;
* 20/06/13 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.8/ Release 2.8] of Rodin is now available [[Rodin_Platform_2.8_Release_Notes | +Learn more]]&lt;br /&gt;
* 03/06/13 : [[SMT_Solvers_Plug-in]] SMT 1.0 is now available&lt;br /&gt;
* 06/11/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.7/ Release 2.7] of Rodin is now available&lt;br /&gt;
* 03/08/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.6/ Release 2.6] of Rodin is now available&lt;br /&gt;
* 02/05/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.5/ Release 2.5] of Rodin is now available&lt;br /&gt;
* 03/02/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.4/ Release 2.4] of Rodin is now available&lt;br /&gt;
* 01/12/11 : [[Rodin_Editor | Rodin Editor]] plug-in v0.6 released for Rodin 2.3&lt;br /&gt;
* 04/10/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.3/ Release 2.3] of Rodin is now available&lt;br /&gt;
* 01/08/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2.2/ Release 2.2.2] of Rodin is now available&lt;br /&gt;
* 13/07/11 : [[Rodin_Editor | Rodin Editor]] plug-in released for Rodin 2.2.x&lt;br /&gt;
* 01/06/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2/ Release 2.2] of Rodin is now available&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 08/02/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.1/ Release 2.1] of Rodin is now available&lt;br /&gt;
* 16/11/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0.1/ Release 2.0.1] of Rodin is now available&lt;br /&gt;
* 13/10/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0/ Release 2.0] of Rodin is now available&lt;br /&gt;
* 08/06/10 : UML-B Statemachine Animation Version 1.0.0 released (for Rodin 1.3)&lt;br /&gt;
* 08/06/10 : UML-B Version 1.1.0 released (for Rodin 1.3)&lt;br /&gt;
* 03/02/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.2/ Release 1.2.0] of Rodin is now available&lt;br /&gt;
* 29/11/09 : B2Latex 0.5.1 is now available for Rodin 0.9.2 or later&lt;br /&gt;
* 20/10/09 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.1/ Release 1.1.0] of Rodin is now available&lt;br /&gt;
* 25/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/248437 Implemented new Prover Rules]&lt;br /&gt;
* 20/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/24160f New extensible plug-ins] org.rodinp.keyboard and org.eventb.keyboard&lt;br /&gt;
* 31/07/09 : UML-B plug-in released for Rodin 1.0.0&lt;br /&gt;
* 27/07/09 : Fixed requirement plug-in for rodin 1.0.0&lt;br /&gt;
* 01/07/09 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.0/ Release 1.0.0] of Rodin is now available ([http://sourceforge.net/project/shownotes.php?release_id=693928 changelog]--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Main page templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Rodin_Platform_3.5.0_External_Plug-ins&amp;diff=14485</id>
		<title>Rodin Platform 3.5.0 External Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Rodin_Platform_3.5.0_External_Plug-ins&amp;diff=14485"/>
		<updated>2022-04-01T13:52:58Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Theory plug-in release 4.0.4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
  Please use one of the following templates for the Status column&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; not available &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Rodin Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://rodin-b-sharp.sourceforge.net/updates&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || [[SMT_Plug-in | SMT Solvers ]] || 1.5.0 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt; || || 14th January 2022|| [mailto:lvoisin@users.sourceforge.net Laurent Voisin]  || Automatic prover using SMT solvers&lt;br /&gt;
|-&lt;br /&gt;
| || Relevance Filter || 1.1.1 ||  &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;  || ?.x.x || || || Improves chance of automatic proof by selecting relevant hypotheses&lt;br /&gt;
|-&lt;br /&gt;
| || [[B2Latex | B2Latex export]] || 0.7.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 2.5.x || 27th May 2015 || [mailto:lvoisin@users.sourceforge.net Laurent Voisin] || generates a Latex documentation of the Event-B&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Rose.gif|30px]]||[[Rose_(Structured)_Editor|Rose editor]] || 1.7.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 4 Nov 2018 || [mailto:umlb@soton.ac.uk umlb] || Tree-structured editor for Event-B EMF that handles extensions without modification. Mainly useful for Plug-in developers.&lt;br /&gt;
|-&lt;br /&gt;
| CODA || CODA Component Diagrams || 6.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || ? || [mailto:umlb@soton.ac.uk umlb] || Component diagrams with timed channels. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| CODA || CODA Simulator for Component Diagrams || 3.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || ? || [mailto:umlb@soton.ac.uk umlb] || Component based simulation. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Project diagram icon s.png|30px]]||[[Project_Diagram|Project Diagram]]|| 1.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 1st Feb. 2015 || [mailto:umlb@soton.ac.uk umlb] || Machine - Context relationship diagram. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Umlb32.gif|30px]] || [[UML-B|UML-B]] || 2.3.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 18th Oct. 2014 || [mailto:umlb@soton.ac.uk umlb] || Original UML-B modelling environment&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Cmp_mch_obj.gif|20px]] ||[[Parallel_Composition_using_Event-B | Shared Event Composition]] || 1.7.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || || 5th July 2017 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.x.x&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:DecompositionPlug-in_logo.png|30px]] || [[Decomposition Plug-in User Guide | Decomposition]] || 1.3.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;|| || 4th July 2017 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.x.x&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Refactoring Framework | Refactory ]]|| 1.3.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt;|| 3.x.x || 6th May 2014 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.0.x.&lt;br /&gt;
|-&lt;br /&gt;
| || [[Theory Plug-in| Theory Plug-in]] || 4.0.4 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available&amp;lt;/span&amp;gt;||  || 1st April 2022|| [mailto:gverdier@users.sourceforge.net Guillaume Verdier] ||&lt;br /&gt;
|-.x&lt;br /&gt;
| || [[Code Generation Activity | Code Generation]] || 0.2.5 ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt;||  || 29th Aug. 2013|| [mailto:umlb@soton.ac.uk umlb] || For Java, Ada, and OpenMP C code&lt;br /&gt;
|-.x&lt;br /&gt;
|-&lt;br /&gt;
| || [[Isabelle for Rodin]] || || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || 2.x.x || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || [[Pattern | Pattern]] || 0.9.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || 3.x.x || 13th March 2015 || [mailto:tshoang@users.sourceforge.net Thai Son Hoang] || &lt;br /&gt;
|-&lt;br /&gt;
| || [[Event-B Qualitative Probability User Guide | Qualitative Probability]] || 0.2.3 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not working&amp;lt;/span&amp;gt; || 3.x.x || 9th October 2015 || [mailto:tshoang@users.sourceforge.net Thai Son Hoang] || Needs updating to be compatible with changes in Rodin 3.5&lt;br /&gt;
|-&lt;br /&gt;
| || [[Generic Instantiation Plug-in User Guide | Generic Instantiation (Soton)]] || 1.0.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || || 05th March 2013 || [mailto:asf08r@ecs.soton.ac.uk Asieh] || &lt;br /&gt;
|-&lt;br /&gt;
| ||[[Records|Records]] || 2.0.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 2.x.x || 16th Oct. 2010 || [mailto:umlb@soton.ac.uk umlb] || no longer supported - use CamilleX instead&lt;br /&gt;
|-	&lt;br /&gt;
| ||[[EMF_Compare_Editor_installation|Teamwork]] || 1.2.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;  || 3.2.x || 5th Sept. 2016 || [mailto:umlb@soton.ac.uk umlb] || No longer supported - use CamilleX instead. Provides a synchronised copy of Machines and Contexts for committing into a repository.  &lt;br /&gt;
|-	&lt;br /&gt;
| [[Image:Umlb32.gif|30px]] ||[[UML-B_-_Statemachine_Animation|UML-B Statemachine Animation]] || 1.3.0 ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 3.x.x || 18th Oct. 2014 || [mailto:umlb@soton.ac.uk umlb] || no longer supported - use new UML-B from Soton update site instead&lt;br /&gt;
|-	&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||iUML-B plugins ||  ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 3.x.x ||  || [mailto:umlb@soton.ac.uk umlb] || New versions are now available on the Soton Update Site. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Atelier B Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://methode-b.com/update_site/atelierb_provers&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || Atelier B provers || 2.3.0 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.3.0 || 2 Dec 2020  || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ProB Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://www.stups.hhu.de/prob_updates_rodin3&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || ProB || 3.0.10 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || The ProB animator and model checker&lt;br /&gt;
|-&lt;br /&gt;
| || ProB (Dis)Prover || 3.0.9 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || The ProB counter-example finder and prover&lt;br /&gt;
|-&lt;br /&gt;
| || ProB Symbolic constants support || 3.0.9 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Southampton Releases Update Site ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Available from http://eventb-soton.github.io/updateSite/releases&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:CamilleX.png|CmX]] || [[CamilleX|CamilleX]] || 2.0.2 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 21 Jan 2021  || [mailto:T.S.Hoang@ecs.soton.ac.uk Thai Son Hoang] || CamilleX provides text editors for Event-B models and support modelling mechanisms such as machine inclusion.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] || [[Event-B_Classdiagrams|UML-B Class Diagrams]] || 3.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 11 Sept 2020  || [mailto:umlb@soton.ac.uk umlb] || UML-B Class diagrams translate into Event-B Machines.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] || [[Event-B_Statemachines|UML-B State-machines]] || 4.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 13 Aug 2020  || [mailto:umlb@soton.ac.uk umlb] || UML-B State-machines translate into Event-B Machines.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||[[Event-B_Statemachines|UML-B State-machine Animation]] || 3.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 13 Aug 2020 || [mailto:umlb@soton.ac.uk umlb] || Animate UML-B State-machines. Compatible with UML-B statemachines  4.x.x and ProB 3.0.x.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||[[Scenario Checker|Scenario Checker]] || 0.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 31 July 2020 || [mailto:umlb@soton.ac.uk umlb] || Validation tool for recording and replaying scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following framework plug-ins are also provided on the Southampton Releases Update Site. These plugins are installed automatically when required and are not usually installed explicitly by users.&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| ||[[EMF_framework_for_Event-B|Event-B EMF framework]] || 6.1.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 4 July 2020 || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Generic_Event-B_EMF_extensions|Event-B EMF extensions]] || 6.1.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 4 July 2020  || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Generic_Event-B_EMF_extensions|UML-B diagrams]] || 8.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.2.x || 13 Aug 2020  || [mailto:umlb@soton.ac.uk umlb] ||  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.&lt;br /&gt;
|-&lt;br /&gt;
|  ||[[ProB Support|ProB Support]] || 0.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 28 July 2020 || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Theory_Release_History&amp;diff=14484</id>
		<title>Theory Release History</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Theory_Release_History&amp;diff=14484"/>
		<updated>2022-04-01T13:50:26Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Theory plug-in release 4.0.4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Theory Plug-in]].&lt;br /&gt;
&lt;br /&gt;
Follow this page for the latest on the Theory plug-in. The user manual is also provided together with the installation details.&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
* &#039;&#039;1st April 2022&#039;&#039;: [[#Version_4.0.4|Version 4.0.4]] is released. It requires Rodin 3.5.&lt;br /&gt;
* &#039;&#039;29th September 2021&#039;&#039;: [[#Version_4.0.3|Version 4.0.3]] is released. It requires Rodin 3.5.&lt;br /&gt;
* &#039;&#039;4th June 2021&#039;&#039;: [[#Version_4.0.2|Version 4.0.2]] is released. It requires Rodin 3.5.&lt;br /&gt;
* &#039;&#039;22th December 2020&#039;&#039;: [[#Version_4.0.1|Version 4.0.1]] is released. It requires Rodin 3.5.&lt;br /&gt;
* &#039;&#039;19th December 2014&#039;&#039;: [[#Version_3.0.0|Version 3.0.o]] is released. It requires Rodin 3.1.&lt;br /&gt;
* &#039;&#039;10th July 2014&#039;&#039;: [[#Version_2.0.2|Version 2.0.2]] is released. It requires Rodin 2.8.&lt;br /&gt;
* &#039;&#039;24th June 2014&#039;&#039;: [[#Version_2.0.1|Version 2.0.1]] is released. It requires Rodin 2.8.&lt;br /&gt;
* &#039;&#039;30th April 2014&#039;&#039;: [[#Version_2.0.0|Version 2.0.0]] is released. It requires Rodin 2.8. This release contains major changes in the features and accessibilities.&lt;br /&gt;
* &#039;&#039;20th April 2012&#039;&#039;: [[#Version_1.3.2|Version 1.3.2]] is released. It requires Rodin 2.4.&lt;br /&gt;
* &#039;&#039;15th August 2011&#039;&#039;: [[#Version_1.2|Version 1.2]] is released. It requires Rodin 2.2.2.&lt;br /&gt;
* &#039;&#039;6th August 2011&#039;&#039;: [[#Version_1.1|Version 1.1]] is released. It requires Rodin 2.2.2.&lt;br /&gt;
* &#039;&#039;8th July 2011&#039;&#039;: [[#Version_1.0|Version 1.0]] is released. It requires Rodin 2.2.&lt;br /&gt;
* &#039;&#039;22nd May 2011&#039;&#039;: [[#Version_0.8|Version 0.8]] released. It is based on Rodin 2.1.1.&lt;br /&gt;
* &#039;&#039;11th April 2011&#039;&#039;: [[#Version_0.7|Version 0.7]] released. It is based on Rodin 2.1.1.&lt;br /&gt;
* &#039;&#039;6th January 2011&#039;&#039;: [[#Version_0.6|Version 0.6]] released. It is based on Rodin 2.0.1.&lt;br /&gt;
* &#039;&#039;28th October 2010&#039;&#039;: [[#Version_0.5|Version 0.5]] released. It is based on Rodin 2.0.&lt;br /&gt;
&lt;br /&gt;
===Releases===&lt;br /&gt;
===== Version 4.0.4 =====&lt;br /&gt;
&#039;&#039;1st April 2022&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.5&lt;br /&gt;
* Bug fixes:&lt;br /&gt;
** Type annotations in theorem instantiations are correctly substituted&lt;br /&gt;
** Defining a commutative predicate operator does not cause an exception anymore&lt;br /&gt;
** The return type of axiomatic operators is correctly checked (beforehand, any syntactically valid type was accepted)&lt;br /&gt;
** A proof obligation is generated for the well-definedness condition of recursive operators&lt;br /&gt;
** Case expressions of recursive operators containing the same variable name twice are rejected (rather than silently failing)&lt;br /&gt;
* Feature requests:&lt;br /&gt;
** Theorems can be filtered by name in the theorem instantiation dialog&lt;br /&gt;
** The theorem instantiation dialog is now initialized with the project and context selected the last time the dialog was used&lt;br /&gt;
** When there is a single element in a combo box of the theorem instantiation dialog, it is selected by default&lt;br /&gt;
&lt;br /&gt;
===== Version 4.0.3 =====&lt;br /&gt;
&#039;&#039;29th September 2021&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.5&lt;br /&gt;
* Bug fixes:&lt;br /&gt;
** Operators that have parameters with the same name but different types are now handled correctly in both the editor and the prover (for rewriting the definition)&lt;br /&gt;
** Theorems instantiated during proof are now correctly typed (in some cases, some type information was missing)&lt;br /&gt;
&lt;br /&gt;
===== Version 4.0.2 =====&lt;br /&gt;
&#039;&#039;4th June 2021&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.5&lt;br /&gt;
* Bug fixes:&lt;br /&gt;
** Datatypes that have several type parameters are now serialized in the right order; it fixes some issues with proofs and proof replay.&lt;br /&gt;
** Manually applied inference and rewrite rules are now replayed correctly (in some cases, their replay was displayed as uncertain).&lt;br /&gt;
&lt;br /&gt;
===== Version 4.0.1 =====&lt;br /&gt;
&#039;&#039;22th December 2020&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.5&lt;br /&gt;
* Bug fixes:&lt;br /&gt;
** The theory plugin now takes into account updates in theories, as well as creating a theory after using it (there was a cache issue).&lt;br /&gt;
** The error messages at launch about rule-based provers failing to find the context of the proof have been removed.&lt;br /&gt;
** The dropdown list in theory imports is now usable (there was an off-by-one issue when selecting an element in the list).&lt;br /&gt;
** Manually applying an inference rule no longer throws a NullPointerException.&lt;br /&gt;
** It is now possible to rename theories.&lt;br /&gt;
** The TheoryPath creation dialog box has been simplified.&lt;br /&gt;
* Optimizations:&lt;br /&gt;
** The proving interface is now much more responsive, even when a theory contains a lot of rewrite rules (we have implemented a cache of the places where a rewrite rule can apply).&lt;br /&gt;
** The theory plugin now generates much simpler WD conditions, especially for the pred, succ, prj1, prj2, and id operators.&lt;br /&gt;
&lt;br /&gt;
===== Version 4.0.0-RC1 =====&lt;br /&gt;
&#039;&#039;10th April 2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.2&lt;br /&gt;
* AST Extensions (4.0.0) Major API change.&lt;br /&gt;
** Compatibility upgrade to Rodin 3.2&lt;br /&gt;
** Support for get operator position for INFIX extended predicate operators.&lt;br /&gt;
** Improve pattern matching for associative operators.&lt;br /&gt;
* Theory plug-in Branding (0.0.1) Initial version&lt;br /&gt;
* Theory Core (4.0.0) Internal implementation changes.&lt;br /&gt;
** Compatibility upgrade to Rodin 3.2&lt;br /&gt;
** Support for INFIX extended predicate operators.&lt;br /&gt;
** Various bugs fixed.&lt;br /&gt;
* Theory help (2.0.0) User documentations.&lt;br /&gt;
* Theory Keyboard (0.0.1) Initial version (A special plug-in for typesetting Theory).&lt;br /&gt;
** Support for typesetting Real arithmetics (plus, unary minus, multiply, divide, less than, less than or equal, greater than, greater than or equal).&lt;br /&gt;
* Theory Rule-based Prover (4.0.0)&lt;br /&gt;
** Reasoners&#039; input does not contain the proof-obligation context.&lt;br /&gt;
** Use the current sequent&#039;s origin to get the proof-obligation context.&lt;br /&gt;
** Bug fixed: translate formula to ensure they have the same formula factory.&lt;br /&gt;
** Added version numbers for reasoners.&lt;br /&gt;
** Automatic rewrite and inference tactics are re-implemented so that each rule application is visible in proof trees.&lt;br /&gt;
* Theory UI (3.0.0)&lt;br /&gt;
&lt;br /&gt;
===== Version 3.0.0 =====&lt;br /&gt;
&#039;&#039;17th December 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 3.1&lt;br /&gt;
* migration changes to Rodin 3.1&lt;br /&gt;
&lt;br /&gt;
===== Version 2.0.2 =====&lt;br /&gt;
&#039;&#039;10th July 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.8&lt;br /&gt;
* bug fixes. &lt;br /&gt;
&lt;br /&gt;
===== Version 2.0.1 =====&lt;br /&gt;
&#039;&#039;24th June 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.8&lt;br /&gt;
* bug fixes. &lt;br /&gt;
&lt;br /&gt;
===== Version 2.0.0 =====&lt;br /&gt;
&#039;&#039;30th April 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.8&lt;br /&gt;
* Major changes in the usability.&lt;br /&gt;
* Important bug fixes. &lt;br /&gt;
&lt;br /&gt;
===== Version 1.3.2 =====&lt;br /&gt;
&#039;&#039;20th April 2012&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.4&lt;br /&gt;
* Important bug fixes. &lt;br /&gt;
* Improvement of deployment and un-deployment wizards&lt;br /&gt;
&lt;br /&gt;
===== Version 1.2 =====&lt;br /&gt;
&#039;&#039;15th August 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.2.2&lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Added capability to instantiate multiple theorems at once.&lt;br /&gt;
* Added automatic tactic for expanding operator definitions RbPxd·&lt;br /&gt;
&lt;br /&gt;
===== Version 1.1 =====&lt;br /&gt;
&#039;&#039;6th August 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.2.2&lt;br /&gt;
* Theory library first version. &lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Improved UI.&lt;br /&gt;
&lt;br /&gt;
===== Version 1.0 =====&lt;br /&gt;
&#039;&#039;8th July 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.2&lt;br /&gt;
&lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Added import relationships between theories. &lt;br /&gt;
* Added experimental support for recursive definitions.&lt;br /&gt;
* Improved project as well as workspace scope for mathematical and prover extensions.&lt;br /&gt;
* Added tactic (xd) to expand all definitions.&lt;br /&gt;
* Fixed support for polymorphic theorems.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.8 =====&lt;br /&gt;
&#039;&#039;22nd May 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.1.1&lt;br /&gt;
&lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Added import relationships between theories. &lt;br /&gt;
* Added experimental support for recursive definitions.&lt;br /&gt;
* Added project as well as workspace scope for mathematical and prover extensions.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.7 =====&lt;br /&gt;
&#039;&#039;11th April 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bug fixes. Fixed for Rodin 2.1.1.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.6 =====&lt;br /&gt;
&#039;&#039;6th January 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Minor bug fixes and improvements to theories pretty printer.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.5 =====&lt;br /&gt;
&#039;&#039;28th October 2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the first release of the Theory plug-in with support for mathematical as well as prover extensions.&lt;br /&gt;
&lt;br /&gt;
===Features Requests and Bugs===&lt;br /&gt;
Please do not hesitate to raise any issues with regards to usability as well as efficiency. Finally, please remember to report any bugs through the SourceForge portal.&lt;br /&gt;
&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14483</id>
		<title>Template:Dev News</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14483"/>
		<updated>2022-01-14T17:16:40Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: SMT Solvers plug-in 1.5.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[http://wiki.event-b.org/index.php?title=Template:Dev_News/Archives&amp;amp;action=edit Edit Archives]&lt;br /&gt;
== Displayed as follow on the Main Page ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;width:50%;border:1px solid #AAAAAA;background:#FFFFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;!--- News to add here below : ==== ---&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;p style=&amp;quot;font-size:35px&amp;quot;&amp;gt;Rodin 3.6 is out&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
||&amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[[Rodin Platform 3.6 Release Notes | +Learn more... ]]&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Download now]&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* 14/01/22 : [[SMT_Solvers_Plug-in]] SMT Solvers 1.5 is now available&lt;br /&gt;
* 29/09/21 : [[Theory_Plug-in]] Theory 4.0.3 is now available&lt;br /&gt;
* 04/06/21 : [[Theory_Plug-in]] Theory 4.0.2 is now available&lt;br /&gt;
* 17/05/21 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Release 3.6] of Rodin is now available [[Rodin Platform 3.6 Release Notes | +Learn more]]&lt;br /&gt;
* 22/12/20 : [[Theory_Plug-in]] Theory 4.0.1 is now available&lt;br /&gt;
* 11/09/20 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/ Release 3.5] of Rodin is now available [[Rodin Platform 3.5 Release Notes | +Learn more]]&lt;br /&gt;
* 07/03/18 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.4/ Release 3.4] of Rodin is now available [[Rodin Platform 3.4 Release Notes | +Learn more]]&lt;br /&gt;
* 13/04/17 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.3/ Release 3.3] of Rodin is now available [[Rodin Platform 3.3 Release Notes | +Learn more]]&lt;br /&gt;
* 22/06/15 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.2/ Release 3.2] of Rodin is now available [[Rodin Platform 3.2 Release Notes | +Learn more]]&lt;br /&gt;
* 17/12/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.1/ Release 3.1] of Rodin is now available [[Rodin Platform 3.1 Release Notes | +Learn more]]&lt;br /&gt;
* 25/03/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.0/ Release 3.0] of Rodin is now available [[Rodin_Platform_3.0_Release_Notes | +Learn more]]&lt;br /&gt;
* 18/10/13 : [[SMT_Solvers_Plug-in]] SMT 1.1 is now available&lt;br /&gt;
* 20/06/13 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.8/ Release 2.8] of Rodin is now available [[Rodin_Platform_2.8_Release_Notes | +Learn more]]&lt;br /&gt;
* 03/06/13 : [[SMT_Solvers_Plug-in]] SMT 1.0 is now available&lt;br /&gt;
* 06/11/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.7/ Release 2.7] of Rodin is now available&lt;br /&gt;
* 03/08/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.6/ Release 2.6] of Rodin is now available&lt;br /&gt;
* 02/05/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.5/ Release 2.5] of Rodin is now available&lt;br /&gt;
* 03/02/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.4/ Release 2.4] of Rodin is now available&lt;br /&gt;
* 01/12/11 : [[Rodin_Editor | Rodin Editor]] plug-in v0.6 released for Rodin 2.3&lt;br /&gt;
* 04/10/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.3/ Release 2.3] of Rodin is now available&lt;br /&gt;
* 01/08/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2.2/ Release 2.2.2] of Rodin is now available&lt;br /&gt;
* 13/07/11 : [[Rodin_Editor | Rodin Editor]] plug-in released for Rodin 2.2.x&lt;br /&gt;
* 01/06/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2/ Release 2.2] of Rodin is now available&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 08/02/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.1/ Release 2.1] of Rodin is now available&lt;br /&gt;
* 16/11/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0.1/ Release 2.0.1] of Rodin is now available&lt;br /&gt;
* 13/10/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0/ Release 2.0] of Rodin is now available&lt;br /&gt;
* 08/06/10 : UML-B Statemachine Animation Version 1.0.0 released (for Rodin 1.3)&lt;br /&gt;
* 08/06/10 : UML-B Version 1.1.0 released (for Rodin 1.3)&lt;br /&gt;
* 03/02/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.2/ Release 1.2.0] of Rodin is now available&lt;br /&gt;
* 29/11/09 : B2Latex 0.5.1 is now available for Rodin 0.9.2 or later&lt;br /&gt;
* 20/10/09 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.1/ Release 1.1.0] of Rodin is now available&lt;br /&gt;
* 25/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/248437 Implemented new Prover Rules]&lt;br /&gt;
* 20/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/24160f New extensible plug-ins] org.rodinp.keyboard and org.eventb.keyboard&lt;br /&gt;
* 31/07/09 : UML-B plug-in released for Rodin 1.0.0&lt;br /&gt;
* 27/07/09 : Fixed requirement plug-in for rodin 1.0.0&lt;br /&gt;
* 01/07/09 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.0/ Release 1.0.0] of Rodin is now available ([http://sourceforge.net/project/shownotes.php?release_id=693928 changelog]--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Main page templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Rodin_Platform_3.5.0_External_Plug-ins&amp;diff=14482</id>
		<title>Rodin Platform 3.5.0 External Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Rodin_Platform_3.5.0_External_Plug-ins&amp;diff=14482"/>
		<updated>2022-01-14T17:14:56Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: SMT Solvers plug-in 1.5.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
  Please use one of the following templates for the Status column&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; not available &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Rodin Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://rodin-b-sharp.sourceforge.net/updates&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || [[SMT_Plug-in | SMT Solvers ]] || 1.5.0 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt; || || 14th January 2022|| [mailto:lvoisin@users.sourceforge.net Laurent Voisin]  || Automatic prover using SMT solvers&lt;br /&gt;
|-&lt;br /&gt;
| || Relevance Filter || 1.1.1 ||  &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;  || ?.x.x || || || Improves chance of automatic proof by selecting relevant hypotheses&lt;br /&gt;
|-&lt;br /&gt;
| || [[B2Latex | B2Latex export]] || 0.7.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 2.5.x || 27th May 2015 || [mailto:lvoisin@users.sourceforge.net Laurent Voisin] || generates a Latex documentation of the Event-B&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Rose.gif|30px]]||[[Rose_(Structured)_Editor|Rose editor]] || 1.7.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 4 Nov 2018 || [mailto:umlb@soton.ac.uk umlb] || Tree-structured editor for Event-B EMF that handles extensions without modification. Mainly useful for Plug-in developers.&lt;br /&gt;
|-&lt;br /&gt;
| CODA || CODA Component Diagrams || 6.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || ? || [mailto:umlb@soton.ac.uk umlb] || Component diagrams with timed channels. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| CODA || CODA Simulator for Component Diagrams || 3.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || ? || [mailto:umlb@soton.ac.uk umlb] || Component based simulation. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Project diagram icon s.png|30px]]||[[Project_Diagram|Project Diagram]]|| 1.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 1st Feb. 2015 || [mailto:umlb@soton.ac.uk umlb] || Machine - Context relationship diagram. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Umlb32.gif|30px]] || [[UML-B|UML-B]] || 2.3.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 18th Oct. 2014 || [mailto:umlb@soton.ac.uk umlb] || Original UML-B modelling environment&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Cmp_mch_obj.gif|20px]] ||[[Parallel_Composition_using_Event-B | Shared Event Composition]] || 1.7.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || || 5th July 2017 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.x.x&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:DecompositionPlug-in_logo.png|30px]] || [[Decomposition Plug-in User Guide | Decomposition]] || 1.3.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;|| || 4th July 2017 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.x.x&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Refactoring Framework | Refactory ]]|| 1.3.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt;|| 3.x.x || 6th May 2014 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.0.x.&lt;br /&gt;
|-&lt;br /&gt;
| || [[Theory Plug-in| Theory Plug-in]] || 4.0.3 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available&amp;lt;/span&amp;gt;||  || 29th Sept. 2021|| [mailto:gverdier@users.sourceforge.net Guillaume Verdier] ||&lt;br /&gt;
|-.x&lt;br /&gt;
| || [[Code Generation Activity | Code Generation]] || 0.2.5 ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt;||  || 29th Aug. 2013|| [mailto:umlb@soton.ac.uk umlb] || For Java, Ada, and OpenMP C code&lt;br /&gt;
|-.x&lt;br /&gt;
|-&lt;br /&gt;
| || [[Isabelle for Rodin]] || || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || 2.x.x || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || [[Pattern | Pattern]] || 0.9.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || 3.x.x || 13th March 2015 || [mailto:tshoang@users.sourceforge.net Thai Son Hoang] || &lt;br /&gt;
|-&lt;br /&gt;
| || [[Event-B Qualitative Probability User Guide | Qualitative Probability]] || 0.2.3 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not working&amp;lt;/span&amp;gt; || 3.x.x || 9th October 2015 || [mailto:tshoang@users.sourceforge.net Thai Son Hoang] || Needs updating to be compatible with changes in Rodin 3.5&lt;br /&gt;
|-&lt;br /&gt;
| || [[Generic Instantiation Plug-in User Guide | Generic Instantiation (Soton)]] || 1.0.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || || 05th March 2013 || [mailto:asf08r@ecs.soton.ac.uk Asieh] || &lt;br /&gt;
|-&lt;br /&gt;
| ||[[Records|Records]] || 2.0.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 2.x.x || 16th Oct. 2010 || [mailto:umlb@soton.ac.uk umlb] || no longer supported - use CamilleX instead&lt;br /&gt;
|-	&lt;br /&gt;
| ||[[EMF_Compare_Editor_installation|Teamwork]] || 1.2.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;  || 3.2.x || 5th Sept. 2016 || [mailto:umlb@soton.ac.uk umlb] || No longer supported - use CamilleX instead. Provides a synchronised copy of Machines and Contexts for committing into a repository.  &lt;br /&gt;
|-	&lt;br /&gt;
| [[Image:Umlb32.gif|30px]] ||[[UML-B_-_Statemachine_Animation|UML-B Statemachine Animation]] || 1.3.0 ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 3.x.x || 18th Oct. 2014 || [mailto:umlb@soton.ac.uk umlb] || no longer supported - use new UML-B from Soton update site instead&lt;br /&gt;
|-	&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||iUML-B plugins ||  ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 3.x.x ||  || [mailto:umlb@soton.ac.uk umlb] || New versions are now available on the Soton Update Site. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Atelier B Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://methode-b.com/update_site/atelierb_provers&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || Atelier B provers || 2.3.0 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.3.0 || 2 Dec 2020  || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ProB Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://www.stups.hhu.de/prob_updates_rodin3&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || ProB || 3.0.10 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || The ProB animator and model checker&lt;br /&gt;
|-&lt;br /&gt;
| || ProB (Dis)Prover || 3.0.9 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || The ProB counter-example finder and prover&lt;br /&gt;
|-&lt;br /&gt;
| || ProB Symbolic constants support || 3.0.9 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Southampton Releases Update Site ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Available from http://eventb-soton.github.io/updateSite/releases&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:CamilleX.png|CmX]] || [[CamilleX|CamilleX]] || 2.0.2 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 21 Jan 2021  || [mailto:T.S.Hoang@ecs.soton.ac.uk Thai Son Hoang] || CamilleX provides text editors for Event-B models and support modelling mechanisms such as machine inclusion.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] || [[Event-B_Classdiagrams|UML-B Class Diagrams]] || 3.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 11 Sept 2020  || [mailto:umlb@soton.ac.uk umlb] || UML-B Class diagrams translate into Event-B Machines.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] || [[Event-B_Statemachines|UML-B State-machines]] || 4.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 13 Aug 2020  || [mailto:umlb@soton.ac.uk umlb] || UML-B State-machines translate into Event-B Machines.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||[[Event-B_Statemachines|UML-B State-machine Animation]] || 3.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 13 Aug 2020 || [mailto:umlb@soton.ac.uk umlb] || Animate UML-B State-machines. Compatible with UML-B statemachines  4.x.x and ProB 3.0.x.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||[[Scenario Checker|Scenario Checker]] || 0.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 31 July 2020 || [mailto:umlb@soton.ac.uk umlb] || Validation tool for recording and replaying scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following framework plug-ins are also provided on the Southampton Releases Update Site. These plugins are installed automatically when required and are not usually installed explicitly by users.&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| ||[[EMF_framework_for_Event-B|Event-B EMF framework]] || 6.1.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 4 July 2020 || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Generic_Event-B_EMF_extensions|Event-B EMF extensions]] || 6.1.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 4 July 2020  || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Generic_Event-B_EMF_extensions|UML-B diagrams]] || 8.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.2.x || 13 Aug 2020  || [mailto:umlb@soton.ac.uk umlb] ||  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.&lt;br /&gt;
|-&lt;br /&gt;
|  ||[[ProB Support|ProB Support]] || 0.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 28 July 2020 || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14481</id>
		<title>Template:Dev News</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Template:Dev_News&amp;diff=14481"/>
		<updated>2021-09-29T13:17:14Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Theory plug-in release 4.0.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[http://wiki.event-b.org/index.php?title=Template:Dev_News/Archives&amp;amp;action=edit Edit Archives]&lt;br /&gt;
== Displayed as follow on the Main Page ==&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin:0;width:50%;border:1px solid #AAAAAA;background:#FFFFFF;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&amp;lt;!--- News to add here below : ==== ---&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size:90%;&amp;quot;&amp;gt;&lt;br /&gt;
{| border=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;p style=&amp;quot;font-size:35px&amp;quot;&amp;gt;Rodin 3.6 is out&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&lt;br /&gt;
||&amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[[Rodin Platform 3.6 Release Notes | +Learn more... ]]&amp;lt;/p&amp;gt;&lt;br /&gt;
  &amp;lt;p style=&amp;quot;font-size:25px&amp;quot;&amp;gt;[http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Download now]&amp;lt;/p&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* 29/09/21 : [[Theory_Plug-in]] Theory 4.0.3 is now available&lt;br /&gt;
* 04/06/21 : [[Theory_Plug-in]] Theory 4.0.2 is now available&lt;br /&gt;
* 17/05/21 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.6/ Release 3.6] of Rodin is now available [[Rodin Platform 3.6 Release Notes | +Learn more]]&lt;br /&gt;
* 22/12/20 : [[Theory_Plug-in]] Theory 4.0.1 is now available&lt;br /&gt;
* 11/09/20 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/ Release 3.5] of Rodin is now available [[Rodin Platform 3.5 Release Notes | +Learn more]]&lt;br /&gt;
* 07/03/18 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.4/ Release 3.4] of Rodin is now available [[Rodin Platform 3.4 Release Notes | +Learn more]]&lt;br /&gt;
* 13/04/17 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.3/ Release 3.3] of Rodin is now available [[Rodin Platform 3.3 Release Notes | +Learn more]]&lt;br /&gt;
* 22/06/15 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.2/ Release 3.2] of Rodin is now available [[Rodin Platform 3.2 Release Notes | +Learn more]]&lt;br /&gt;
* 17/12/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.1/ Release 3.1] of Rodin is now available [[Rodin Platform 3.1 Release Notes | +Learn more]]&lt;br /&gt;
* 25/03/14 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.0/ Release 3.0] of Rodin is now available [[Rodin_Platform_3.0_Release_Notes | +Learn more]]&lt;br /&gt;
* 18/10/13 : [[SMT_Solvers_Plug-in]] SMT 1.1 is now available&lt;br /&gt;
* 20/06/13 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.8/ Release 2.8] of Rodin is now available [[Rodin_Platform_2.8_Release_Notes | +Learn more]]&lt;br /&gt;
* 03/06/13 : [[SMT_Solvers_Plug-in]] SMT 1.0 is now available&lt;br /&gt;
* 06/11/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.7/ Release 2.7] of Rodin is now available&lt;br /&gt;
* 03/08/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.6/ Release 2.6] of Rodin is now available&lt;br /&gt;
* 02/05/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.5/ Release 2.5] of Rodin is now available&lt;br /&gt;
* 03/02/12 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.4/ Release 2.4] of Rodin is now available&lt;br /&gt;
* 01/12/11 : [[Rodin_Editor | Rodin Editor]] plug-in v0.6 released for Rodin 2.3&lt;br /&gt;
* 04/10/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.3/ Release 2.3] of Rodin is now available&lt;br /&gt;
* 01/08/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2.2/ Release 2.2.2] of Rodin is now available&lt;br /&gt;
* 13/07/11 : [[Rodin_Editor | Rodin Editor]] plug-in released for Rodin 2.2.x&lt;br /&gt;
* 01/06/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.2/ Release 2.2] of Rodin is now available&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 08/02/11 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.1/ Release 2.1] of Rodin is now available&lt;br /&gt;
* 16/11/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0.1/ Release 2.0.1] of Rodin is now available&lt;br /&gt;
* 13/10/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/2.0/ Release 2.0] of Rodin is now available&lt;br /&gt;
* 08/06/10 : UML-B Statemachine Animation Version 1.0.0 released (for Rodin 1.3)&lt;br /&gt;
* 08/06/10 : UML-B Version 1.1.0 released (for Rodin 1.3)&lt;br /&gt;
* 03/02/10 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.2/ Release 1.2.0] of Rodin is now available&lt;br /&gt;
* 29/11/09 : B2Latex 0.5.1 is now available for Rodin 0.9.2 or later&lt;br /&gt;
* 20/10/09 : [http://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.1/ Release 1.1.0] of Rodin is now available&lt;br /&gt;
* 25/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/248437 Implemented new Prover Rules]&lt;br /&gt;
* 20/08/09 : [http://cia.vc/stats/project/rodin-b-sharp/.message/24160f New extensible plug-ins] org.rodinp.keyboard and org.eventb.keyboard&lt;br /&gt;
* 31/07/09 : UML-B plug-in released for Rodin 1.0.0&lt;br /&gt;
* 27/07/09 : Fixed requirement plug-in for rodin 1.0.0&lt;br /&gt;
* 01/07/09 : [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/1.0/ Release 1.0.0] of Rodin is now available ([http://sourceforge.net/project/shownotes.php?release_id=693928 changelog]--&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Main page templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Rodin_Platform_3.5.0_External_Plug-ins&amp;diff=14480</id>
		<title>Rodin Platform 3.5.0 External Plug-ins</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Rodin_Platform_3.5.0_External_Plug-ins&amp;diff=14480"/>
		<updated>2021-09-29T13:16:28Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Theory plug-in release 4.0.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
  Please use one of the following templates for the Status column&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; not available &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Rodin Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://rodin-b-sharp.sourceforge.net/updates&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || [[SMT_Plug-in | SMT Solvers ]] || 1.4.0 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt; || || 15th March 2016|| [mailto:lvoisin@users.sourceforge.net Laurent Voisin]  || Automatic prover using SMT solvers&lt;br /&gt;
|-&lt;br /&gt;
| || Relevance Filter || 1.1.1 ||  &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;  || ?.x.x || || || Improves chance of automatic proof by selecting relevant hypotheses&lt;br /&gt;
|-&lt;br /&gt;
| || [[B2Latex | B2Latex export]] || 0.7.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 2.5.x || 27th May 2015 || [mailto:lvoisin@users.sourceforge.net Laurent Voisin] || generates a Latex documentation of the Event-B&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Rose.gif|30px]]||[[Rose_(Structured)_Editor|Rose editor]] || 1.7.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 4 Nov 2018 || [mailto:umlb@soton.ac.uk umlb] || Tree-structured editor for Event-B EMF that handles extensions without modification. Mainly useful for Plug-in developers.&lt;br /&gt;
|-&lt;br /&gt;
| CODA || CODA Component Diagrams || 6.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || ? || [mailto:umlb@soton.ac.uk umlb] || Component diagrams with timed channels. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| CODA || CODA Simulator for Component Diagrams || 3.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || ? || [mailto:umlb@soton.ac.uk umlb] || Component based simulation. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Project diagram icon s.png|30px]]||[[Project_Diagram|Project Diagram]]|| 1.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 1st Feb. 2015 || [mailto:umlb@soton.ac.uk umlb] || Machine - Context relationship diagram. (&#039;&#039;&#039;Not compatible with latest UML-B.&#039;&#039;&#039; Will be up-issued on Soton update site.)&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Umlb32.gif|30px]] || [[UML-B|UML-B]] || 2.3.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available &amp;lt;/span&amp;gt;|| 3.x.x || 18th Oct. 2014 || [mailto:umlb@soton.ac.uk umlb] || Original UML-B modelling environment&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Cmp_mch_obj.gif|20px]] ||[[Parallel_Composition_using_Event-B | Shared Event Composition]] || 1.7.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || || 5th July 2017 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.x.x&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:DecompositionPlug-in_logo.png|30px]] || [[Decomposition Plug-in User Guide | Decomposition]] || 1.3.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;|| || 4th July 2017 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.x.x&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Refactoring Framework | Refactory ]]|| 1.3.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt;|| 3.x.x || 6th May 2014 || [mailto:umlb@soton.ac.uk umlb] || Compatible with Rodin 3.0.x.&lt;br /&gt;
|-&lt;br /&gt;
| || [[Theory Plug-in| Theory Plug-in]] || 4.0.3 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; available&amp;lt;/span&amp;gt;||  || 29th Sept. 2021|| [mailto:gverdier@users.sourceforge.net Guillaume Verdier] ||&lt;br /&gt;
|-.x&lt;br /&gt;
| || [[Code Generation Activity | Code Generation]] || 0.2.5 ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt;||  || 29th Aug. 2013|| [mailto:umlb@soton.ac.uk umlb] || For Java, Ada, and OpenMP C code&lt;br /&gt;
|-.x&lt;br /&gt;
|-&lt;br /&gt;
| || [[Isabelle for Rodin]] || || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || 2.x.x || || ||&lt;br /&gt;
|-&lt;br /&gt;
| || [[Pattern | Pattern]] || 0.9.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || 3.x.x || 13th March 2015 || [mailto:tshoang@users.sourceforge.net Thai Son Hoang] || &lt;br /&gt;
|-&lt;br /&gt;
| || [[Event-B Qualitative Probability User Guide | Qualitative Probability]] || 0.2.3 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not working&amp;lt;/span&amp;gt; || 3.x.x || 9th October 2015 || [mailto:tshoang@users.sourceforge.net Thai Son Hoang] || Needs updating to be compatible with changes in Rodin 3.5&lt;br /&gt;
|-&lt;br /&gt;
| || [[Generic Instantiation Plug-in User Guide | Generic Instantiation (Soton)]] || 1.0.1 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked&amp;lt;/span&amp;gt; || || 05th March 2013 || [mailto:asf08r@ecs.soton.ac.uk Asieh] || &lt;br /&gt;
|-&lt;br /&gt;
| ||[[Records|Records]] || 2.0.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 2.x.x || 16th Oct. 2010 || [mailto:umlb@soton.ac.uk umlb] || no longer supported - use CamilleX instead&lt;br /&gt;
|-	&lt;br /&gt;
| ||[[EMF_Compare_Editor_installation|Teamwork]] || 1.2.0 || &amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt;  || 3.2.x || 5th Sept. 2016 || [mailto:umlb@soton.ac.uk umlb] || No longer supported - use CamilleX instead. Provides a synchronised copy of Machines and Contexts for committing into a repository.  &lt;br /&gt;
|-	&lt;br /&gt;
| [[Image:Umlb32.gif|30px]] ||[[UML-B_-_Statemachine_Animation|UML-B Statemachine Animation]] || 1.3.0 ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 3.x.x || 18th Oct. 2014 || [mailto:umlb@soton.ac.uk umlb] || no longer supported - use new UML-B from Soton update site instead&lt;br /&gt;
|-	&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||iUML-B plugins ||  ||&amp;lt;span style=&amp;quot;color:#8B4513&amp;quot;&amp;gt; not checked &amp;lt;/span&amp;gt; || 3.x.x ||  || [mailto:umlb@soton.ac.uk umlb] || New versions are now available on the Soton Update Site. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Atelier B Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://methode-b.com/update_site/atelierb_provers&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || Atelier B provers || 2.3.0 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.3.0 || 2 Dec 2020  || ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== ProB Update Site ====&lt;br /&gt;
&lt;br /&gt;
Available from http://www.stups.hhu.de/prob_updates_rodin3&lt;br /&gt;
&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| || ProB || 3.0.10 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || The ProB animator and model checker&lt;br /&gt;
|-&lt;br /&gt;
| || ProB (Dis)Prover || 3.0.9 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || The ProB counter-example finder and prover&lt;br /&gt;
|-&lt;br /&gt;
| || ProB Symbolic constants support || 3.0.9 || &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;available&amp;lt;/span&amp;gt; || 3.5.0 || 4 Sep 2020  || || &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Southampton Releases Update Site ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Available from http://eventb-soton.github.io/updateSite/releases&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:CamilleX.png|CmX]] || [[CamilleX|CamilleX]] || 2.0.2 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 21 Jan 2021  || [mailto:T.S.Hoang@ecs.soton.ac.uk Thai Son Hoang] || CamilleX provides text editors for Event-B models and support modelling mechanisms such as machine inclusion.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] || [[Event-B_Classdiagrams|UML-B Class Diagrams]] || 3.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 11 Sept 2020  || [mailto:umlb@soton.ac.uk umlb] || UML-B Class diagrams translate into Event-B Machines.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] || [[Event-B_Statemachines|UML-B State-machines]] || 4.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 13 Aug 2020  || [mailto:umlb@soton.ac.uk umlb] || UML-B State-machines translate into Event-B Machines.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||[[Event-B_Statemachines|UML-B State-machine Animation]] || 3.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 13 Aug 2020 || [mailto:umlb@soton.ac.uk umlb] || Animate UML-B State-machines. Compatible with UML-B statemachines  4.x.x and ProB 3.0.x.&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:IUMLB_big.png|30px]] ||[[Scenario Checker|Scenario Checker]] || 0.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 31 July 2020 || [mailto:umlb@soton.ac.uk umlb] || Validation tool for recording and replaying scenarios&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following framework plug-ins are also provided on the Southampton Releases Update Site. These plugins are installed automatically when required and are not usually installed explicitly by users.&lt;br /&gt;
{{SimpleHeader}}&lt;br /&gt;
|-&lt;br /&gt;
! scope=col |  || Plug-in name || Version ||  Status || MCV* || Release Date || Contact || Additional info&lt;br /&gt;
|-&lt;br /&gt;
| ||[[EMF_framework_for_Event-B|Event-B EMF framework]] || 6.1.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 4 July 2020 || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Generic_Event-B_EMF_extensions|Event-B EMF extensions]] || 6.1.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.x.x || 4 July 2020  || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|-&lt;br /&gt;
| ||[[Generic_Event-B_EMF_extensions|UML-B diagrams]] || 8.0.1 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.2.x || 13 Aug 2020  || [mailto:umlb@soton.ac.uk umlb] ||  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.&lt;br /&gt;
|-&lt;br /&gt;
|  ||[[ProB Support|ProB Support]] || 0.0.0 ||&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt; new release &amp;lt;/span&amp;gt; || 3.4.x || 28 July 2020 || [mailto:umlb@soton.ac.uk umlb] || 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.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Theory_Release_History&amp;diff=14479</id>
		<title>Theory Release History</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Theory_Release_History&amp;diff=14479"/>
		<updated>2021-09-29T13:11:40Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Theory plug-in release 4.0.3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Theory Plug-in]].&lt;br /&gt;
&lt;br /&gt;
Follow this page for the latest on the Theory plug-in. The user manual is also provided together with the installation details.&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
* &#039;&#039;29th September 2021&#039;&#039;: [[#Version_4.0.3|Version 4.0.3]] is released. It requires Rodin 3.5.&lt;br /&gt;
* &#039;&#039;4th June 2021&#039;&#039;: [[#Version_4.0.2|Version 4.0.2]] is released. It requires Rodin 3.5.&lt;br /&gt;
* &#039;&#039;22th December 2020&#039;&#039;: [[#Version_4.0.1|Version 4.0.1]] is released. It requires Rodin 3.5.&lt;br /&gt;
* &#039;&#039;19th December 2014&#039;&#039;: [[#Version_3.0.0|Version 3.0.o]] is released. It requires Rodin 3.1.&lt;br /&gt;
* &#039;&#039;10th July 2014&#039;&#039;: [[#Version_2.0.2|Version 2.0.2]] is released. It requires Rodin 2.8.&lt;br /&gt;
* &#039;&#039;24th June 2014&#039;&#039;: [[#Version_2.0.1|Version 2.0.1]] is released. It requires Rodin 2.8.&lt;br /&gt;
* &#039;&#039;30th April 2014&#039;&#039;: [[#Version_2.0.0|Version 2.0.0]] is released. It requires Rodin 2.8. This release contains major changes in the features and accessibilities.&lt;br /&gt;
* &#039;&#039;20th April 2012&#039;&#039;: [[#Version_1.3.2|Version 1.3.2]] is released. It requires Rodin 2.4.&lt;br /&gt;
* &#039;&#039;15th August 2011&#039;&#039;: [[#Version_1.2|Version 1.2]] is released. It requires Rodin 2.2.2.&lt;br /&gt;
* &#039;&#039;6th August 2011&#039;&#039;: [[#Version_1.1|Version 1.1]] is released. It requires Rodin 2.2.2.&lt;br /&gt;
* &#039;&#039;8th July 2011&#039;&#039;: [[#Version_1.0|Version 1.0]] is released. It requires Rodin 2.2.&lt;br /&gt;
* &#039;&#039;22nd May 2011&#039;&#039;: [[#Version_0.8|Version 0.8]] released. It is based on Rodin 2.1.1.&lt;br /&gt;
* &#039;&#039;11th April 2011&#039;&#039;: [[#Version_0.7|Version 0.7]] released. It is based on Rodin 2.1.1.&lt;br /&gt;
* &#039;&#039;6th January 2011&#039;&#039;: [[#Version_0.6|Version 0.6]] released. It is based on Rodin 2.0.1.&lt;br /&gt;
* &#039;&#039;28th October 2010&#039;&#039;: [[#Version_0.5|Version 0.5]] released. It is based on Rodin 2.0.&lt;br /&gt;
&lt;br /&gt;
===Releases===&lt;br /&gt;
===== Version 4.0.3 =====&lt;br /&gt;
&#039;&#039;29th September 2021&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.5&lt;br /&gt;
* Bug fixes:&lt;br /&gt;
** Operators that have parameters with the same name but different types are now handled correctly in both the editor and the prover (for rewriting the definition)&lt;br /&gt;
** Theorems instantiated during proof are now correctly typed (in some cases, some type information was missing)&lt;br /&gt;
&lt;br /&gt;
===== Version 4.0.2 =====&lt;br /&gt;
&#039;&#039;4th June 2021&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.5&lt;br /&gt;
* Bug fixes:&lt;br /&gt;
** Datatypes that have several type parameters are now serialized in the right order; it fixes some issues with proofs and proof replay.&lt;br /&gt;
** Manually applied inference and rewrite rules are now replayed correctly (in some cases, their replay was displayed as uncertain).&lt;br /&gt;
&lt;br /&gt;
===== Version 4.0.1 =====&lt;br /&gt;
&#039;&#039;22th December 2020&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.5&lt;br /&gt;
* Bug fixes:&lt;br /&gt;
** The theory plugin now takes into account updates in theories, as well as creating a theory after using it (there was a cache issue).&lt;br /&gt;
** The error messages at launch about rule-based provers failing to find the context of the proof have been removed.&lt;br /&gt;
** The dropdown list in theory imports is now usable (there was an off-by-one issue when selecting an element in the list).&lt;br /&gt;
** Manually applying an inference rule no longer throws a NullPointerException.&lt;br /&gt;
** It is now possible to rename theories.&lt;br /&gt;
** The TheoryPath creation dialog box has been simplified.&lt;br /&gt;
* Optimizations:&lt;br /&gt;
** The proving interface is now much more responsive, even when a theory contains a lot of rewrite rules (we have implemented a cache of the places where a rewrite rule can apply).&lt;br /&gt;
** The theory plugin now generates much simpler WD conditions, especially for the pred, succ, prj1, prj2, and id operators.&lt;br /&gt;
&lt;br /&gt;
===== Version 4.0.0-RC1 =====&lt;br /&gt;
&#039;&#039;10th April 2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.2&lt;br /&gt;
* AST Extensions (4.0.0) Major API change.&lt;br /&gt;
** Compatibility upgrade to Rodin 3.2&lt;br /&gt;
** Support for get operator position for INFIX extended predicate operators.&lt;br /&gt;
** Improve pattern matching for associative operators.&lt;br /&gt;
* Theory plug-in Branding (0.0.1) Initial version&lt;br /&gt;
* Theory Core (4.0.0) Internal implementation changes.&lt;br /&gt;
** Compatibility upgrade to Rodin 3.2&lt;br /&gt;
** Support for INFIX extended predicate operators.&lt;br /&gt;
** Various bugs fixed.&lt;br /&gt;
* Theory help (2.0.0) User documentations.&lt;br /&gt;
* Theory Keyboard (0.0.1) Initial version (A special plug-in for typesetting Theory).&lt;br /&gt;
** Support for typesetting Real arithmetics (plus, unary minus, multiply, divide, less than, less than or equal, greater than, greater than or equal).&lt;br /&gt;
* Theory Rule-based Prover (4.0.0)&lt;br /&gt;
** Reasoners&#039; input does not contain the proof-obligation context.&lt;br /&gt;
** Use the current sequent&#039;s origin to get the proof-obligation context.&lt;br /&gt;
** Bug fixed: translate formula to ensure they have the same formula factory.&lt;br /&gt;
** Added version numbers for reasoners.&lt;br /&gt;
** Automatic rewrite and inference tactics are re-implemented so that each rule application is visible in proof trees.&lt;br /&gt;
* Theory UI (3.0.0)&lt;br /&gt;
&lt;br /&gt;
===== Version 3.0.0 =====&lt;br /&gt;
&#039;&#039;17th December 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 3.1&lt;br /&gt;
* migration changes to Rodin 3.1&lt;br /&gt;
&lt;br /&gt;
===== Version 2.0.2 =====&lt;br /&gt;
&#039;&#039;10th July 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.8&lt;br /&gt;
* bug fixes. &lt;br /&gt;
&lt;br /&gt;
===== Version 2.0.1 =====&lt;br /&gt;
&#039;&#039;24th June 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.8&lt;br /&gt;
* bug fixes. &lt;br /&gt;
&lt;br /&gt;
===== Version 2.0.0 =====&lt;br /&gt;
&#039;&#039;30th April 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.8&lt;br /&gt;
* Major changes in the usability.&lt;br /&gt;
* Important bug fixes. &lt;br /&gt;
&lt;br /&gt;
===== Version 1.3.2 =====&lt;br /&gt;
&#039;&#039;20th April 2012&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.4&lt;br /&gt;
* Important bug fixes. &lt;br /&gt;
* Improvement of deployment and un-deployment wizards&lt;br /&gt;
&lt;br /&gt;
===== Version 1.2 =====&lt;br /&gt;
&#039;&#039;15th August 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.2.2&lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Added capability to instantiate multiple theorems at once.&lt;br /&gt;
* Added automatic tactic for expanding operator definitions RbPxd·&lt;br /&gt;
&lt;br /&gt;
===== Version 1.1 =====&lt;br /&gt;
&#039;&#039;6th August 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.2.2&lt;br /&gt;
* Theory library first version. &lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Improved UI.&lt;br /&gt;
&lt;br /&gt;
===== Version 1.0 =====&lt;br /&gt;
&#039;&#039;8th July 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.2&lt;br /&gt;
&lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Added import relationships between theories. &lt;br /&gt;
* Added experimental support for recursive definitions.&lt;br /&gt;
* Improved project as well as workspace scope for mathematical and prover extensions.&lt;br /&gt;
* Added tactic (xd) to expand all definitions.&lt;br /&gt;
* Fixed support for polymorphic theorems.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.8 =====&lt;br /&gt;
&#039;&#039;22nd May 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.1.1&lt;br /&gt;
&lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Added import relationships between theories. &lt;br /&gt;
* Added experimental support for recursive definitions.&lt;br /&gt;
* Added project as well as workspace scope for mathematical and prover extensions.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.7 =====&lt;br /&gt;
&#039;&#039;11th April 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bug fixes. Fixed for Rodin 2.1.1.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.6 =====&lt;br /&gt;
&#039;&#039;6th January 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Minor bug fixes and improvements to theories pretty printer.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.5 =====&lt;br /&gt;
&#039;&#039;28th October 2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the first release of the Theory plug-in with support for mathematical as well as prover extensions.&lt;br /&gt;
&lt;br /&gt;
===Features Requests and Bugs===&lt;br /&gt;
Please do not hesitate to raise any issues with regards to usability as well as efficiency. Finally, please remember to report any bugs through the SourceForge portal.&lt;br /&gt;
&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Adding_Reasoners(How_to_extend_Rodin_Tutorial)&amp;diff=14478</id>
		<title>Adding Reasoners(How to extend Rodin Tutorial)</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Adding_Reasoners(How_to_extend_Rodin_Tutorial)&amp;diff=14478"/>
		<updated>2021-09-21T15:43:52Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Antecedent and needed hypotheses were mixed up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navigation|Previous= [[Extending_the_Proof_Obligation_Generator(How_to_extend_Rodin_Tutorial) | Generating the proof obligations]] | Up= [[Plug-in_Tutorial|How to extend Rodin Tutorial (Index)]]}}&lt;br /&gt;
&lt;br /&gt;
=== Principles ===&lt;br /&gt;
Rodin support several provers. Some are embedded such as NewPP, or the sequent prover which will talk about here, and some are added by external plug-ins (as the Atelier B provers : ML, PP, P0, etc).&lt;br /&gt;
&lt;br /&gt;
Contributing to Rodin sequent prover is done by adding tactics. These tactics which often involve a set of reasoners, apply on proof tree nodes. The reasoners apply on the sequent of a given proof tree node. A reasoner is (and has to be) quite &amp;quot;rough&amp;quot; : it shall take a given sequent and produce a proof rule that will (if possible) apply on this given sequent, whereas a tactic could be smarter. Indeed, a tactic can involve several reasoners, thus apply them in loops, and combine them, or even call other tactics. A tactic can be either automatic (auto tactic and/or post tactic) or manual (using providers in the UI that paint their applications in red on formulas) in case of interactive proof.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding_Reasoners_TacticsImage.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
A reasoner encapsulates a kind of &amp;quot;proof step&amp;quot;, also called &amp;quot;proof rule&amp;quot;. The sequent prover provides a set of tactics applying proof rules (and even other tactics!). These rules are either rewriting rules (see [[All_Rewrite_Rules|rewriting rule list]]) or inference rules (see [[Inference_Rules|inference rule list]]). It is actually a really critical piece of code, that developers should understand at first sight, and be convinced about its correctness. If one codes a wrong reasoner, one breaks the whole soundness of proofs done within Rodin! As they are written in pure java, and accorded to the previous considerations, they have to be the simpliest and most readable as possible. Finally, it is needed to write tests that cover all the possible cases of application of one given reasoner (this will not be detailed in this tutorial).&lt;br /&gt;
&lt;br /&gt;
=== In this part ===&lt;br /&gt;
In this part we will see how to contribute to the sequent prover of Rodin by encapsulating a new proof rule within a reasoner and add a tactic to the sequent prover of Rodin that will encapsulate this reasoner.&lt;br /&gt;
The rule, coded within the reasoner, that we want to apply is the following:&lt;br /&gt;
&lt;br /&gt;
{| cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; &lt;br /&gt;
|&amp;lt;math&amp;gt;\frac{ \textbf{H},\; a = b \;\; \vdash \;\; \textbf{G}} {\textbf{H},\; a \leq b,\;b \leq a\;\vdash \;\; \textbf{G}}&amp;lt;/math&amp;gt; &lt;br /&gt;
| DBL_INEQ &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Let&#039;s call this rule DBL_INEQ. By reading this rule, we see it is goal agnostic. This means that the rule will be applied if the prover sequent under consideration contains the hypotheses &amp;lt;math&amp;gt;a \leq b,\;b \leq a&amp;lt;/math&amp;gt;, whatever the goal of this sequent. We will say that &amp;lt;math&amp;gt;a \leq b,\;b \leq a&amp;lt;/math&amp;gt; are the &amp;quot;Needed hypotheses&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:Adding_Reasoners_DBL_INEQ_Reasoner.png|550px|center]]&lt;br /&gt;
&lt;br /&gt;
Moreover, &amp;lt;math&amp;gt;\textbf{H}&amp;lt;/math&amp;gt; is the set of selected hypotheses from the input sequent, and &amp;lt;math&amp;gt; a = b\;\vdash \;\textbf{G}&amp;lt;/math&amp;gt; is the antecedent of the rule (i.e. a child node to be proved).&lt;br /&gt;
&lt;br /&gt;
=== Step1 ===&lt;br /&gt;
* Create a new plugin that will host our reasoner and tactic. It will not be any activator for this plug-in but the option &amp;quot;Activate this plug-in when one of its classes is loaded&amp;quot; shall be selected.&lt;br /&gt;
* Add a dependencies to the plug-ins &amp;lt;tt&amp;gt;org.eclipse.core.resources&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;org.eclipse.core.runtime&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;org.eclipse.ui&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;org.rodinp.core&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;org.eventb.core.ast&amp;lt;/tt&amp;gt;,&amp;lt;tt&amp;gt;org.eventb.core.seqprover&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;org.eventb.core&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* Add the extension point &amp;lt;tt&amp;gt;org.eventb.core.seaqprover.reasoners&amp;lt;/tt&amp;gt;, and create a &#039;reasoner&#039; extension for our reasoner with &#039;&#039;&amp;quot;id : dblIneq&amp;quot;&#039;&#039; and &#039;&#039;&amp;quot;name :  Double Inequality&amp;quot;&#039;&#039; and finally,&lt;br /&gt;
* Create a new class for the reasoner, called &amp;lt;tt&amp;gt;DoubleInequalityReasoner&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Step2 ===&lt;br /&gt;
Implement the body of the reasoner :&lt;br /&gt;
&lt;br /&gt;
* the reasoner shall &amp;quot;&amp;lt;tt&amp;gt;implements IVersionedReasoner&amp;lt;/tt&amp;gt;&amp;quot; thus &amp;lt;tt&amp;gt;getVersion()&amp;lt;/tt&amp;gt; shall return a static integer giving the current version of our reasoner. 0 might not be a wrong choice for our first try. &amp;lt;tt&amp;gt;getReasonerID()&amp;lt;/tt&amp;gt; shall return a unique ID. It MUST correspond to the id given in the reasoner extension we created, and is prefixed by the plugin id where it lays. Here, we didn&#039;t create any activator for our plugin, so no such constant prefix exists. So, let&#039;s create here something like : &lt;br /&gt;
&lt;br /&gt;
 private static final String REASONER_ID = &amp;quot;org.eventb.doubleInequality.dblIneq&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
You should now have something close to this :&lt;br /&gt;
&lt;br /&gt;
 public class DoubleInequalityReasoner implements IVersionedReasoner {&lt;br /&gt;
 &lt;br /&gt;
 	private static final int VERSION = 0;&lt;br /&gt;
 	private static final String REASONER_ID = &amp;quot;org.eventb.doubleInequality.dblIneq&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 	@Override&lt;br /&gt;
 	public String getReasonerID() {&lt;br /&gt;
 		return REASONER_ID;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	@Override&lt;br /&gt;
 	public int getVersion() {&lt;br /&gt;
 		return VERSION;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	@Override&lt;br /&gt;
 	public IReasonerOutput apply(IProverSequent seq, IReasonerInput input,&lt;br /&gt;
 			IProofMonitor pm) {&lt;br /&gt;
 &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
=== Step3 / Exercise ===&lt;br /&gt;
&lt;br /&gt;
Implement the method public &amp;lt;tt&amp;gt;IReasonerOutput &#039;&#039;&#039;apply&#039;&#039;&#039;(IProverSequent seq, IReasonerInput input, IProofMonitor pm)&amp;lt;/tt&amp;gt;. This method is the place where one shall create the proof rule to be applied from the input sequent &amp;lt;tt&amp;gt;seq&amp;lt;/tt&amp;gt; and with the given input if needed.&lt;br /&gt;
Here is the list of tasks you have to perform in this &amp;lt;tt&amp;gt;apply()&amp;lt;/tt&amp;gt; method : &lt;br /&gt;
* get and check the input predicate a &amp;lt;= b,&lt;br /&gt;
* check the presence of the other hypothesis b &amp;lt;= a,&lt;br /&gt;
* make the new hypothesis a=b that will be in the antecedent produced by our rule,&lt;br /&gt;
* make the antecedent (see the picture above) where a &amp;lt;= b and b &amp;lt;= a are deselected(i.e. hidden) so that the tactic does not apply in unfinite loop,&lt;br /&gt;
* make the proof rule to return,&lt;br /&gt;
&lt;br /&gt;
=== Step4 ===&lt;br /&gt;
Here we see together the solution proposed for the implementation of the &amp;lt;tt&amp;gt;apply()&amp;lt;/tt&amp;gt; method of our reasoner:&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public IReasonerOutput apply(IProverSequent seq, IReasonerInput input, IProofMonitor pm) {&lt;br /&gt;
&lt;br /&gt;
* get and check the input predicate a &amp;lt;= b&lt;br /&gt;
   &lt;br /&gt;
NB : Here we suppose that the given input doesn&#039;t have any error. If it has, we shall return a &amp;lt;tt&amp;gt;reasonerFailure&amp;lt;/tt&amp;gt;(See &amp;lt;tt&amp;gt;ProverFactory.reasonerFailure()&amp;lt;/tt&amp;gt; method for more details).&amp;lt;br&amp;gt;&lt;br /&gt;
We want our &amp;lt;tt&amp;gt;IReasonerInput&amp;lt;/tt&amp;gt; to be a predicate input of the form &amp;quot;a &amp;lt;= b&amp;quot;. Thus, there is an existing class to reuse : &amp;lt;tt&amp;gt;SinglePredInput&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
Please, have a look at &amp;lt;tt&amp;gt;IReasonerInput&amp;lt;/tt&amp;gt; implementation hierarchy to see which kind of input classes exist and that you could reuse in your reasoners.&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:IReasonerInput.png|400px|center]]&lt;br /&gt;
&lt;br /&gt;
Thus, here is what you should write : &lt;br /&gt;
&lt;br /&gt;
   if (input.hasError()) {&lt;br /&gt;
     return ProverFactory.reasonerFailure(this, input, input.getError());&lt;br /&gt;
   }&lt;br /&gt;
   final SinglePredInput predInput = (SinglePredInput) input;&lt;br /&gt;
   final Predicate predicate = predInput.getPredicate();&lt;br /&gt;
   if (predicate.getTag() != Formula.LE) {&lt;br /&gt;
     return ProverFactory.reasonerFailure(this, input, &amp;quot;invalid input predicate&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
* check the presence of the other hypothesis b &amp;lt;= a&lt;br /&gt;
   // we are sure that the predicate is a relational predicate as we checked that getTag() == Formula.LE&lt;br /&gt;
   final RelationalPredicate aLEb = (RelationalPredicate) predicate;&lt;br /&gt;
   final Expression a = aLEb.getLeft();&lt;br /&gt;
   final Expression b = aLEb.getRight();&lt;br /&gt;
   final FormulaFactory ff = seq.getFormulaFactory(); // we retrieve the formula factory &lt;br /&gt;
   final Predicate bLEa = ff.makeRelationalPredicate(Formula.LE, b, a,	null); // we build b &amp;lt;= a&lt;br /&gt;
   if (!seq.containsHypotheses(Arrays.asList(aLEb, bLEa))) {&lt;br /&gt;
     return ProverFactory.reasonerFailure(this, input,&amp;quot;sequent does not contain required hypotheses&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
* make the new hypothesis a=b&lt;br /&gt;
NB : we reuse the formula factory that we got from the sequent to create the new hypothesis &amp;lt;tt&amp;gt;a = b&amp;lt;/tt&amp;gt; :&lt;br /&gt;
   final Predicate aEqb = ff.makeRelationalPredicate(Formula.EQUAL, a, b, null);&lt;br /&gt;
&lt;br /&gt;
* make the antecedent&lt;br /&gt;
   // we create the added hypothesis a = b&lt;br /&gt;
   final Set&amp;lt;Predicate&amp;gt; addedHyps = Collections.singleton(aEqb);&lt;br /&gt;
   // we hide a &amp;lt;= b and b &amp;lt;= a&lt;br /&gt;
   final ISelectionHypAction hideIneqs = ProverFactory.makeHideHypAction(Arrays.asList(aLEb, bLEa));&lt;br /&gt;
   // we create our antecedent to be used in our proof rule&lt;br /&gt;
   final IAntecedent antecedent = ProverFactory.makeAntecedent(null, addedHyps, hideIneqs);&lt;br /&gt;
&lt;br /&gt;
* make the proof rule to return&lt;br /&gt;
   &lt;br /&gt;
   // We do not forget to say that a &amp;lt;= b (aLEb) and b &amp;lt;= a (bLEa) are needed for our rule to be applied&lt;br /&gt;
   final Set&amp;lt;Predicate&amp;gt; neededHyps = new HashSet&amp;lt;Predicate&amp;gt;();&lt;br /&gt;
   neededHyps.addAll(Arrays.asList(aLEb, bLEa));&lt;br /&gt;
 &lt;br /&gt;
   // We return the proof rule corresponding to DBL_INEQ&lt;br /&gt;
   return ProverFactory.makeProofRule(this, input, null, neededHyps, &amp;quot;Inequality Rewrites&amp;quot;, antecedent);&lt;br /&gt;
 &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=== Step5 ===&lt;br /&gt;
&lt;br /&gt;
As our input is actually a SinglePredInput, which as its name describes, holds a predicate, our reasoner is actually a specialisation of the abstract class SinglePredInputReasoner.&lt;br /&gt;
Please check the other proposed (e.g. published) types of reasoners corresponding to existing inputs among :&lt;br /&gt;
* SingleExprInputReasoner,&lt;br /&gt;
* SinglePredInputReasoner,&lt;br /&gt;
* SingleStringInputReasoner,&lt;br /&gt;
* EmptyInputReasoner,&lt;br /&gt;
* ForwardInfReasoner,&lt;br /&gt;
* HypothesisReasoner,&lt;br /&gt;
* XProverInputReasoner.&lt;br /&gt;
&lt;br /&gt;
In our case, simply add the &amp;lt;tt&amp;gt;extends SinglePredInputReasoner&amp;lt;/tt&amp;gt; to the declaration of the reasoner class.&lt;br /&gt;
And this is all for our reasoner! Now let&#039;s add a tactic corresponding to it.&lt;br /&gt;
&lt;br /&gt;
=== Step6 ===&lt;br /&gt;
&lt;br /&gt;
Now that we have the reasoner DoubleInequalityReasoner, we need to create a tactic to call this reasoner when possible.&lt;br /&gt;
We want this reasoner, for more convenience, to be applied automatically. Thus we define an auto-tactic that will call our reasoner.&lt;br /&gt;
&lt;br /&gt;
* Add the extension point &amp;lt;tt&amp;gt;org.eventb.core.seqprover.autoTactics&amp;lt;/tt&amp;gt; to our plugin, &lt;br /&gt;
* create an extension &#039;&#039;autoTactic&#039;&#039; for a new tactic we will create here with :&lt;br /&gt;
:- &#039;&#039;id : dblIneqTac&#039;&#039;,&amp;lt;br&amp;gt;&lt;br /&gt;
:- &#039;&#039;name : Double Inequality Tactic&#039;&#039;,&amp;lt;br&amp;gt;&lt;br /&gt;
:- &#039;&#039;description : Applies Double Inequality Rule&#039;&#039;,&amp;lt;br&amp;gt;&lt;br /&gt;
:- &#039;&#039;auto : place the boolean to &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; to let the tactic be automatic&#039;&#039;,&amp;lt;br&amp;gt;&lt;br /&gt;
:- &#039;&#039;post : place the boolean to &amp;lt;tt&amp;gt;true&amp;lt;/tt&amp;gt; so the tactic will no execute as a post tactic&#039;&#039;,&amp;lt;br&amp;gt;&lt;br /&gt;
:- And now it remains the tactic &#039;&#039;class&#039;&#039; to create. So, create the tactic class &amp;lt;tt&amp;gt;DoubleInequalityTactic&amp;lt;/tt&amp;gt; which &amp;lt;tt&amp;gt;implements ITactic&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this tactic, what we have to do is to calculate if the current proof tree node contains an application of the reasoner, and if it is the case, call the reasoner.&lt;br /&gt;
You can see that the only method to implement is : &amp;lt;tt&amp;gt;apply(IProofTreeNode ptNode, IProofMonitor pm)&amp;lt;/tt&amp;gt;&lt;br /&gt;
We will detail here, what one should do in this method:&lt;br /&gt;
&lt;br /&gt;
 @Override&lt;br /&gt;
 public Object apply(IProofTreeNode ptNode, IProofMonitor pm) {&lt;br /&gt;
&lt;br /&gt;
* First, we search for double inequalities &#039;&#039;a &amp;lt;= b&#039;&#039; and &#039;&#039;b &amp;lt;= a&#039;&#039; in the selected hypotheses. To search it, we traverse all the selected hypotheses via &amp;lt;tt&amp;gt;sequent.selectedHypIterable()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 final IProverSequent sequent = ptNode.getSequent();&lt;br /&gt;
 final FormulaFactory ff = sequent.getFormulaFactory();&lt;br /&gt;
   for (Predicate hyp : sequent.selectedHypIterable()) {&lt;br /&gt;
&lt;br /&gt;
* Then, when we encounter one hypothesis of the form E &amp;lt;= F (e.g. hypothesis.getTag() == Formula.LE), then we build the hypothesis F &amp;lt;= E :&lt;br /&gt;
 	if (hyp.getTag() == Formula.LE) {&lt;br /&gt;
 		final RelationalPredicate aLEb = (RelationalPredicate) hyp;&lt;br /&gt;
 		final Expression a = aLEb.getLeft();&lt;br /&gt;
 		final Expression b = aLEb.getRight();&lt;br /&gt;
 		final RelationalPredicate bLEa = ff.makeRelationalPredicate(Formula.LE, b, a, null);&lt;br /&gt;
&lt;br /&gt;
* if the sequent contains this latter hypothesis, we call the reasoner DoubleInequalityReasoner (encapsulated in a tactic)&lt;br /&gt;
 		if(sequent.containsHypothesis(bLEa)) {&lt;br /&gt;
                 	return callDblIneqReasoner(ptNode, aLEb, pm);&lt;br /&gt;
  		}&lt;br /&gt;
 	}&lt;br /&gt;
  }&lt;br /&gt;
  return &amp;quot;no double inequality hypotheses found&amp;quot;;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
As we need to construct the SinglePredInput with the hypothesis a &amp;lt;= b, and then apply our reasoner, the usual way to do this, is to encapsulate this reasoner call into a tactic. There is a facility to do that offered by &amp;lt;tt&amp;gt;BasicTactics.reasonerTac&amp;lt;/tt&amp;gt;. Thus we write the following :&lt;br /&gt;
&lt;br /&gt;
 1  private Object callDblIneqReasoner(IProofTreeNode ptNode, final RelationalPredicate inputPred, IProofMonitor pm) {&lt;br /&gt;
 2   final ITactic dblIneqTac = BasicTactics.reasonerTac(new DoubleInequalityReasoner(), new SinglePredInput(inputPred));&lt;br /&gt;
 3   return dblIneqTac.apply(ptNode, pm);&lt;br /&gt;
 4  }&lt;br /&gt;
where at line 2 we encapsulate the reasoner call, and at line 3, we apply the reasoner.&lt;br /&gt;
&lt;br /&gt;
=== Conclusion ===&lt;br /&gt;
That&#039;s it for the addition of reasoners in the seqprover.&lt;br /&gt;
Now you can try it by creating a simple context for example, with the two hypotheses as axioms and another theorem such as a = 2.&amp;lt;br&amp;gt;&lt;br /&gt;
By running the auto-provers, you should see that the Inequality Rewrites is applied.&lt;br /&gt;
&lt;br /&gt;
N.B: if you don&#039;t see any application of our reasoner, you might have forgotten to select the corresponding tactic to the auto tactic profile which is applied.&lt;br /&gt;
Go to &#039;&#039;Window &amp;gt; Prefences&#039;&#039;, and then in &#039;&#039;Event-B category &amp;gt; Sequent Prover&#039;&#039;, select the &amp;quot;Auto/Post Tactic&amp;quot; preferences and create a new profile and add the &#039;&#039;Double Inequality Tactic&#039;&#039; to it.&amp;lt;br /&amp;gt;&lt;br /&gt;
You can select it from the list on the left within the profile editor (see the picture below):&lt;br /&gt;
&lt;br /&gt;
[[Image:DBL_INEQ_Preferences.png|650px]]&lt;br /&gt;
&lt;br /&gt;
{{Navigation|Previous= [[Extending_the_Proof_Obligation_Generator(How_to_extend_Rodin_Tutorial) | Generating the proof obligations]] | Up= [[Plug-in_Tutorial|How to extend Rodin Tutorial (Index)]]}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer documentation|*Index]]&lt;br /&gt;
[[Category:Rodin Platform|*Index]]&lt;br /&gt;
[[Category:Tutorial|*Index]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14476</id>
		<title>Theory Plug-in Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14476"/>
		<updated>2021-07-15T07:15:37Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Update path to file used to generate update site&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides some documentation for developers of the Theory plug-in. Documentation for users of the plug-in is available in [[Theory Plug-in|this page]].&lt;br /&gt;
&lt;br /&gt;
== Eclipse setup ==&lt;br /&gt;
&lt;br /&gt;
* Clone the [https://sourceforge.net/p/rodin-b-sharp/theory git repository] from Sourceforge&lt;br /&gt;
* Import the subdirectories of the git repository in Eclipse (each subdirectory corresponds to an Eclipse project providing an Eclipse feature or plug-in)&lt;br /&gt;
* Open &amp;lt;code&amp;gt;org.eventb.theory.feature/org.eventb.theory.feature.target&amp;lt;/code&amp;gt; and click on &#039;&#039;Set as Active Target Platform&#039;&#039;, at the top right of the window; this assumes that the [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/org.rodinp.dev-3.5.0-9f39f1653.zip/download Rodin target platform] has been downloaded and put in &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt;: if this location is not available, or if another version of Rodin is should be targeted, edit the &amp;lt;code&amp;gt;.target&amp;lt;/code&amp;gt; file accordingly&lt;br /&gt;
&lt;br /&gt;
== Release checklist ==&lt;br /&gt;
&lt;br /&gt;
To release a new version of the plug-in:&lt;br /&gt;
&lt;br /&gt;
* Tag the last commit with the version number (remember to pass the &amp;lt;code&amp;gt;--tags&amp;lt;/code&amp;gt; flag to &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; to publish it)&lt;br /&gt;
* On Sourceforge, create a new folder with the version number in the [https://sourceforge.net/projects/rodin-b-sharp/files/Plugin_Theory/ plug-in&#039;s directory] and upload the files of the update site there (they are built in &amp;lt;code&amp;gt;org.eventb.theory.repository/target/repository&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Update the composite Eclipse repository that provides the Rodin plug-ins:&lt;br /&gt;
** Clone the &amp;lt;code&amp;gt;RodinUpdateSite&amp;lt;/code&amp;gt; folder from the [https://sourceforge.net/p/rodin-b-sharp/svn/HEAD/tree/trunk/RodinUpdateSite/ Subversion repository] and import it in Eclipse&lt;br /&gt;
** Open the &amp;lt;code&amp;gt;composite/compSite.xml&amp;lt;/code&amp;gt; file, add a &amp;lt;code&amp;gt;&amp;amp;lt;repository&amp;amp;gt;&amp;lt;/code&amp;gt; line for the new version and follow the instructions in the file&#039;s comments to build the composite repository&lt;br /&gt;
** Connect with an SFTP client to &amp;lt;code&amp;gt;web.sourceforge.net&amp;lt;/code&amp;gt; (see [https://sourceforge.net/p/forge/documentation/SFTP#for-managing-project-web-space Sourceforge&#039;s documentation]) and upload the files built previously (&amp;lt;code&amp;gt;p2.index&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeArtifacts.jar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeContent.jar&amp;lt;/code&amp;gt;) in &amp;lt;code&amp;gt;/home/project-web/rodin-b-sharp/htdocs/updates&amp;lt;/code&amp;gt;&lt;br /&gt;
* Publish the release notes in the [[Theory Release History]] page, update the table in the [[Rodin Platform Releases]] page and list the release in [[Template:Dev News]] (it is included in the front page)&lt;br /&gt;
* Announce the release on the Rodin mailing lists rodin-b-sharp-user@lists.sourceforge.net and rodin-b-sharp-announce@lists.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer documentation]]&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=The_Use_of_Theories_in_Code_Generation&amp;diff=14466</id>
		<title>The Use of Theories in Code Generation</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=The_Use_of_Theories_in_Code_Generation&amp;diff=14466"/>
		<updated>2021-06-14T15:00:27Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add to Theory Plug-in category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Defining Translations Using The Theory Plug-in =&lt;br /&gt;
The theory plug-in is used to add mathematical extensions to Rodin. The theories are created, and deployed, and can then be used in any models in the workspace. When dealing with implementation level models, such as in Tasking Event-B, we need to consider how to translate newly added types and operators into code. We have augmented the theory interface with a Translation Rules section. This enables a user to define translation rules that map Event-B formulas to code.&lt;br /&gt;
== Translation Rules==&lt;br /&gt;
Code generation rules are specified in a theory file, which is created using the Theory plug-in. Figure 1 shows a pretty print of some of the translations rules that have been specified for the Ada code generator. In the figure we can see that the theory is given a name, and may import some other theories. Type parameters can be added, and we use them here to type the meta-variables. For instance, the meta-variable &#039;&#039;a&#039;&#039; is restricted to be an integer type, but meta-variable &#039;&#039;c&#039;&#039; can be any unspecified type, &#039;&#039;Q&#039;&#039;. Meta-variables are used in the translator rules for pattern matching.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;fig:Translation Rules&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:TheoryCGRules.png|center||caption text]]&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;Figure 1&#039;&#039;&#039;: Translation Rules&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Translator rules are templates. They are used in a pattern matching algorithm, in the Theory plug-in, invoked by the code generator. Event-B formulas are defined on the left hand side of the rule, and the code to be output (as text) appears on the right hand side of the matching rule. During translation an abstract syntax tree (AST) representation of the formula is used. The theory plug-in attempts to match the formulas in the rules with each syntactic element of the AST. As it does so it builds the textual output as a string, until the whole AST has been successfully matched. When a complete tree is matched, the target code is returned. If the AST is not matched, a warning is issued, and a string representation of the original formula is returned.&lt;br /&gt;
&lt;br /&gt;
== Type Rules for Code Generation ==&lt;br /&gt;
&lt;br /&gt;
The type rules section, shown in Figure 1, is where the relationship is defined, between Event-B types and the type system of the implementation.&lt;br /&gt;
&lt;br /&gt;
= Adding New (Implementation-Level) Types =&lt;br /&gt;
When we are working at abstraction levels close to the implementation level, we may make an implementation decision which requires the introduction of a new type to the development. We give an example of our approach, where we add a new array type, shown in Figure 2, and then define its translation to code.&lt;br /&gt;
&lt;br /&gt;
== An Array Type Definition ==&lt;br /&gt;
&amp;lt;div id=&amp;quot;fig:Extension with an Array Type&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:ArrayDef.png|center||caption text]]&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;Figure 2&#039;&#039;&#039;: Array Definition&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The array operator notation is defined in the expression array(s: P(T)); and the semantics is defined in the direct definition. arrayN constrains the arrays to be of fixed length. Array lookup, update, and constructor operators are subsequently defined. In the next step we need to define any translations required to implement the array in code.&lt;br /&gt;
&lt;br /&gt;
== Translation Rules ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Translation Rules for the Array Type&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Image:ArrayTrans.png|center||caption text]]&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;&#039;Figure 3&#039;&#039;&#039;: Translation Rules for the Array Type&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Figure 3 shows the Ada translation; beginning with the meta-variable definitions that are used for pattern matching in the translation rules. Each of the operators; &#039;&#039;newArray&#039;&#039;, and &#039;&#039;update&#039;&#039;, and an expression using the &#039;&#039;lookup&#039;&#039; operator, are mapped to their implementations on the right hand side of the rule. The &#039;&#039;Type Rules&#039;&#039; section describes the implementation&#039;s description of the &#039;&#039;arrayN&#039;&#039; type.&lt;br /&gt;
&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Exporting_and_importing_archives_containing_theories&amp;diff=14463</id>
		<title>Exporting and importing archives containing theories</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Exporting_and_importing_archives_containing_theories&amp;diff=14463"/>
		<updated>2021-06-14T14:57:18Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add to Theory Plug-in category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOCright}}&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Rodin 2.0 with theory feature provides support for developing theories. But sharing theories can be somewhat difficult if care is not taken for exporting and importing them. This is related to the fact that theories are always in a particular project called &amp;quot;MathExtensions&amp;quot;.&lt;br /&gt;
To understand the problem, let&#039;s say we have developed an Event-B project P and a theory T and want to make an archive in order to share them. The workspace looks like this:&lt;br /&gt;
&lt;br /&gt;
 + MathExtensions&lt;br /&gt;
   - T.tuf&lt;br /&gt;
   - T.dtf&lt;br /&gt;
   ...&lt;br /&gt;
 + P&lt;br /&gt;
   - C0.buc&lt;br /&gt;
   - m0.bum&lt;br /&gt;
   ...&lt;br /&gt;
&lt;br /&gt;
If we make a standard archive export of these projects (File &amp;gt; Export &amp;gt; Archive File), we will get a zip file containing the project P and the project MathExtensions.&lt;br /&gt;
&lt;br /&gt;
But then, the person who will import the archive into his workspace with the theory feature installed (File &amp;gt; Import &amp;gt; Existing Projects into Workspace &amp;gt; Select archive file), will already have a project named &amp;quot;MathExtensions&amp;quot; in the workspace. Thus, the import wizard will warn that &amp;quot;Some projects cannot be imported because they already exist in the workspace&amp;quot;, and theories of &amp;quot;MathExtensions&amp;quot; in the archive will not be imported. This page is dedicated to proposing workarounds for this problem.&lt;br /&gt;
&lt;br /&gt;
== Solution 1: theories at archive root ==&lt;br /&gt;
&lt;br /&gt;
When exporting, select option &amp;quot;Create only selected directories&amp;quot;, then select project P, but not project MathExtensions, only the T.* files in it, as shown below:&lt;br /&gt;
&lt;br /&gt;
[[Image:Export_P_Troot.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Then clean P and MathExtensions (Project &amp;gt; Clean).&lt;br /&gt;
&lt;br /&gt;
Then, import is done in two steps:&lt;br /&gt;
# import T: File &amp;gt; Import &amp;gt; Archive File select the archive, untick the P project, only select T.* files at the root, select to import into the MathExtensions as shown on the image below&lt;br /&gt;
# import P the standard way: File &amp;gt; Import &amp;gt; Existing Projects into Workspace &amp;gt; Select archive file &lt;br /&gt;
&lt;br /&gt;
[[Image:Import_P_Troot.png|500px]]&lt;br /&gt;
&lt;br /&gt;
Note: in this case we chose to only put the .tuf (theory unchecked file) and .bpr (proof file) into the archive, because other files (.tcf, .bpo, .bps) are generated upon build, and .dtf (deployed theory file) is generated when deploying T. It is also possible to put every T.* files in the archive, or only T.dtf. In any case, it is generally preferable to clean imported projects and the MathExtensions project.&lt;br /&gt;
&lt;br /&gt;
This solution is the most conservative one, as other theories that might exist in the importing workspace are conserved.&lt;br /&gt;
&lt;br /&gt;
== Solution 2: remove MathExtensions at import ==&lt;br /&gt;
&lt;br /&gt;
This second solution is the most simple but can be used only when the importer has not developed any theories.&lt;br /&gt;
It consists in exporting P and T the standard way, so that the archive contains P and MathExtensions projects. Then the importer simply deletes his empty MathExtensions project from the workspace before importing the standard way (File &amp;gt; Import &amp;gt; Existing Projects into Workspace &amp;gt; Select archive file).&lt;br /&gt;
&lt;br /&gt;
== Solution 3: temporary project ==&lt;br /&gt;
&lt;br /&gt;
This solution consists in creating a temporary project, for instance TempMathExtensions, then copying theory files to export in it. The exporter then makes a standard project archive with P and TempMathExtensions (and NOT MathExtensions).&lt;br /&gt;
&lt;br /&gt;
The importer can then import this archive the standard way (File &amp;gt; Import &amp;gt; Existing Projects into Workspace &amp;gt; Select archive file), then copy theory files from TempMathExtensions to MathExtensions, and finally delete TempMathExtensions. A clean of P and MathExtensions is then highly recommended.&lt;br /&gt;
&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Sharing_theories&amp;diff=14462</id>
		<title>Sharing theories</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Sharing_theories&amp;diff=14462"/>
		<updated>2021-06-14T14:56:25Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add to Theory Plug-in category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rodin 2.0+ with [[Theory_Plug-in | theory plug-in]] makes it possible to define extensions to the standard mathematical language, that is new operators and datatypes.&lt;br /&gt;
This page explains how to share your theories with the community and how to get theories developed by other people.&lt;br /&gt;
&lt;br /&gt;
== A SourceForge tracker for Theories ==&lt;br /&gt;
A new tracker has been created in the SourceForge site of the Rodin project to share theories:&lt;br /&gt;
&lt;br /&gt;
[http://sourceforge.net/tracker/?group_id=108850&amp;amp;atid=1558661 http://sourceforge.net/tracker/?group_id=108850&amp;amp;atid=1558661]&lt;br /&gt;
&lt;br /&gt;
== Sharing a Theory ==&lt;br /&gt;
&lt;br /&gt;
Sharing a theory can be achieved in the same way as adding an item in any other SourceForge tracker: by clicking the &amp;quot;Add new&amp;quot; link, then filling the form.&lt;br /&gt;
&lt;br /&gt;
As much as possible, non related theories should be provided in different artifacts (tracker items).&lt;br /&gt;
Before posting a new theory, it is recommended to check if the same or a similar one already exists. In this case, if your theory has something slightly different that you think worth sharing, please do so in the same tracker item, in order to keep related works together. The specificity of your theory can be briefly described in the field called &amp;quot;Description&amp;quot;, below the &amp;quot;File&amp;quot; upload form; more accurate descriptions will better fit in comments.&lt;br /&gt;
&lt;br /&gt;
A theory item is basically made of:&lt;br /&gt;
* a relevant title, clearly stating what kind of mathematical extensions are provided; &lt;br /&gt;
* a brief description of the contents (in the initial comment); &lt;br /&gt;
* a category indicating the area of the theory; if no existing category fits your contribution, leave the field at &amp;quot;None&amp;quot; and indicate in the comment the name of the new category you would like&lt;br /&gt;
* a group, indicating which version of Rodin the theory has been developed with&lt;br /&gt;
* one or more archives (see [[Exporting and importing archives containing theories]] for generating these archives)&lt;br /&gt;
&lt;br /&gt;
== Updating a new version ==&lt;br /&gt;
&lt;br /&gt;
New versions of a given theory shall be uploaded to the same tracker item as the original one, using the upload description field to describe evolutions.&lt;br /&gt;
&lt;br /&gt;
== Using a shared Theory ==&lt;br /&gt;
&lt;br /&gt;
After downloading the desired archive(s) from the list of attached files, import them into your Rodin workspace using one the techniques described in [[Exporting and importing archives containing theories]].&lt;br /&gt;
&lt;br /&gt;
The technique to use depends on how the archive has been generated. In any case, the goal is always the same: to put theory files (.tuf, .dtf, ...) from the archive into the &amp;lt;tt&amp;gt;MathExtensions&amp;lt;/tt&amp;gt; project of your workspace.&lt;br /&gt;
&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Theory_Release_History&amp;diff=14458</id>
		<title>Theory Release History</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Theory_Release_History&amp;diff=14458"/>
		<updated>2021-06-14T14:54:28Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add to Theory Plug-in category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Theory Plug-in]].&lt;br /&gt;
&lt;br /&gt;
Follow this page for the latest on the Theory plug-in. The user manual is also provided together with the installation details.&lt;br /&gt;
&lt;br /&gt;
===News===&lt;br /&gt;
* &#039;&#039;4th June 2021&#039;&#039;: [[#Version_4.0.2|Version 4.0.2]] is released. It requires Rodin 3.5.&lt;br /&gt;
* &#039;&#039;22th December 2020&#039;&#039;: [[#Version_4.0.1|Version 4.0.1]] is released. It requires Rodin 3.5.&lt;br /&gt;
* &#039;&#039;19th December 2014&#039;&#039;: [[#Version_3.0.0|Version 3.0.o]] is released. It requires Rodin 3.1.&lt;br /&gt;
* &#039;&#039;10th July 2014&#039;&#039;: [[#Version_2.0.2|Version 2.0.2]] is released. It requires Rodin 2.8.&lt;br /&gt;
* &#039;&#039;24th June 2014&#039;&#039;: [[#Version_2.0.1|Version 2.0.1]] is released. It requires Rodin 2.8.&lt;br /&gt;
* &#039;&#039;30th April 2014&#039;&#039;: [[#Version_2.0.0|Version 2.0.0]] is released. It requires Rodin 2.8. This release contains major changes in the features and accessibilities.&lt;br /&gt;
* &#039;&#039;20th April 2012&#039;&#039;: [[#Version_1.3.2|Version 1.3.2]] is released. It requires Rodin 2.4.&lt;br /&gt;
* &#039;&#039;15th August 2011&#039;&#039;: [[#Version_1.2|Version 1.2]] is released. It requires Rodin 2.2.2.&lt;br /&gt;
* &#039;&#039;6th August 2011&#039;&#039;: [[#Version_1.1|Version 1.1]] is released. It requires Rodin 2.2.2.&lt;br /&gt;
* &#039;&#039;8th July 2011&#039;&#039;: [[#Version_1.0|Version 1.0]] is released. It requires Rodin 2.2.&lt;br /&gt;
* &#039;&#039;22nd May 2011&#039;&#039;: [[#Version_0.8|Version 0.8]] released. It is based on Rodin 2.1.1.&lt;br /&gt;
* &#039;&#039;11th April 2011&#039;&#039;: [[#Version_0.7|Version 0.7]] released. It is based on Rodin 2.1.1.&lt;br /&gt;
* &#039;&#039;6th January 2011&#039;&#039;: [[#Version_0.6|Version 0.6]] released. It is based on Rodin 2.0.1.&lt;br /&gt;
* &#039;&#039;28th October 2010&#039;&#039;: [[#Version_0.5|Version 0.5]] released. It is based on Rodin 2.0.&lt;br /&gt;
&lt;br /&gt;
===Releases===&lt;br /&gt;
===== Version 4.0.2 =====&lt;br /&gt;
&#039;&#039;4th June 2021&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.5&lt;br /&gt;
* Bug fixes:&lt;br /&gt;
** Datatypes that have several type parameters are now serialized in the right order; it fixes some issues with proofs and proof replay.&lt;br /&gt;
** Manually applied inference and rewrite rules are now replayed correctly (in some cases, their replay was displayed as uncertain).&lt;br /&gt;
&lt;br /&gt;
===== Version 4.0.1 =====&lt;br /&gt;
&#039;&#039;22th December 2020&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.5&lt;br /&gt;
* Bug fixes:&lt;br /&gt;
** The theory plugin now takes into account updates in theories, as well as creating a theory after using it (there was a cache issue).&lt;br /&gt;
** The error messages at launch about rule-based provers failing to find the context of the proof have been removed.&lt;br /&gt;
** The dropdown list in theory imports is now usable (there was an off-by-one issue when selecting an element in the list).&lt;br /&gt;
** Manually applying an inference rule no longer throws a NullPointerException.&lt;br /&gt;
** It is now possible to rename theories.&lt;br /&gt;
** The TheoryPath creation dialog box has been simplified.&lt;br /&gt;
* Optimizations:&lt;br /&gt;
** The proving interface is now much more responsive, even when a theory contains a lot of rewrite rules (we have implemented a cache of the places where a rewrite rule can apply).&lt;br /&gt;
** The theory plugin now generates much simpler WD conditions, especially for the pred, succ, prj1, prj2, and id operators.&lt;br /&gt;
&lt;br /&gt;
===== Version 4.0.0-RC1 =====&lt;br /&gt;
&#039;&#039;10th April 2017&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target: Rodin 3.2&lt;br /&gt;
* AST Extensions (4.0.0) Major API change.&lt;br /&gt;
** Compatibility upgrade to Rodin 3.2&lt;br /&gt;
** Support for get operator position for INFIX extended predicate operators.&lt;br /&gt;
** Improve pattern matching for associative operators.&lt;br /&gt;
* Theory plug-in Branding (0.0.1) Initial version&lt;br /&gt;
* Theory Core (4.0.0) Internal implementation changes.&lt;br /&gt;
** Compatibility upgrade to Rodin 3.2&lt;br /&gt;
** Support for INFIX extended predicate operators.&lt;br /&gt;
** Various bugs fixed.&lt;br /&gt;
* Theory help (2.0.0) User documentations.&lt;br /&gt;
* Theory Keyboard (0.0.1) Initial version (A special plug-in for typesetting Theory).&lt;br /&gt;
** Support for typesetting Real arithmetics (plus, unary minus, multiply, divide, less than, less than or equal, greater than, greater than or equal).&lt;br /&gt;
* Theory Rule-based Prover (4.0.0)&lt;br /&gt;
** Reasoners&#039; input does not contain the proof-obligation context.&lt;br /&gt;
** Use the current sequent&#039;s origin to get the proof-obligation context.&lt;br /&gt;
** Bug fixed: translate formula to ensure they have the same formula factory.&lt;br /&gt;
** Added version numbers for reasoners.&lt;br /&gt;
** Automatic rewrite and inference tactics are re-implemented so that each rule application is visible in proof trees.&lt;br /&gt;
* Theory UI (3.0.0)&lt;br /&gt;
&lt;br /&gt;
===== Version 3.0.0 =====&lt;br /&gt;
&#039;&#039;17th December 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 3.1&lt;br /&gt;
* migration changes to Rodin 3.1&lt;br /&gt;
&lt;br /&gt;
===== Version 2.0.2 =====&lt;br /&gt;
&#039;&#039;10th July 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.8&lt;br /&gt;
* bug fixes. &lt;br /&gt;
&lt;br /&gt;
===== Version 2.0.1 =====&lt;br /&gt;
&#039;&#039;24th June 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.8&lt;br /&gt;
* bug fixes. &lt;br /&gt;
&lt;br /&gt;
===== Version 2.0.0 =====&lt;br /&gt;
&#039;&#039;30th April 2014&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.8&lt;br /&gt;
* Major changes in the usability.&lt;br /&gt;
* Important bug fixes. &lt;br /&gt;
&lt;br /&gt;
===== Version 1.3.2 =====&lt;br /&gt;
&#039;&#039;20th April 2012&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.4&lt;br /&gt;
* Important bug fixes. &lt;br /&gt;
* Improvement of deployment and un-deployment wizards&lt;br /&gt;
&lt;br /&gt;
===== Version 1.2 =====&lt;br /&gt;
&#039;&#039;15th August 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.2.2&lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Added capability to instantiate multiple theorems at once.&lt;br /&gt;
* Added automatic tactic for expanding operator definitions RbPxd·&lt;br /&gt;
&lt;br /&gt;
===== Version 1.1 =====&lt;br /&gt;
&#039;&#039;6th August 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.2.2&lt;br /&gt;
* Theory library first version. &lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Improved UI.&lt;br /&gt;
&lt;br /&gt;
===== Version 1.0 =====&lt;br /&gt;
&#039;&#039;8th July 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.2&lt;br /&gt;
&lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Added import relationships between theories. &lt;br /&gt;
* Added experimental support for recursive definitions.&lt;br /&gt;
* Improved project as well as workspace scope for mathematical and prover extensions.&lt;br /&gt;
* Added tactic (xd) to expand all definitions.&lt;br /&gt;
* Fixed support for polymorphic theorems.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.8 =====&lt;br /&gt;
&#039;&#039;22nd May 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Release target : Rodin 2.1.1&lt;br /&gt;
&lt;br /&gt;
* Bug fixes. &lt;br /&gt;
* Added import relationships between theories. &lt;br /&gt;
* Added experimental support for recursive definitions.&lt;br /&gt;
* Added project as well as workspace scope for mathematical and prover extensions.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.7 =====&lt;br /&gt;
&#039;&#039;11th April 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bug fixes. Fixed for Rodin 2.1.1.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.6 =====&lt;br /&gt;
&#039;&#039;6th January 2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Minor bug fixes and improvements to theories pretty printer.&lt;br /&gt;
&lt;br /&gt;
===== Version 0.5 =====&lt;br /&gt;
&#039;&#039;28th October 2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the first release of the Theory plug-in with support for mathematical as well as prover extensions.&lt;br /&gt;
&lt;br /&gt;
===Features Requests and Bugs===&lt;br /&gt;
Please do not hesitate to raise any issues with regards to usability as well as efficiency. Finally, please remember to report any bugs through the SourceForge portal.&lt;br /&gt;
&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Theory_Plug-in&amp;diff=14456</id>
		<title>Theory Plug-in</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Theory_Plug-in&amp;diff=14456"/>
		<updated>2021-06-14T14:53:58Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Add to Theory Plug-in category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Return to [[Rodin Plug-ins]]&lt;br /&gt;
&lt;br /&gt;
See also [[Theory Release History]]&lt;br /&gt;
&lt;br /&gt;
The Theory plug-in provides capabilities to extend the Event-B language and the proving infrastructure in a familiar fashion to Rodin users. This page provides useful information about the plug-in and its capabilities.&lt;br /&gt;
&lt;br /&gt;
===Motivation===&lt;br /&gt;
Up to Rodin v2.0, the mathematical language used in Event-B has been fixed. As such, it was not possible to define reusable polymorphic operators. A workaround was to define any required operators as set constructs in contexts. Originally, contexts were supposed to provide a parametrization of machines. The aforementioned limitations of the Event-B language lead to users to use contexts for purposes for which they were not intentionally devised. Examples of operators that can be useful to users include the sequence operator (which was present in classical B mathematical language) and the bag operator.&lt;br /&gt;
&lt;br /&gt;
In Rodin v2.0, support for customised syntactic symbols was introduced. The Theory plug-in, as a result, evolved from being just a component to define rewrite rules to a versatile platform to define and validate proof and language extensions.&lt;br /&gt;
&lt;br /&gt;
The latest Theory plug-in is released for Rodin v2.8.&lt;br /&gt;
&lt;br /&gt;
===Overview===&lt;br /&gt;
The Theory plug-in is a Rodin extension that provides the facility to define &#039;&#039;&#039;&#039;&#039;mathematical extensions&#039;&#039;&#039;&#039;&#039; as well as &#039;&#039;&#039;&#039;&#039;prover extensions&#039;&#039;&#039;&#039;&#039;.&lt;br /&gt;
Mathematical extensions are new operator definitions and new datatype definitions and axiomatic definitions. Operator definitions can be expression operators (e.g., &#039;&#039;card&#039;&#039;) and predicate operators (e.g., &#039;&#039;finite&#039;&#039;). Datatypes extensions can be used to define enumerated datatypes (e.g., &#039;&#039;DIRECTION&#039;&#039;) as well as inductive datatypes (e.g., &#039;&#039;Tree&#039;&#039;). Axiomatic definitions can be used to define new data types like &amp;quot;REAL&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The placeholder for mathematical and prover extensions is a Theory construct which looks similar to contexts and machines. A theory can include datatypes definitions, operator definitions, axiomatic definitions, inference and rewrite rules as well as polymorphic theorems. The [http://wiki.event-b.org/images/Theory_Plugin.pdf user manual] provides a guide to developing and using theories.&lt;br /&gt;
&lt;br /&gt;
=== Installation &amp;amp; Update ===&lt;br /&gt;
&lt;br /&gt;
The installation or update for the Theory plug-in is available under the main Rodin Update site (http://rodin-b-sharp.sourceforge.net/updates) under the category &amp;quot;Modelling Extensions&amp;quot;. Like always, after the installation, restarting Rodin is recommended.&lt;br /&gt;
&lt;br /&gt;
===User Manual===&lt;br /&gt;
The user manual is available here: [http://wiki.event-b.org/images/Theory_Plugin.pdf Theory User Manual]. Below is the presentation of the sequence theory which its description can be found in the user manual:&lt;br /&gt;
&lt;br /&gt;
[[image:SeqTheory.png|center|thumb|1500px|&#039;&#039;&#039;Theory of Sequence&#039;&#039;&#039;]]&lt;br /&gt;
&lt;br /&gt;
===Standard Library===&lt;br /&gt;
In this section, you find a set of standard theories and some models using some of these theories. &lt;br /&gt;
&lt;br /&gt;
The standard library of the theories is available to download:&lt;br /&gt;
 [https://sourceforge.net/projects/rodin-b-sharp/files/Theory_StdLib/StandardTheory0.1.zip/download here] for Rodin2.8 and&lt;br /&gt;
 [https://sourceforge.net/projects/rodin-b-sharp/files/Theory_StdLib/StandardTheory0.2.zip/download here] for Rodin3.1. &lt;br /&gt;
This library includes:&lt;br /&gt;
* BasicTheory project: including theories of BinaryTree, BoolOps, List, PEANO, SUMandPRODUCT and Seq.&lt;br /&gt;
* RelationOrderTheory project: including theories of Connectivity, FixPoint, Relation, Well_Fondation, closure, complement and galois.&lt;br /&gt;
* RealTheory project: including theory of Real.&lt;br /&gt;
&lt;br /&gt;
Also it includes three simple Event-B models that use some of the theories: &lt;br /&gt;
* Data project: using SUMandPRODUCT theory &lt;br /&gt;
* Queue project: using Seq theory&lt;br /&gt;
* SimpleNetwork project: using closure theory&lt;br /&gt;
&lt;br /&gt;
In order to keep the POs discharged, you need to install &amp;quot;Atelier B provers&amp;quot; as well.&lt;br /&gt;
&lt;br /&gt;
===Capabilities===&lt;br /&gt;
The Theory plug-in has the following capabilities:&lt;br /&gt;
&lt;br /&gt;
* Theory Definition:&lt;br /&gt;
** Definition of datatypes: datatypes are defined by supplying the types on which they are polymorphic, a set of constructors one of which has to be a base constructor. Each constructor may or may not have destructors.&lt;br /&gt;
** Definition of operators: operators can be defined as predicate or expression operators. An expression operator is an operator that &amp;quot;returns&amp;quot; an expression, an example existing operator is &#039;&#039;card&#039;&#039;. A predicate operator is one that &amp;quot;returns&amp;quot; a predicate, an example existing predicate operator is &#039;&#039;finite&#039;&#039;.&lt;br /&gt;
** Definition of axiomatic definitions: axiomatic definitions are defined by supplying the types, a set of operators, and a set of axioms.&lt;br /&gt;
** Definition of rewrite rules: rewrite rules are one-directional equalities that can be applied from left to right. The Theory plug-in can be used to define rewrite rules.&lt;br /&gt;
** Definition of inference rules: inference rules can be used to infer new hypotheses, split a goal into sub-goals or discharge sequents.&lt;br /&gt;
** Definition of polymorphic theorems: theorems can be defined and validated once, and can then be imported into sequents of proof obligations if a suitable type instantiation is available.&lt;br /&gt;
** Validation of extensions: where appropriate, proof obligations are generated to ensure soundness of extensions. This includes, proof obligations for validity of inference and rewrite rules, as well as proof obligations to validate operator properties such as associativity and commutativity.&lt;br /&gt;
*Theory Deployment: this step signifies that a theory is ready for use. Theories can be deployed after they have been optionally validated by the user. It is strongly advisable to discharge all proof obligations before deployment.&lt;br /&gt;
Once a theory has been deployed to its designated project, all its extensions (mathematical and prover extensions) can be used in models.&lt;br /&gt;
&lt;br /&gt;
===Insider Look===&lt;br /&gt;
The Theory plug-in partially satisfies the requirements outlined in the following document:&lt;br /&gt;
* [http://deploy-eprints.ecs.soton.ac.uk/80/ Abrial, Jean-Raymond and Butler, Michael and Schmalz, Matthias and Hallerstede, Stefan and Voisin, Laurent. Mathematical Extensions Proposal]&lt;br /&gt;
&lt;br /&gt;
A more accurate description of the implemented functionalities of the plug-in can be found in the following document:&lt;br /&gt;
* [http://deploy-eprints.ecs.soton.ac.uk/251/ Michael Butler, Issam Maamria. Mathematical Extensions Summary]&lt;br /&gt;
&lt;br /&gt;
The following two papers describe rewriting and well-definedness issues that has to be accounted for:&lt;br /&gt;
&lt;br /&gt;
* [http://eprints.ecs.soton.ac.uk/18269/ Issam Maamria, Michael Butler, Andrew Edmunds, and Abdolbaghi Rezazadeh. On an Extensible Rule-based Prover for Event-B, ABZ&#039;2010.]&lt;br /&gt;
* [http://eprints.ecs.soton.ac.uk/21221/ Issam Maamria, Michael Butler. Rewriting and Well-Definedness within a Proof System.]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Plugin]]&lt;br /&gt;
[[Category:User documentation]]&lt;br /&gt;
[[Category:Proof]]&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14455</id>
		<title>Theory Plug-in Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14455"/>
		<updated>2021-06-14T14:52:40Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Fix some links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides some documentation for developers of the Theory plug-in. Documentation for users of the plug-in is available in [[Theory Plug-in|this page]].&lt;br /&gt;
&lt;br /&gt;
== Eclipse setup ==&lt;br /&gt;
&lt;br /&gt;
* Clone the [https://sourceforge.net/p/rodin-b-sharp/theory git repository] from Sourceforge&lt;br /&gt;
* Import the subdirectories of the git repository in Eclipse (each subdirectory corresponds to an Eclipse project providing an Eclipse feature or plug-in)&lt;br /&gt;
* Open &amp;lt;code&amp;gt;org.eventb.theory.feature/org.eventb.theory.feature.target&amp;lt;/code&amp;gt; and click on &#039;&#039;Set as Active Target Platform&#039;&#039;, at the top right of the window; this assumes that the [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/org.rodinp.dev-3.5.0-9f39f1653.zip/download Rodin target platform] has been downloaded and put in &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt;: if this location is not available, or if another version of Rodin is should be targeted, edit the &amp;lt;code&amp;gt;.target&amp;lt;/code&amp;gt; file accordingly&lt;br /&gt;
&lt;br /&gt;
== Release checklist ==&lt;br /&gt;
&lt;br /&gt;
To release a new version of the plug-in:&lt;br /&gt;
&lt;br /&gt;
* Tag the last commit with the version number (remember to pass the &amp;lt;code&amp;gt;--tags&amp;lt;/code&amp;gt; flag to &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; to publish it)&lt;br /&gt;
* On Sourceforge, create a new folder with the version number in the [https://sourceforge.net/projects/rodin-b-sharp/files/Plugin_Theory/ plug-in&#039;s directory] and upload the files of the update site there (they are built in &amp;lt;code&amp;gt;org.eventb.theory.repository/target/repository&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Update the composite Eclipse repository that provides the Rodin plug-ins:&lt;br /&gt;
** Clone the &amp;lt;code&amp;gt;RodinUpdateSite&amp;lt;/code&amp;gt; folder from the [https://sourceforge.net/p/rodin-b-sharp/svn/HEAD/tree/trunk/RodinUpdateSite/ Subversion repository] and import it in Eclipse&lt;br /&gt;
** Open the &amp;lt;code&amp;gt;compSite.xml&amp;lt;/code&amp;gt; file, add a &amp;lt;code&amp;gt;&amp;amp;lt;repository&amp;amp;gt;&amp;lt;/code&amp;gt; line for the new version and follow the instructions in the file&#039;s comments to build the composite repository&lt;br /&gt;
** Connect with an SFTP client to &amp;lt;code&amp;gt;web.sourceforge.net&amp;lt;/code&amp;gt; (see [https://sourceforge.net/p/forge/documentation/SFTP#for-managing-project-web-space Sourceforge&#039;s documentation]) and upload the files built previously (&amp;lt;code&amp;gt;p2.index&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeArtifacts.jar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeContent.jar&amp;lt;/code&amp;gt;) in &amp;lt;code&amp;gt;/home/project-web/rodin-b-sharp/htdocs/updates&amp;lt;/code&amp;gt;&lt;br /&gt;
* Publish the release notes in the [[Theory Release History]] page, update the table in the [[Rodin Platform Releases]] page and list the release in [[Template:Dev News]] (it is included in the front page)&lt;br /&gt;
* Announce the release on the Rodin mailing lists rodin-b-sharp-user@lists.sourceforge.net and rodin-b-sharp-announce@lists.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer documentation]]&lt;br /&gt;
[[Category:Theory Plug-in]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Category:Theory_Plug-in&amp;diff=14452</id>
		<title>Category:Theory Plug-in</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Category:Theory_Plug-in&amp;diff=14452"/>
		<updated>2021-06-14T14:51:10Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: Create category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Plugin]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
	<entry>
		<id>https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14451</id>
		<title>Theory Plug-in Developer Documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.event-b.org/index.php?title=Theory_Plug-in_Developer_Documentation&amp;diff=14451"/>
		<updated>2021-06-14T14:45:51Z</updated>

		<summary type="html">&lt;p&gt;Guillaume: New page with info about Eclipse setup and release process&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides some documentation for developers of the Theory plug-in. Documentation for users of the plug-in is available in [[Theory Plug-in|this page]].&lt;br /&gt;
&lt;br /&gt;
== Eclipse setup ==&lt;br /&gt;
&lt;br /&gt;
* Clone the [https://sourceforge.net/p/rodin-b-sharp/theory git repository] from Sourceforge&lt;br /&gt;
* Import the subdirectories of the git repository in Eclipse (each subdirectory corresponds to an Eclipse project providing an Eclipse feature or plug-in)&lt;br /&gt;
* Open &amp;lt;code&amp;gt;org.eventb.theory.feature/org.eventb.theory.feature.target&amp;lt;/code&amp;gt; and click on &#039;&#039;Set as Active Target Platform&#039;&#039;, at the top right of the window; this assumes that the [https://sourceforge.net/projects/rodin-b-sharp/files/Core_Rodin_Platform/3.5/org.rodinp.dev-3.5.0-9f39f1653.zip/download Rodin target platform] has been downloaded and put in &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt;: if this location is not available, or if another version of Rodin is should be targeted, edit the &amp;lt;code&amp;gt;.target&amp;lt;/code&amp;gt; file accordingly&lt;br /&gt;
&lt;br /&gt;
== Release checklist ==&lt;br /&gt;
&lt;br /&gt;
To release a new version of the plug-in:&lt;br /&gt;
&lt;br /&gt;
* Tag the last commit with the version number (remember to pass the &amp;lt;code&amp;gt;--tags&amp;lt;/code&amp;gt; flag to &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; to publish it)&lt;br /&gt;
* On Sourceforge, create a new folder with the version number in the [https://sourceforge.net/projects/rodin-b-sharp/files/Plugin_Theory/ plug-in&#039;s directory] and upload the files of the update site there (they are built in &amp;lt;code&amp;gt;org.eventb.theory.repository/target/repository&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Update the composite Eclipse repository that provides the Rodin plug-ins:&lt;br /&gt;
** Clone the &amp;lt;code&amp;gt;RodinUpdateSite&amp;lt;/code&amp;gt; folder from the [https://sourceforge.net/p/rodin-b-sharp/svn/HEAD/tree/trunk/RodinUpdateSite/ Subversion repository] and import it in Eclipse&lt;br /&gt;
** Open the &amp;lt;code&amp;gt;compSite.xml&amp;lt;/code&amp;gt; file, add a &amp;lt;code&amp;gt;&amp;amp;lt;repository&amp;amp;gt;&amp;lt;/code&amp;gt; line for the new version and follow the instructions in the file&#039;s comments to build the composite repository&lt;br /&gt;
** Connect with an SFTP client to &amp;lt;code&amp;gt;web.sourceforge.net&amp;lt;/code&amp;gt; (see [https://sourceforge.net/p/forge/documentation/SFTP#for-managing-project-web-space Sourceforge&#039;s documentation]) and upload the files built previously (&amp;lt;code&amp;gt;p2.index&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeArtifacts.jar&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;compositeContent.jar&amp;lt;/code&amp;gt;) in &amp;lt;code&amp;gt;/home/project-web/rodin-b-sharp/htdocs/updates&amp;lt;/code&amp;gt;&lt;br /&gt;
* Publish the release notes in the [[Theory Plug-in]] page, update the table in the [[Rodin Platform Releases]] page and list the release in [[Template:Dev News]] (it is included in the front page)&lt;br /&gt;
* Announce the release on the Rodin mailing lists rodin-b-sharp-user@lists.sourceforge.net and rodin-b-sharp-announce@lists.sourceforge.net&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer documentation]]&lt;/div&gt;</summary>
		<author><name>Guillaume</name></author>
	</entry>
</feed>