<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Tiddly Formal Math</title>
<link>http://formalmath.tiddlyspot.com</link>
<description>a TiddlyWiki rendering of the IsarMathLib  project</description>
<language>en-us</language>
<copyright>Copyright 2008 Slawekk</copyright>
<pubDate>Wed, 29 Oct 2008 23:55:27 GMT</pubDate>
<lastBuildDate>Wed, 29 Oct 2008 23:55:27 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>TiddlyWiki 2.2.6</generator>
<item>
<title>UploadLog</title>
<description>&lt;table class=&quot;twtable&quot;&gt;&lt;tbody&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;th align=&quot;center&quot;&gt;date&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;user&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;location&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;storeUrl&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;uploadDir&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;toFilename&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;backupdir&lt;/th&gt;&lt;th align=&quot;center&quot;&gt;origin&lt;/th&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;18/11/2007 10:05:19&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a tiddlylink=&quot;YourName&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#YourName&quot; href=&quot;http://formalmath.tiddlyspot.com#YourName&quot; class=&quot;externalLink&quot;&gt;YourName&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to file:///home/slawek/Desktop/formalmath.html&quot; href=&quot;file:///home/slawek/Desktop/formalmath.html&quot; class=&quot;externalLink&quot;&gt;formalmath.html&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;18/11/2007 10:16:58&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a tiddlylink=&quot;YourName&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#YourName&quot; href=&quot;http://formalmath.tiddlyspot.com#YourName&quot; class=&quot;externalLink&quot;&gt;YourName&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/#author:true&quot; href=&quot;http://formalmath.tiddlyspot.com/#author:true&quot; class=&quot;externalLink&quot;&gt;/&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;18/11/2007 10:23:21&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a tiddlylink=&quot;YourName&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#YourName&quot; href=&quot;http://formalmath.tiddlyspot.com#YourName&quot; class=&quot;externalLink&quot;&gt;YourName&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/#author:true&quot; href=&quot;http://formalmath.tiddlyspot.com/#author:true&quot; class=&quot;externalLink&quot;&gt;/&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;ok&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;18/11/2007 10:43:13&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a tiddlylink=&quot;YourName&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#YourName&quot; href=&quot;http://formalmath.tiddlyspot.com#YourName&quot; class=&quot;externalLink&quot;&gt;YourName&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/#author:true&quot; href=&quot;http://formalmath.tiddlyspot.com/#author:true&quot; class=&quot;externalLink&quot;&gt;/&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;19/01/2008 21:24:36&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a tiddlylink=&quot;YourName&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#YourName&quot; href=&quot;http://formalmath.tiddlyspot.com#YourName&quot; class=&quot;externalLink&quot;&gt;YourName&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/#author:true&quot; href=&quot;http://formalmath.tiddlyspot.com/#author:true&quot; class=&quot;externalLink&quot;&gt;/&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;04/03/2008 21:59:40&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;Slawekk&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; href=&quot;file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; class=&quot;externalLink&quot;&gt;formalmath.html&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;ok&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;08/03/2008 10:36:32&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;Slawekk&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; href=&quot;file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; class=&quot;externalLink&quot;&gt;formalmath.html&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;ok&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;09/03/2008 12:46:27&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;Slawekk&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; href=&quot;file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; class=&quot;externalLink&quot;&gt;formalmath.html&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;oddRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;20/03/2008 19:25:26&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;Slawekk&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; href=&quot;file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; class=&quot;externalLink&quot;&gt;formalmath.html&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;evenRow&quot;&gt;&lt;td align=&quot;center&quot;&gt;29/10/2008 19:55:26&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;Slawekk&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; href=&quot;file:///home/slawek/formalized_math/tiddlyMath/formalmath.html&quot; class=&quot;externalLink&quot;&gt;formalmath.html&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com/store.cgi&quot; href=&quot;http://formalmath.tiddlyspot.com/store.cgi&quot; class=&quot;externalLink&quot;&gt;store.cgi&lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;&lt;a target=&quot;_blank&quot; title=&quot;External link to  http://formalmath.tiddlyspot.com/index.html&quot; href=&quot;%20http://formalmath.tiddlyspot.com/index.html&quot; class=&quot;externalLink&quot;&gt;index.html &lt;/a&gt;&lt;/td&gt;&lt;td align=&quot;center&quot;&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</description>
<link>http://formalmath.tiddlyspot.com#UploadLog</link>
<pubDate>Wed, 29 Oct 2008 23:55:26 GMT</pubDate>
</item>
<item>
<title>MainMenu</title>
<description>&lt;a tiddlylink=&quot;AboutThisSite&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#AboutThisSite&quot; href=&quot;http://formalmath.tiddlyspot.com#AboutThisSite&quot; class=&quot;externalLink&quot;&gt;AboutThisSite&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Introduction&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Introduction&quot; href=&quot;http://formalmath.tiddlyspot.com#Introduction&quot; class=&quot;externalLink&quot;&gt;Introduction&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;ZF1&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#ZF1&quot; href=&quot;http://formalmath.tiddlyspot.com#ZF1&quot; class=&quot;externalLink&quot;&gt;ZF1&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Nat_ZF_IML&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Nat_ZF_IML&quot; href=&quot;http://formalmath.tiddlyspot.com#Nat_ZF_IML&quot; class=&quot;externalLink&quot;&gt;Nat_ZF_IML&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;func_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#func_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#func_ZF&quot; class=&quot;externalLink&quot;&gt;func_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Fold_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Fold_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Fold_ZF&quot; class=&quot;externalLink&quot;&gt;Fold_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;EquivClass1&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#EquivClass1&quot; href=&quot;http://formalmath.tiddlyspot.com#EquivClass1&quot; class=&quot;externalLink&quot;&gt;EquivClass1&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Finite_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Finite_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Finite_ZF&quot; class=&quot;externalLink&quot;&gt;Finite_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Order_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Order_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Order_ZF&quot; class=&quot;externalLink&quot;&gt;Order_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Order_ZF_1a&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Order_ZF_1a&quot; href=&quot;http://formalmath.tiddlyspot.com#Order_ZF_1a&quot; class=&quot;externalLink&quot;&gt;Order_ZF_1a&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;FinOrd_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#FinOrd_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#FinOrd_ZF&quot; class=&quot;externalLink&quot;&gt;FinOrd_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;FinSupp_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#FinSupp_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#FinSupp_ZF&quot; class=&quot;externalLink&quot;&gt;FinSupp_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Topology_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Topology_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Topology_ZF&quot; class=&quot;externalLink&quot;&gt;Topology_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Topology_ZF_1&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Topology_ZF_1&quot; href=&quot;http://formalmath.tiddlyspot.com#Topology_ZF_1&quot; class=&quot;externalLink&quot;&gt;Topology_ZF_1&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Topology_ZF_1b&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Topology_ZF_1b&quot; href=&quot;http://formalmath.tiddlyspot.com#Topology_ZF_1b&quot; class=&quot;externalLink&quot;&gt;Topology_ZF_1b&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Topology_ZF_2&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Topology_ZF_2&quot; href=&quot;http://formalmath.tiddlyspot.com#Topology_ZF_2&quot; class=&quot;externalLink&quot;&gt;Topology_ZF_2&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Semigroup_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Semigroup_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Semigroup_ZF&quot; class=&quot;externalLink&quot;&gt;Semigroup_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Monoid_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Monoid_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Monoid_ZF&quot; class=&quot;externalLink&quot;&gt;Monoid_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Group_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Group_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Group_ZF&quot; class=&quot;externalLink&quot;&gt;Group_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Group_ZF_1&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Group_ZF_1&quot; href=&quot;http://formalmath.tiddlyspot.com#Group_ZF_1&quot; class=&quot;externalLink&quot;&gt;Group_ZF_1&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Group_ZF_1b&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Group_ZF_1b&quot; href=&quot;http://formalmath.tiddlyspot.com#Group_ZF_1b&quot; class=&quot;externalLink&quot;&gt;Group_ZF_1b&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;DirectProduct_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#DirectProduct_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#DirectProduct_ZF&quot; class=&quot;externalLink&quot;&gt;DirectProduct_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;AbelianGroup_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#AbelianGroup_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#AbelianGroup_ZF&quot; class=&quot;externalLink&quot;&gt;AbelianGroup_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Group_ZF_2&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Group_ZF_2&quot; href=&quot;http://formalmath.tiddlyspot.com#Group_ZF_2&quot; class=&quot;externalLink&quot;&gt;Group_ZF_2&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Ring_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Ring_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Ring_ZF&quot; class=&quot;externalLink&quot;&gt;Ring_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Field_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Field_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Field_ZF&quot; class=&quot;externalLink&quot;&gt;Field_ZF&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Administration&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Administration&quot; href=&quot;http://formalmath.tiddlyspot.com#Administration&quot; class=&quot;externalLink&quot;&gt;Administration&lt;/a&gt; &lt;br&gt;&lt;a tiddlylink=&quot;GettingStarted&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#GettingStarted&quot; href=&quot;http://formalmath.tiddlyspot.com#GettingStarted&quot; class=&quot;externalLink&quot;&gt;GettingStarted&lt;/a&gt;</description>
<link>http://formalmath.tiddlyspot.com#MainMenu</link>
<pubDate>Wed, 29 Oct 2008 23:48:00 GMT</pubDate>
</item>
<item>
<title>Field_ZF</title>
<description> &lt;strong&gt;theory&lt;/strong&gt; &lt;a tiddlylink=&quot;Field_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Field_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Field_ZF&quot; class=&quot;externalLink&quot;&gt;Field_ZF&lt;/a&gt; &lt;strong&gt;imports&lt;/strong&gt; &lt;a tiddlylink=&quot;Ring_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Ring_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Ring_ZF&quot; class=&quot;externalLink&quot;&gt;Ring_ZF&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;strong&gt;begin&lt;br&gt;&lt;/strong&gt; &lt;br&gt;This theory covers basic facts about fields.&lt;br&gt;&lt;br&gt;&lt;h1&gt;Definition and basic properties&lt;/h1&gt;&lt;br&gt;In this section we define what is a field and list the basic properties of fields.&lt;br&gt;&lt;br&gt;Field is a notrivial commutative ring such that all non-zero elements have an inverse. We define the notion of being a field as a statement about three sets. The first set, denoted &lt;em&gt;K&lt;/em&gt; is the carrier of the field. The second set, denoted &lt;em&gt;A&lt;/em&gt; represents the additive operation on &lt;em&gt;K&lt;/em&gt; (recall that in ZF set theory functions are sets). The third set &lt;em&gt;M&lt;/em&gt; represents the multiplicative operation on &lt;em&gt;K&lt;/em&gt;.&lt;br&gt;&lt;br&gt; &lt;strong&gt;Definition&lt;br&gt;&lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; IsAfield(K,A,M) \equiv  &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;  (IsAring(K,A,M) \wedge  (M \text{ is commutative on } K) \wedge &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;  TheNeutralElement(K,A) \neq  TheNeutralElement(K,M) \wedge  &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;  (\forall a\in K.\  a\neq TheNeutralElement(K,A)\longrightarrow &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;  (\exists b\in K.\  M\langle a,b\rangle  = TheNeutralElement(K,M))))&lt;/span&gt;&lt;br&gt;&lt;br&gt;The &lt;em&gt;field0&lt;/em&gt; context extends the &lt;em&gt;ring0&lt;/em&gt; context adding field-related assumptions and notation related to the multiplicative inverse.&lt;br&gt;&lt;br&gt; &lt;strong&gt;Locale &lt;/strong&gt; field0 = ring0 K +&lt;br&gt; &lt;strong&gt;assumes &lt;/strong&gt; mult_commute: &lt;span class=&quot;math&quot;&gt; M \text{ is commutative on } K&lt;/span&gt;&lt;br&gt; &lt;strong&gt;assumes &lt;/strong&gt; not_triv: &lt;span class=&quot;math&quot;&gt; 0  \neq  1 &lt;/span&gt;&lt;br&gt; &lt;strong&gt;assumes &lt;/strong&gt; inv_exists: &lt;span class=&quot;math&quot;&gt; \forall a\in K.\  a\neq 0  \longrightarrow  (\exists b\in K.\  a\cdot b = 1 )&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; K_0 \equiv  K-\{0 \}&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a^{-1} \equiv  GroupInv(K_0,restrict(M,K_0\times K_0))(a)&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;The next lemma assures us that we are talking fields in the &lt;em&gt;field0&lt;/em&gt; context.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_1_L1&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; IsAfield(K,A,M)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;ringAssum&lt;/span&gt; ,  &lt;span&gt;mult_commute&lt;/span&gt; ,  &lt;span&gt;not_triv&lt;/span&gt; ,  &lt;span&gt;inv_exists&lt;/span&gt; ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;IsAfield_def &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;IsAfield_def &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAfield_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAfield&amp;lt;/nowiki&amp;gt;:
$ IsAfield(K,A,M) \equiv  $
$  (IsAring(K,A,M) \wedge  (M \text{ is commutative on } K) \wedge $
$  TheNeutralElement(K,A) \neq  TheNeutralElement(K,M) \wedge  $
$  (\forall a\in K.\  a\neq TheNeutralElement(K,A)\longrightarrow $
$  (\exists b\in K.\  M\langle a,b\rangle  = TheNeutralElement(K,M))))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;We can use theorems proven in the &lt;em&gt;field0&lt;/em&gt; context whenever we talk about a field.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;  &lt;span&gt;field_field0&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; IsAfield(K,A,M)&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; field0(K,A,M)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;IsAfield_def &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;IsAfield_def &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAfield_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAfield&amp;lt;/nowiki&amp;gt;:
$ IsAfield(K,A,M) \equiv  $
$  (IsAring(K,A,M) \wedge  (M \text{ is commutative on } K) \wedge $
$  TheNeutralElement(K,A) \neq  TheNeutralElement(K,M) \wedge  $
$  (\forall a\in K.\  a\neq TheNeutralElement(K,A)\longrightarrow $
$  (\exists b\in K.\  M\langle a,b\rangle  = TheNeutralElement(K,M))))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;field0_axioms.intro&lt;/span&gt; ,  &lt;span&gt;ring0_def&lt;/span&gt; ,  &lt;span&gt;field0_def&lt;/span&gt;&lt;br&gt;&lt;br&gt;Let's have an explicit statement that the multiplication in fields is commutative.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;field_mult_comm&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in K&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b = b\cdot a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;mult_commute&lt;/span&gt; ,  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Fields do not have zero divisors.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;field_has_no_zero_divs&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; HasNoZeroDivs(K,A,M)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;a openedtip=&quot;hide { &quot; openedtext=&quot;{ &quot; closedtip=&quot;show { &quot; closedtext=&quot;{ &quot; class=&quot;button&quot; title=&quot;hide { &quot; href=&quot;javascript:;&quot;&gt;{ &lt;/a&gt;&lt;div style=&quot;display: block;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;fix &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a&lt;/span&gt; &lt;span class=&quot;math&quot;&gt; b&lt;/span&gt;&lt;br&gt; &lt;strong&gt;assume &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in K&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\cdot b = 0 &lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; b\neq 0 &lt;/span&gt;&lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; inv_exists, A1, A3  &lt;strong&gt;obtain &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; c&lt;/span&gt; &lt;strong&gt;where &lt;/strong&gt; I: &lt;span class=&quot;math&quot;&gt; c\in K&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; II: &lt;span class=&quot;math&quot;&gt; b\cdot c = 1 &lt;/span&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = 0 \cdot c&lt;/span&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, I  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c) = 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L6 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L6 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in R$  '' shows '' $ 0 \cdot x = 0 $,   $ x\cdot 0  = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, II  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a=0  &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;  &lt;strong&gt;}&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \forall a\in K.\ \forall b\in K.\  a\cdot b = 0  \longrightarrow  a=0  \vee  b=0 &lt;/span&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;HasNoZeroDivs_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;HasNoZeroDivs_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;HasNoZeroDivs_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;HasNoZeroDivs&amp;lt;/nowiki&amp;gt;:
$ HasNoZeroDivs(R,A,M) \equiv  (\forall a\in R.\  \forall b\in R.\  $
$  M\langle  a,b\rangle  = TheNeutralElement(R,A) \longrightarrow $
$  a = TheNeutralElement(R,A) \vee  b = TheNeutralElement(R,A))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;K_0&lt;/span&gt; (the set of nonzero field elements is closed with respect to multiplication.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_1_L2&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; K_0 \text{ is closed under } M&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;field_has_no_zero_divs &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;field_has_no_zero_divs &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;field_has_no_zero_divs &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;field_has_no_zero_divs&amp;lt;/nowiki&amp;gt;:  '' shows '' $ HasNoZeroDivs(K,A,M)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L12 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L12 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L12 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L12&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ HasNoZeroDivs(R,A,M)$  ''and'' $ a\in R$,   $ a\neq 0 $,   $ b\in R$,   $ b\neq 0 $  '' shows '' $ a\cdot b\neq 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsOpClosed_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsOpClosed_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsOpClosed_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsOpClosed&amp;lt;/nowiki&amp;gt;:
$ A \text{ is closed under } f \equiv  \forall x\in A.\  \forall y\in A.\  f\langle x,y\rangle  \in  A$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Any nonzero element has a right inverse that is nonzero.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_1_L3&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in K_0&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \exists b\in K_0.\  a\cdot b = 1 &lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; inv_exists, A1  &lt;strong&gt;obtain &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b&lt;/span&gt; &lt;strong&gt;where &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b\in K&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b = 1 &lt;/span&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; not_triv, A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \exists b\in K_0.\  a\cdot b = 1 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L6 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L6 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in R$  '' shows '' $ 0 \cdot x = 0 $,   $ x\cdot 0  = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;If we remove zero, the field with multiplication becomes a group and we can use all theorems proven in &lt;em&gt;group0&lt;/em&gt; context.&lt;br&gt;&lt;br&gt; &lt;strong&gt;theorem&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_1_L4&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \text{IsAgroup}(K_0,restrict(M,K_0\times K_0))&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; group0(K_0,restrict(M,K_0\times K_0))&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; 1  = TheNeutralElement(K_0,restrict(M,K_0\times K_0))&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;let &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; f = restrict(M,K_0\times K_0)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; M \text{ is associative on } K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; K_0 \subseteq  K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; K_0 \text{ is closed under } M&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L1 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ IsAfield(K,A,M)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;IsAfield_def &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;IsAfield_def &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAfield_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAfield&amp;lt;/nowiki&amp;gt;:
$ IsAfield(K,A,M) \equiv  $
$  (IsAring(K,A,M) \wedge  (M \text{ is commutative on } K) \wedge $
$  TheNeutralElement(K,A) \neq  TheNeutralElement(K,M) \wedge  $
$  (\forall a\in K.\  a\neq TheNeutralElement(K,A)\longrightarrow $
$  (\exists b\in K.\  M\langle a,b\rangle  = TheNeutralElement(K,M))))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;IsAring_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;IsAring_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAring_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAring&amp;lt;/nowiki&amp;gt;:
$ IsAring(R,A,M) \equiv  \text{IsAgroup}(R,A) \wedge  (A \text{ is commutative on } R) \wedge  $
$  \text{IsAmonoid}(R,M) \wedge  IsDistributive(R,A,M)$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;IsAgroup_def &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;IsAgroup_def &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAgroup_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAgroup&amp;lt;/nowiki&amp;gt;:
$ \text{IsAgroup}(G,f) \equiv  $
$  (\text{IsAmonoid}(G,f) \wedge  (\forall g\in G.\  \exists b\in G.\  f\langle g,b\rangle  = TheNeutralElement(G,f)))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Monoid_ZF &quot; openedtext=&quot;IsAmonoid_def &quot; closedtip=&quot; Monoid_ZF &quot; closedtext=&quot;IsAmonoid_def &quot; class=&quot;button&quot; title=&quot; Monoid_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAmonoid_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAmonoid&amp;lt;/nowiki&amp;gt;:
$ \text{IsAmonoid}(G,f) \equiv $
$  f \text{ is associative on } G \wedge  $
$  (\exists e\in G.\  (\forall  g\in G.\  ( (f(\langle e,g\rangle ) = g) \wedge  (f(\langle g,e\rangle ) = g))))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L2 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ K_0 \text{ is closed under } M$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; f \text{ is associative on } K_0&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;func_ZF_4_L3 &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;func_ZF_4_L3 &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;func_ZF_4_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;func_ZF_4_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ f \text{ is associative on } X$  ''and'' $ A\subseteq X$  ''and'' $ A \text{ is closed under } f$  '' shows '' $ restrict(f,A\times A) \text{ is associative on } A$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; not_triv  &lt;strong&gt;have&lt;/strong&gt;  I: &lt;span class=&quot;math&quot;&gt; 1 \in K_0 \wedge  (\forall a\in K_0.\  f\langle 1 ,a\rangle  = a \wedge   f\langle a,1 \rangle  = a)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \exists n\in K_0.\  \forall a\in K_0.\  f\langle n,a\rangle  = a \wedge   f\langle a,n\rangle  = a&lt;/span&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  II: &lt;span class=&quot;math&quot;&gt; \text{IsAmonoid}(K_0,f)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Monoid_ZF &quot; openedtext=&quot;IsAmonoid_def &quot; closedtip=&quot; Monoid_ZF &quot; closedtext=&quot;IsAmonoid_def &quot; class=&quot;button&quot; title=&quot; Monoid_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAmonoid_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAmonoid&amp;lt;/nowiki&amp;gt;:
$ \text{IsAmonoid}(G,f) \equiv $
$  f \text{ is associative on } G \wedge  $
$  (\exists e\in G.\  (\forall  g\in G.\  ( (f(\langle e,g\rangle ) = g) \wedge  (f(\langle g,e\rangle ) = g))))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; monoid0(K_0,f)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;monoid0_def&lt;/span&gt;&lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;note &lt;/strong&gt; I&lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; 1  = TheNeutralElement(K_0,f)&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Monoid_ZF &quot; openedtext=&quot;group0_1_L4 &quot; closedtip=&quot; Monoid_ZF &quot; closedtext=&quot;group0_1_L4 &quot; class=&quot;button&quot; title=&quot; Monoid_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' monoid0 '') '' &amp;lt;nowiki&amp;gt;group0_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ e \in  G \wedge  (\forall g\in G.\  e \oplus  g = g \wedge  g \oplus  e = g)$  '' shows '' $ e = TheNeutralElement(G,f)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \forall a\in K_0.\ \exists b\in K_0.\  f\langle a,b\rangle  =  TheNeutralElement(K_0,f)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L3 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K_0$  '' shows '' $ \exists b\in K_0.\  a\cdot b = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; II  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \text{IsAgroup}(K_0,f)&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;definition_of_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;definition_of_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;definition_of_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;definition_of_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ \text{IsAmonoid}(G,f)$  ''and'' $ \forall g\in G.\  \exists b\in G.\  f\langle g,b\rangle  = TheNeutralElement(G,f)$  '' shows '' $ \text{IsAgroup}(G,f)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; group0(K_0,f)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;group0_def&lt;/span&gt;&lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;The inverse of a nonzero field element is nonzero.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_1_L5&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\neq 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a^{-1} \in  K_0&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (a^{-1})^2  \in  K_0&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1} \in  K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1} \neq  0 &lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a \in  K_0&lt;/span&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a^{-1} \in  K_0&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L4 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''theorem''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  '' shows '' $ \text{IsAgroup}(K_0,restrict(M,K_0\times K_0))$,  
$ group0(K_0,restrict(M,K_0\times K_0))$,   $ 1  = TheNeutralElement(K_0,restrict(M,K_0\times K_0))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a^{-1})^2  \in  K_0&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1} \in  K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1} \neq  0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L2 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ K_0 \text{ is closed under } M$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsOpClosed_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsOpClosed_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsOpClosed_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsOpClosed&amp;lt;/nowiki&amp;gt;:
$ A \text{ is closed under } f \equiv  \forall x\in A.\  \forall y\in A.\  f\langle x,y\rangle  \in  A$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;The inverse is really the inverse.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_1_L6&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\neq 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot a^{-1} = 1 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot a = 1 &lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;let &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; f = restrict(M,K_0\times K_0)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; group0(K_0,f)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a \in  K_0&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L4 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''theorem''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  '' shows '' $ \text{IsAgroup}(K_0,restrict(M,K_0\times K_0))$,  
$ group0(K_0,restrict(M,K_0\times K_0))$,   $ 1  = TheNeutralElement(K_0,restrict(M,K_0\times K_0))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; f\langle a,GroupInv(K_0, f)(a)\rangle  = TheNeutralElement(K_0,f) \wedge &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;    f\langle GroupInv(K_0,f)(a),a\rangle  = TheNeutralElement(K_0, f)&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot a^{-1} = 1 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot a = 1 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L5 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L5 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ a\neq 0 $  '' shows '' $ a^{-1} \in  K_0$,   $ (a^{-1})^2  \in  K_0$,   $ a^{-1} \in  K$,   $ a^{-1} \neq  0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L4 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''theorem''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  '' shows '' $ \text{IsAgroup}(K_0,restrict(M,K_0\times K_0))$,  
$ group0(K_0,restrict(M,K_0\times K_0))$,   $ 1  = TheNeutralElement(K_0,restrict(M,K_0\times K_0))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;A lemma with two field elements and cancelling.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_1_L7&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\neq 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot b^{-1} = a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot b = a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L5 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L5 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ a\neq 0 $  '' shows '' $ a^{-1} \in  K_0$,   $ (a^{-1})^2  \in  K_0$,   $ a^{-1} \in  K$,   $ a^{-1} \neq  0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L6 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L6 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ a\neq 0 $  '' shows '' $ a\cdot a^{-1} = 1 $,   $ a^{-1}\cdot a = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Equations and identities&lt;/h1&gt;&lt;br&gt;This section deals with more specialized identities that are true in fields.&lt;br&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;a/(a^2) = a&lt;/span&gt;.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_2_L1&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\neq 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot (a^{-1})^2  = a^{-1}&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (a^{-1})^2  = a\cdot (a^{-1}\cdot a^{-1})&lt;/span&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  =  (a\cdot a^{-1})\cdot a^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L5 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L5 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ a\neq 0 $  '' shows '' $ a^{-1} \in  K_0$,   $ (a^{-1})^2  \in  K_0$,   $ a^{-1} \in  K$,   $ a^{-1} \neq  0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = a^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L6 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L6 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ a\neq 0 $  '' shows '' $ a\cdot a^{-1} = 1 $,   $ a^{-1}\cdot a = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L5 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L5 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ a\neq 0 $  '' shows '' $ a^{-1} \in  K_0$,   $ (a^{-1})^2  \in  K_0$,   $ a^{-1} \in  K$,   $ a^{-1} \neq  0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (a^{-1})^2  = a^{-1}&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;If we multiply two different numbers by a nonzero number, the results will be different.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_2_L2&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\neq b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\neq 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot c^{-1} \neq  b\cdot c^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;field_has_no_zero_divs &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;field_has_no_zero_divs &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;field_has_no_zero_divs &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;field_has_no_zero_divs&amp;lt;/nowiki&amp;gt;:  '' shows '' $ HasNoZeroDivs(K,A,M)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L5 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L5 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ a\neq 0 $  '' shows '' $ a^{-1} \in  K_0$,   $ (a^{-1})^2  \in  K_0$,   $ a^{-1} \in  K$,   $ a^{-1} \neq  0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L12B &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L12B &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L12B &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L12B&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ HasNoZeroDivs(R,A,M)$,   $ a\in R$,   $ b\in R$,   $ c\in R$,   $ a\neq b$,   $ c\neq 0 $  '' shows '' $ a\cdot c \neq  b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;We can put a nonzero factor on the other side of non-identity (is this the best way to call it?) changing it to the inverse.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_2_L3&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\neq 0 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in K&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\cdot b \neq  c&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a \neq  c\cdot b^{-1}&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot b^{-1} \neq  c\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_2_L2 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_2_L2 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_2_L2&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ b\in K$,   $ c\in K$,   $ a\neq b$,   $ c\neq 0 $  '' shows '' $ a\cdot c^{-1} \neq  b\cdot c^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a \neq  c\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L7 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L7 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ b\in K$,   $ b\neq 0 $  '' shows '' $ a\cdot b\cdot b^{-1} = a$,   $ a\cdot b^{-1}\cdot b = a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;If if the inverse of &lt;span class=&quot;math&quot;&gt;b&lt;/span&gt; is different than &lt;span class=&quot;math&quot;&gt;a&lt;/span&gt;, then the inverse of &lt;span class=&quot;math&quot;&gt;a&lt;/span&gt; is different than &lt;span class=&quot;math&quot;&gt;b&lt;/span&gt;.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_2_L4&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\neq 0 &lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b^{-1} \neq  a&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a^{-1} \neq  b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L4 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''theorem''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  '' shows '' $ \text{IsAgroup}(K_0,restrict(M,K_0\times K_0))$,  
$ group0(K_0,restrict(M,K_0\times K_0))$,   $ 1  = TheNeutralElement(K_0,restrict(M,K_0\times K_0))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L11B &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L11B &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L11B &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L11B&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b^{-1} \neq  a$  '' shows '' $ a^{-1} \neq  b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;An identity with two field elements, one and an inverse.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_2_L5&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\neq 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (1   +  a\cdot b)\cdot b^{-1} = a  +  b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L5 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L5 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ a\neq 0 $  '' shows '' $ a^{-1} \in  K_0$,   $ (a^{-1})^2  \in  K_0$,   $ a^{-1} \in  K$,   $ a^{-1} \neq  0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L7 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L7 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ b\in K$,   $ b\neq 0 $  '' shows '' $ a\cdot b\cdot b^{-1} = a$,   $ a\cdot b^{-1}\cdot b = a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;An identity with three field elements, inverse and cancelling.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; field0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Field_ZF_2_L6&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\neq 0 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in K&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot b^{-1}) = a\cdot c&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; a\cdot b \in  K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1} \in  K&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L5 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L5 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ a\neq 0 $  '' shows '' $ a^{-1} \in  K_0$,   $ (a^{-1})^2  \in  K_0$,   $ a^{-1} \in  K$,   $ a^{-1} \neq  0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; mult_commute, A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot b^{-1}) = a\cdot b\cdot (b^{-1}\cdot c)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b \in  K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1} \in  K&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in K&lt;/span&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot b^{-1}\cdot c = a\cdot b\cdot (b^{-1}\cdot c)&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot b^{-1}) = a\cdot b\cdot b^{-1}\cdot c&lt;/span&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot b^{-1}) = a\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Field_ZF &quot; openedtext=&quot;Field_ZF_1_L7 &quot; closedtip=&quot; Field_ZF &quot; closedtext=&quot;Field_ZF_1_L7 &quot; class=&quot;button&quot; title=&quot; Field_ZF &quot; href=&quot;javascript:;&quot;&gt;Field_ZF_1_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' field0 '') '' &amp;lt;nowiki&amp;gt;Field_ZF_1_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in K$,   $ b\in K$,   $ b\neq 0 $  '' shows '' $ a\cdot b\cdot b^{-1} = a$,   $ a\cdot b^{-1}\cdot b = a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt; &lt;strong&gt;end&lt;br&gt;&lt;br&gt;&lt;/strong&gt; &lt;h1&gt;&lt;a openedtip=&quot;click to add comment&quot; openedtext=&quot;Comments on Field_ZF&quot; closedtip=&quot;click to add comment&quot; closedtext=&quot;Comments on Field_ZF&quot; title=&quot;click to add comment&quot; href=&quot;javascript:;&quot;&gt;Comments on Field_ZF&lt;/a&gt;&lt;/h1&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;span&gt; &lt;div&gt; &lt;iframe style=&quot;width: 60%; height: 500px;&quot; src=&quot;http://www.haloscan.com/comments/slawekk/Field_ZF&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/span&gt;&lt;/div&gt; &lt;br&gt;</description>
<link>http://formalmath.tiddlyspot.com#Field_ZF</link>
<pubDate>Wed, 29 Oct 2008 23:46:00 GMT</pubDate>
</item>
<item>
<title>AbelianGroup_ZF</title>
<description> &lt;strong&gt;theory&lt;/strong&gt; &lt;a tiddlylink=&quot;AbelianGroup_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#AbelianGroup_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#AbelianGroup_ZF&quot; class=&quot;externalLink&quot;&gt;AbelianGroup_ZF&lt;/a&gt; &lt;strong&gt;imports&lt;/strong&gt; &lt;a tiddlylink=&quot;Group_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Group_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Group_ZF&quot; class=&quot;externalLink&quot;&gt;Group_ZF&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;strong&gt;begin&lt;br&gt;&lt;/strong&gt; &lt;br&gt;A group is called ``abelian`` if its operation is commutative, i.e. &lt;span class=&quot;math&quot;&gt;P\langle a,b \rangle = P\langle a,b \rangle&lt;/span&gt; for all group elements &lt;span class=&quot;math&quot;&gt;a,b&lt;/span&gt;, where &lt;span class=&quot;math&quot;&gt;P&lt;/span&gt; is the group operation. It is customary to use the additive notation for abelian groups, so this condition is typically written as &lt;span class=&quot;math&quot;&gt;a+b = b+a&lt;/span&gt;. We will be using multiplicative notation though (in which the commutativity condition of the operation is written as &lt;span class=&quot;math&quot;&gt;a\cdot b = b\cdot a&lt;/span&gt;), just to avoid the hassle of changing the notation we used for general groups.&lt;br&gt;&lt;br&gt;&lt;h1&gt;Rearrangement formulae&lt;/h1&gt;&lt;br&gt;This section is not interesting and should not be read. Here we will prove formulas is which right hand side uses the same factors as the left hand side, just in different order. These facts are obvious in informal math sense, but Isabelle prover is not able to derive them automatically, so we have to prove them by hand.&lt;br&gt;&lt;br&gt;Proving the facts about associative and commutative operations is quite tedious in formalized mathematics. To a human the thing is simple: we can arrange the elements in any order and put parantheses wherever we want, it is all the same. However, formalizing this statement would be rather difficult (I think). The next lemma attempts a quasi-algorithmic approach to this type of problem. To prove that two expressions are equal, we first strip one from parantheses, then rearrange the elements in proper order, then put the parantheses where we want them to be. The algorithm for rearrangement is easy to describe: we keep putting the first element (from the right) that is in the wrong place at the left-most position until we get the proper arrangement. As far removing parantheses is concerned Isabelle does its job automatically.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L2&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; E\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; F\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (a\cdot b)\cdot (c\cdot d)\cdot (E\cdot F) = (a\cdot (d\cdot F))\cdot (b\cdot (c\cdot E))&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot b)\cdot (c\cdot d)\cdot (E\cdot F) = a\cdot b\cdot c\cdot d\cdot E\cdot F&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d\cdot E\cdot F = a\cdot d\cdot F\cdot b\cdot c\cdot E&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d\cdot E\cdot F = F\cdot (a\cdot b\cdot c\cdot d\cdot E)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; F\cdot (a\cdot b\cdot c\cdot d\cdot E) = F\cdot a\cdot b\cdot c\cdot d\cdot E&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; F\cdot a\cdot b\cdot c\cdot d\cdot E = d\cdot (F\cdot a\cdot b\cdot c)\cdot E&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; d\cdot (F\cdot a\cdot b\cdot c)\cdot E = d\cdot F\cdot a\cdot b\cdot c\cdot E&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt;  d\cdot F\cdot a\cdot b\cdot c\cdot E = a\cdot (d\cdot F)\cdot b\cdot c\cdot E&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (d\cdot F)\cdot b\cdot c\cdot E = a\cdot d\cdot F\cdot b\cdot c\cdot E&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot d\cdot F\cdot b\cdot c\cdot E = (a\cdot (d\cdot F))\cdot (b\cdot (c\cdot E))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another useful rearrangement.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L3&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; E\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; F\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot ((c\cdot d)^{-1}\cdot (E\cdot F)^{-1}) = (a\cdot (E\cdot c)^{-1})\cdot (b\cdot (F\cdot d)^{-1})&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A3  &lt;strong&gt;have&lt;/strong&gt;  T1: &lt;span class=&quot;math&quot;&gt; c^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; E^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; F^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (c\cdot d)^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (E\cdot F)^{-1}\in G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2, T1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot ((c\cdot d)^{-1}\cdot (E\cdot F)^{-1}) = a\cdot b\cdot (c\cdot d)^{-1}\cdot (E\cdot F)^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, A3  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot d)^{-1}\cdot (E\cdot F)^{-1} = (a\cdot b)\cdot (d^{-1}\cdot c^{-1})\cdot (F^{-1}\cdot E^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2, T1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot b)\cdot (d^{-1}\cdot c^{-1})\cdot (F^{-1}\cdot E^{-1}) = (a\cdot (c^{-1}\cdot E^{-1}))\cdot (b\cdot (d^{-1}\cdot F^{-1}))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L2 &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L2 &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L2&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$,   $ d\in G$,   $ E\in G$,   $ F\in G$  '' shows '' $ (a\cdot b)\cdot (c\cdot d)\cdot (E\cdot F) = (a\cdot (d\cdot F))\cdot (b\cdot (c\cdot E))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, A3  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot (c^{-1}\cdot E^{-1}))\cdot (b\cdot (d^{-1}\cdot F^{-1})) = (a\cdot (E\cdot c)^{-1})\cdot (b\cdot (F\cdot d)^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some useful rearrangements for two elements of a group.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L4&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b^{-1}\cdot a^{-1} = a^{-1}\cdot b^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (a\cdot b)^{-1} = a^{-1}\cdot b^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (a\cdot b^{-1})^{-1} = a^{-1}\cdot b&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T1: &lt;span class=&quot;math&quot;&gt; b^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1}\in G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; b^{-1}\cdot a^{-1} = a^{-1}\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot b)^{-1} = a^{-1}\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2, T1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot b^{-1})^{-1} = (b^{-1})^{-1}\cdot a^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2, T1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot b^{-1})^{-1} = a^{-1}\cdot b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another bunch of useful rearrangements with three elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L4A&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = c\cdot a\cdot b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot (b^{-1}\cdot c^{-1})^{-1} = (a\cdot (b\cdot c)^{-1})^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c^{-1})^{-1} = a\cdot b^{-1}\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot c^{-1} = a\cdot c^{-1}\cdot b^{-1}&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = c\cdot (a\cdot b)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = c\cdot a\cdot b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; b^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1}\cdot c^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot (b^{-1}\cdot c^{-1})^{-1} = (a\cdot (b\cdot c)^{-1})^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)^{-1} = a\cdot (b^{-1}\cdot c^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c^{-1})^{-1} = a\cdot (b^{-1}\cdot (c^{-1})^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c^{-1})^{-1} = a\cdot b^{-1}\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot c^{-1} = a\cdot (c^{-1}\cdot b^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot c^{-1} = a\cdot c^{-1}\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another useful rearrangement.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L4B&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (b\cdot c^{-1}) = a\cdot c^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;prems&lt;/span&gt; ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L4 &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L4 &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ b^{-1}\cdot a^{-1} = a^{-1}\cdot b^{-1}$,  
$ (a\cdot b)^{-1} = a^{-1}\cdot b^{-1}$,   $ (a\cdot b^{-1})^{-1} = a^{-1}\cdot b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inv_cancel_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inv_cancel_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inv_cancel_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inv_cancel_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b^{-1}\cdot b = a$,  
$ a\cdot b\cdot b^{-1} = a$,   $ a^{-1}\cdot (a\cdot b) = b$,   $ a\cdot (a^{-1}\cdot b) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;A couple of permutations of order for three alements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L4C&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = c\cdot a\cdot b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = a\cdot (c\cdot b)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = c\cdot (a\cdot b)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = c\cdot b\cdot a&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  I: &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = c\cdot a\cdot b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L4A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L4A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L4A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L4A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c = c\cdot a\cdot b$,  
$ a^{-1}\cdot (b^{-1}\cdot c^{-1})^{-1} = (a\cdot (b\cdot c)^{-1})^{-1}$,  
$ a\cdot (b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}$,  
$ a\cdot (b\cdot c^{-1})^{-1} = a\cdot b^{-1}\cdot c$,  
$ a\cdot b^{-1}\cdot c^{-1} = a\cdot c^{-1}\cdot b^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; c\cdot a\cdot b = a\cdot c\cdot b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot c\cdot b = a\cdot (c\cdot b)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = a\cdot (c\cdot b)&lt;/span&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2, I  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = c\cdot (a\cdot b)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; c\cdot (a\cdot b) = c\cdot (b\cdot a)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; c\cdot (b\cdot a) = c\cdot b\cdot a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = c\cdot b\cdot a&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some rearangement with three elements and inverse.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L4D&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot b^{-1}\cdot c = c\cdot a^{-1}\cdot b^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1}\cdot a^{-1}\cdot c = c\cdot a^{-1}\cdot b^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (a^{-1}\cdot b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; a^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1}\in G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot b^{-1}\cdot c = c\cdot a^{-1}\cdot b^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1}\cdot a^{-1}\cdot c = c\cdot a^{-1}\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L4A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L4A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L4A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L4A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c = c\cdot a\cdot b$,  
$ a^{-1}\cdot (b^{-1}\cdot c^{-1})^{-1} = (a\cdot (b\cdot c)^{-1})^{-1}$,  
$ a\cdot (b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}$,  
$ a\cdot (b\cdot c^{-1})^{-1} = a\cdot b^{-1}\cdot c$,  
$ a\cdot b^{-1}\cdot c^{-1} = a\cdot c^{-1}\cdot b^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a^{-1}\cdot b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_three &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_three &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_three &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_three&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ (a\cdot b\cdot c)^{-1} = c^{-1}\cdot (a\cdot b)^{-1}$,  
$ (a\cdot b\cdot c)^{-1} = c^{-1}\cdot (b^{-1}\cdot a^{-1})$,  
$ (a\cdot b\cdot c)^{-1} = c^{-1}\cdot b^{-1}\cdot a^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L4C &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L4C &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L4C &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L4C&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c = c\cdot a\cdot b$,   $ a\cdot b\cdot c = a\cdot (c\cdot b)$,  
$ a\cdot b\cdot c = c\cdot (a\cdot b)$,   $ a\cdot b\cdot c = c\cdot b\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another rearrangement lemma with three elements and equation.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L5&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; c = a\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a = b\cdot c&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2, A3  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; c\cdot (b^{-1})^{-1} = a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L18 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L18 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L18 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L18&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  ''and'' $ c = a\cdot b$  '' shows '' $ c\cdot b^{-1} = a$,   $ a^{-1}\cdot c = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;In abelian groups we can cancel an element with its inverse even if separated by another element.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L6A&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot a^{-1} = b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot b\cdot a = b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot (b\cdot a) = b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot a^{-1}) = b&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot a^{-1} = a^{-1}\cdot a\cdot b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L4A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L4A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L4A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L4A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c = c\cdot a\cdot b$,  
$ a^{-1}\cdot (b^{-1}\cdot c^{-1})^{-1} = (a\cdot (b\cdot c)^{-1})^{-1}$,  
$ a\cdot (b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}$,  
$ a\cdot (b\cdot c^{-1})^{-1} = a\cdot b^{-1}\cdot c$,  
$ a\cdot b^{-1}\cdot c^{-1} = a\cdot c^{-1}\cdot b^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L2 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L2 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 \in G \wedge  (\forall g\in G.\ (1 \cdot g = g \wedge  g\cdot 1  = g))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot a^{-1} = b&lt;/span&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot b\cdot a = a\cdot a^{-1}\cdot b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L4A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L4A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L4A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L4A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c = c\cdot a\cdot b$,  
$ a^{-1}\cdot (b^{-1}\cdot c^{-1})^{-1} = (a\cdot (b\cdot c)^{-1})^{-1}$,  
$ a\cdot (b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}$,  
$ a\cdot (b\cdot c^{-1})^{-1} = a\cdot b^{-1}\cdot c$,  
$ a\cdot b^{-1}\cdot c^{-1} = a\cdot c^{-1}\cdot b^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L2 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L2 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 \in G \wedge  (\forall g\in G.\ (1 \cdot g = g \wedge  g\cdot 1  = g))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot b\cdot a = b&lt;/span&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot b\cdot a = a^{-1}\cdot (b\cdot a)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot (b\cdot a) = b&lt;/span&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot a^{-1}) = b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inv_cancel_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inv_cancel_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inv_cancel_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inv_cancel_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b^{-1}\cdot b = a$,  
$ a\cdot b\cdot b^{-1} = a$,   $ a^{-1}\cdot (a\cdot b) = b$,   $ a\cdot (a^{-1}\cdot b) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another lemma about cancelling with two elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L6AA&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot a^{-1} = b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;prems&lt;/span&gt; ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b\cdot a^{-1} = b$,  
$ a^{-1}\cdot b\cdot a = b$,   $ a^{-1}\cdot (b\cdot a) = b$,   $ a\cdot (b\cdot a^{-1}) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another lemma about cancelling with two elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L6AB&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot (a\cdot b)^{-1} = b^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot a^{-1}) = b&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (a\cdot b)^{-1} = a\cdot (b^{-1}\cdot a^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = a\cdot b^{-1}\cdot a^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  =  b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6AA &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6AA &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6AA &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6AA&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b^{-1}\cdot a^{-1} = b^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (a\cdot b)^{-1} = b^{-1}&lt;/span&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot a^{-1}) = a\cdot (a^{-1}\cdot b)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L2 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L2 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 \in G \wedge  (\forall g\in G.\ (1 \cdot g = g \wedge  g\cdot 1  = g))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot a^{-1}) = b&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another lemma about cancelling with two elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L6AC&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot (a\cdot b^{-1})^{-1} = b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;prems&lt;/span&gt; ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6AB &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6AB &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6AB &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6AB&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot (a\cdot b)^{-1} = b^{-1}$,   $ a\cdot (b\cdot a^{-1}) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;In abelian groups we can cancel an element with its inverse even if separated by two other elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L6B&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot a^{-1} = b\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot b\cdot c\cdot a = b\cdot c&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot a^{-1} = a\cdot (b\cdot c)\cdot a^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot b\cdot c\cdot a = a^{-1}\cdot (b\cdot c)\cdot a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot a^{-1} = b\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot b\cdot c\cdot a = b\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b\cdot a^{-1} = b$,  
$ a^{-1}\cdot b\cdot a = b$,   $ a^{-1}\cdot (b\cdot a) = b$,   $ a\cdot (b\cdot a^{-1}) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;In abelian groups we can cancel an element with its inverse even if separated by three other elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L6C&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d\cdot a^{-1} = b\cdot c\cdot d&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d\cdot a^{-1} = a\cdot (b\cdot c\cdot d)\cdot a^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b\cdot a^{-1} = b$,  
$ a^{-1}\cdot b\cdot a = b$,   $ a^{-1}\cdot (b\cdot a) = b$,   $ a\cdot (b\cdot a^{-1}) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another couple of useful rearrangements of three elements and cancelling.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L6D&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (a\cdot c^{-1})^{-1} = c\cdot b^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (a\cdot c)^{-1}\cdot (b\cdot c) = a^{-1}\cdot b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot (c\cdot a^{-1}\cdot b^{-1})) = c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c^{-1}\cdot (c\cdot a^{-1}) = b&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; a^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1}\cdot a^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\cdot a^{-1} \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (a\cdot c^{-1})^{-1} = c\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L12 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L12 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L12 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L12&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ (a\cdot b^{-1})^{-1} = b\cdot a^{-1}$,   $ (a^{-1}\cdot b)^{-1} = b^{-1}\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6B &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6B &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6B &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6B&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c\cdot a^{-1} = b\cdot c$,   $ a^{-1}\cdot b\cdot c\cdot a = b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot c)^{-1}\cdot (b\cdot c) = c^{-1}\cdot a^{-1}\cdot b\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = a^{-1}\cdot b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6B &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6B &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6B &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6B&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c\cdot a^{-1} = b\cdot c$,   $ a^{-1}\cdot b\cdot c\cdot a = b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot c)^{-1}\cdot (b\cdot c) = a^{-1}\cdot b&lt;/span&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot (c\cdot a^{-1}\cdot b^{-1})) = c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6B &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6B &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6B &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6B&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c\cdot a^{-1} = b\cdot c$,   $ a^{-1}\cdot b\cdot c\cdot a = b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b\cdot a^{-1} = b$,  
$ a^{-1}\cdot b\cdot a = b$,   $ a^{-1}\cdot (b\cdot a) = b$,   $ a\cdot (b\cdot a^{-1}) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c^{-1}\cdot (c\cdot a^{-1}) = a\cdot b\cdot (c^{-1}\cdot (c\cdot a^{-1}))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L2 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L2 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 \in G \wedge  (\forall g\in G.\ (1 \cdot g = g \wedge  g\cdot 1  = g))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b\cdot a^{-1} = b$,  
$ a^{-1}\cdot b\cdot a = b$,   $ a^{-1}\cdot (b\cdot a) = b$,   $ a\cdot (b\cdot a^{-1}) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c^{-1}\cdot (c\cdot a^{-1}) = b&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another useful rearrangement of three elements and cancelling.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L6E&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (a\cdot c)^{-1} = b\cdot c^{-1}&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; b^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1} \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b^{-1})^{-1}\cdot (a\cdot (c^{-1})^{-1})^{-1} = c^{-1}\cdot (b^{-1})^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6D &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6D &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6D &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6D&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b^{-1}\cdot (a\cdot c^{-1})^{-1} = c\cdot b^{-1}$,  
$ (a\cdot c)^{-1}\cdot (b\cdot c) = a^{-1}\cdot b$,  
$ a\cdot (b\cdot (c\cdot a^{-1}\cdot b^{-1})) = c$,  
$ a\cdot b\cdot c^{-1}\cdot (c\cdot a^{-1}) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (a\cdot c)^{-1} = b\cdot c^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;A rearrangement with two elements and canceelling, special case of &lt;em&gt;group0_4_&lt;a tiddlylink=&quot;L6D&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#L6D&quot; href=&quot;http://formalmath.tiddlyspot.com#L6D&quot; class=&quot;externalLink&quot;&gt;L6D&lt;/a&gt;&lt;/em&gt; when &lt;span class=&quot;math&quot;&gt;c=b^{-1}&lt;/span&gt;.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L6F&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (a\cdot b)^{-1} = b^{-1}\cdot b^{-1}&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; b^{-1} \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (a\cdot (b^{-1})^{-1})^{-1} = b^{-1}\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6D &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6D &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6D &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6D&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b^{-1}\cdot (a\cdot c^{-1})^{-1} = c\cdot b^{-1}$,  
$ (a\cdot c)^{-1}\cdot (b\cdot c) = a^{-1}\cdot b$,  
$ a\cdot (b\cdot (c\cdot a^{-1}\cdot b^{-1})) = c$,  
$ a\cdot b\cdot c^{-1}\cdot (c\cdot a^{-1}) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (a\cdot b)^{-1} = b^{-1}\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some other rearrangements with four elements. The algorithm for proof as in &lt;em&gt;group0_4_L2&lt;/em&gt; works very well here.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;rearr_ab_gr_4_elemA&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d = a\cdot d\cdot b\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d = a\cdot c\cdot (b\cdot d)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d = d\cdot (a\cdot b\cdot c)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = d\cdot a\cdot b\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = a\cdot d\cdot b\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d = a\cdot d\cdot b\cdot c&lt;/span&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d = c\cdot (a\cdot b)\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = c\cdot a\cdot b\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = a\cdot c\cdot b\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = a\cdot c\cdot (b\cdot d)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d = a\cdot c\cdot (b\cdot d)&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some rearrangements with four elements and inverse that are applications of &lt;em&gt;rearr_ab_gr_4_elem&lt;/em&gt;&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;rearr_ab_gr_4_elemB&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot c^{-1}\cdot d^{-1} = a\cdot d^{-1}\cdot b^{-1}\cdot c^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d^{-1} = a\cdot d^{-1}\cdot b\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c^{-1}\cdot d^{-1} =  a\cdot c^{-1}\cdot (b\cdot d^{-1})&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; b^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d^{-1} \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot c^{-1}\cdot d^{-1} = a\cdot d^{-1}\cdot b^{-1}\cdot c^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d^{-1} = a\cdot d^{-1}\cdot b\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c^{-1}\cdot d^{-1} =  a\cdot c^{-1}\cdot (b\cdot d^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;rearr_ab_gr_4_elemA &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;rearr_ab_gr_4_elemA &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;rearr_ab_gr_4_elemA &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;rearr_ab_gr_4_elemA&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$,   $ d\in G$  '' shows '' $ a\cdot b\cdot c\cdot d = a\cdot d\cdot b\cdot c$,  
$ a\cdot b\cdot c\cdot d = a\cdot c\cdot (b\cdot d)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some rearrangement lemmas with four elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L7&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d^{-1} = a\cdot d^{-1}\cdot  b\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot d\cdot (b\cdot d\cdot (c\cdot d))^{-1} = a\cdot (b\cdot c)^{-1}\cdot d^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)\cdot d = a\cdot b\cdot d\cdot c&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; b\cdot c \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d^{-1}\cdot b \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1}\cdot d \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (b\cdot c)^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot d \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot d\cdot c \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (b\cdot d\cdot c)^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot d \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot c \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d^{-1} = a\cdot (d^{-1}\cdot b\cdot c)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L4A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L4A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L4A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L4A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c = c\cdot a\cdot b$,  
$ a^{-1}\cdot (b^{-1}\cdot c^{-1})^{-1} = (a\cdot (b\cdot c)^{-1})^{-1}$,  
$ a\cdot (b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}$,  
$ a\cdot (b\cdot c^{-1})^{-1} = a\cdot b^{-1}\cdot c$,  
$ a\cdot b^{-1}\cdot c^{-1} = a\cdot c^{-1}\cdot b^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (d^{-1}\cdot b\cdot c) = a\cdot d^{-1}\cdot b\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d^{-1} = a\cdot d^{-1}\cdot  b\cdot c&lt;/span&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot d\cdot (b\cdot d\cdot (c\cdot d))^{-1} = a\cdot d\cdot (d^{-1}\cdot (b\cdot d\cdot c)^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = a\cdot (b\cdot d\cdot c)^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inv_cancel_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inv_cancel_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inv_cancel_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inv_cancel_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b^{-1}\cdot b = a$,  
$ a\cdot b\cdot b^{-1} = a$,   $ a^{-1}\cdot (a\cdot b) = b$,   $ a\cdot (a^{-1}\cdot b) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  =  a\cdot (d\cdot (b\cdot c))^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = a\cdot ((b\cdot c)^{-1}\cdot d^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  =  a\cdot (b\cdot c)^{-1}\cdot d^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot d\cdot (b\cdot d\cdot (c\cdot d))^{-1} = a\cdot (b\cdot c)^{-1}\cdot d^{-1}&lt;/span&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)\cdot d = a\cdot (b\cdot (c\cdot d))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  =  a\cdot (b\cdot (d\cdot c))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  =  a\cdot b\cdot d\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)\cdot d = a\cdot b\cdot d\cdot c&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some other rearrangements with four elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L8&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)^{-1} = (a\cdot d^{-1}\cdot c^{-1})\cdot (d\cdot b^{-1})&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot d) = c\cdot a\cdot (b\cdot d)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot d) = a\cdot c\cdot (b\cdot d)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c^{-1})\cdot d = a\cdot b\cdot d\cdot c^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (a\cdot b)\cdot (c\cdot d)^{-1}\cdot (b\cdot d^{-1})^{-1} = a\cdot c^{-1}&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; b\cdot c \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1}\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d^{-1}\cdot b \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1}\cdot d \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (b\cdot c)^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (c\cdot d)^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (b\cdot d^{-1})^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\cdot b^{-1} \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)^{-1} = a\cdot c^{-1}\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L14A &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L14A &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L14A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L14A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot c^{-1}= (a\cdot b^{-1})\cdot (b\cdot c^{-1})$,  
$ a^{-1}\cdot c = (a^{-1}\cdot b)\cdot (b^{-1}\cdot c)$,  
$ a\cdot (b\cdot c)^{-1} = a\cdot c^{-1}\cdot b^{-1}$,  
$ a\cdot (b\cdot c^{-1}) = a\cdot b\cdot c^{-1}$,  
$ (a\cdot b^{-1}\cdot c^{-1})^{-1} = c\cdot b\cdot a^{-1}$,  
$ a\cdot b\cdot c^{-1}\cdot (c\cdot b^{-1}) = a$,   $ a\cdot (b\cdot c)\cdot c^{-1} = a\cdot b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot c^{-1} = (a\cdot d^{-1})\cdot (d\cdot c^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L14A &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L14A &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L14A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L14A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot c^{-1}= (a\cdot b^{-1})\cdot (b\cdot c^{-1})$,  
$ a^{-1}\cdot c = (a^{-1}\cdot b)\cdot (b^{-1}\cdot c)$,  
$ a\cdot (b\cdot c)^{-1} = a\cdot c^{-1}\cdot b^{-1}$,  
$ a\cdot (b\cdot c^{-1}) = a\cdot b\cdot c^{-1}$,  
$ (a\cdot b^{-1}\cdot c^{-1})^{-1} = c\cdot b\cdot a^{-1}$,  
$ a\cdot b\cdot c^{-1}\cdot (c\cdot b^{-1}) = a$,   $ a\cdot (b\cdot c)\cdot c^{-1} = a\cdot b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)^{-1} = (a\cdot d^{-1})\cdot (d\cdot c^{-1})\cdot b^{-1}&lt;/span&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)^{-1}= a\cdot d^{-1}\cdot (c^{-1}\cdot d)\cdot b^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c)^{-1} = (a\cdot d^{-1}\cdot c^{-1})\cdot (d\cdot b^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot d) = a\cdot b\cdot c\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d = c\cdot a\cdot b\cdot d&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d = c\cdot (a\cdot b)\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = c\cdot a\cdot b\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; c\cdot a\cdot b\cdot d =  c\cdot a\cdot (b\cdot d)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot d) = c\cdot a\cdot (b\cdot d)&lt;/span&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot d) = a\cdot c\cdot (b\cdot d)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c^{-1})\cdot d = a\cdot b\cdot d\cdot c^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L7 &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L7 &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$,   $ d\in G$  '' shows '' $ a\cdot b\cdot c\cdot d^{-1} = a\cdot d^{-1}\cdot  b\cdot c$,  
$ a\cdot d\cdot (b\cdot d\cdot (c\cdot d))^{-1} = a\cdot (b\cdot c)^{-1}\cdot d^{-1}$,  
$ a\cdot (b\cdot c)\cdot d = a\cdot b\cdot d\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot b)\cdot (c\cdot d)^{-1}\cdot (b\cdot d^{-1})^{-1} = (a\cdot b)\cdot ((c\cdot d)^{-1}\cdot (b\cdot d^{-1})^{-1})&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = (a\cdot b)\cdot (c^{-1}\cdot d^{-1}\cdot (d\cdot b^{-1}))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  '' shows '' $  b^{-1}\cdot a^{-1} = (a\cdot b)^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L12 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L12 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L12 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L12&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ (a\cdot b^{-1})^{-1} = b\cdot a^{-1}$,   $ (a^{-1}\cdot b)^{-1} = b^{-1}\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = (a\cdot b)\cdot (c^{-1}\cdot (d^{-1}\cdot (d\cdot b^{-1})))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = a\cdot c^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L2 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L2 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 \in G \wedge  (\forall g\in G.\ (1 \cdot g = g \wedge  g\cdot 1  = g))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inv_cancel_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inv_cancel_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inv_cancel_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inv_cancel_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b^{-1}\cdot b = a$,  
$ a\cdot b\cdot b^{-1} = a$,   $ a^{-1}\cdot (a\cdot b) = b$,   $ a\cdot (a^{-1}\cdot b) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot b)\cdot (c\cdot d)^{-1}\cdot (b\cdot d^{-1})^{-1} = a\cdot c^{-1}&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some other rearrangements with four elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L8A&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (c\cdot d^{-1}) = a\cdot c\cdot (b^{-1}\cdot d^{-1})&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (c\cdot d^{-1}) = a\cdot c\cdot b^{-1}\cdot d^{-1}&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d^{-1} \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (c\cdot d^{-1}) = a\cdot c\cdot (b^{-1}\cdot d^{-1})&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L8 &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L8 &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L8 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L8&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$,   $ d\in G$  '' shows '' $ a\cdot (b\cdot c)^{-1} = (a\cdot d^{-1}\cdot c^{-1})\cdot (d\cdot b^{-1})$,  
$ a\cdot b\cdot (c\cdot d) = c\cdot a\cdot (b\cdot d)$,  
$ a\cdot b\cdot (c\cdot d) = a\cdot c\cdot (b\cdot d)$,  
$ a\cdot (b\cdot c^{-1})\cdot d = a\cdot b\cdot d\cdot c^{-1}$,  
$ (a\cdot b)\cdot (c\cdot d)^{-1}\cdot (b\cdot d^{-1})^{-1} = a\cdot c^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b^{-1}\cdot (c\cdot d^{-1}) = a\cdot c\cdot b^{-1}\cdot d^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some rearrangements with an equation.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; group0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;group0_4_L9&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; P \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; a = b\cdot c^{-1}\cdot d^{-1}&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; d = b\cdot a^{-1}\cdot c^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d = a^{-1}\cdot b\cdot c^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b = a\cdot d\cdot c&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; a^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d^{-1} \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot c^{-1} \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_op_closed &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_op_closed &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_op_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_op_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2, A3  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (d^{-1})^{-1} =  b\cdot c^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L18 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L18 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L18 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L18&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  ''and'' $ c = a\cdot b$  '' shows '' $ c\cdot b^{-1} = a$,   $ a^{-1}\cdot c = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; b\cdot c^{-1} = a\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  I: &lt;span class=&quot;math&quot;&gt; a^{-1}\cdot (b\cdot c^{-1}) = d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L18 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L18 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L18 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L18&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  ''and'' $ c = a\cdot b$  '' shows '' $ c\cdot b^{-1} = a$,   $ a^{-1}\cdot c = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; d = b\cdot a^{-1}\cdot c^{-1}&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d = a^{-1}\cdot b\cdot c^{-1}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A3  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot d\cdot c = (b\cdot c^{-1}\cdot d^{-1})\cdot d\cdot c&lt;/span&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = b\cdot c^{-1}\cdot (d^{-1}\cdot d)\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  =  b\cdot c^{-1}\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L2 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L2 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 \in G \wedge  (\forall g\in G.\ (1 \cdot g = g \wedge  g\cdot 1  = g))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  =  b\cdot (c^{-1}\cdot c)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L2 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L2 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 \in G \wedge  (\forall g\in G.\ (1 \cdot g = g \wedge  g\cdot 1  = g))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot d\cdot c = b&lt;/span&gt; &lt;br&gt; &lt;strong&gt;thus&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; b = a\cdot d\cdot c&lt;/span&gt;&lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt; &lt;strong&gt;end&lt;br&gt;&lt;br&gt;&lt;/strong&gt; &lt;h1&gt;&lt;a openedtip=&quot;click to add comment&quot; openedtext=&quot;Comments on AbelianGroup_ZF&quot; closedtip=&quot;click to add comment&quot; closedtext=&quot;Comments on AbelianGroup_ZF&quot; title=&quot;click to add comment&quot; href=&quot;javascript:;&quot;&gt;Comments on AbelianGroup_ZF&lt;/a&gt;&lt;/h1&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;span&gt; &lt;div&gt; &lt;iframe style=&quot;width: 60%; height: 500px;&quot; src=&quot;http://www.haloscan.com/comments/slawekk/AbelianGroup_ZF&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/span&gt;&lt;/div&gt; &lt;br&gt;</description>
<link>http://formalmath.tiddlyspot.com#AbelianGroup_ZF</link>
<pubDate>Sun, 26 Oct 2008 22:53:00 GMT</pubDate>
</item>
<item>
<title>Ring_ZF</title>
<description> &lt;strong&gt;theory&lt;/strong&gt; &lt;a tiddlylink=&quot;Ring_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Ring_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Ring_ZF&quot; class=&quot;externalLink&quot;&gt;Ring_ZF&lt;/a&gt; &lt;strong&gt;imports&lt;/strong&gt; &lt;a tiddlylink=&quot;AbelianGroup_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#AbelianGroup_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#AbelianGroup_ZF&quot; class=&quot;externalLink&quot;&gt;AbelianGroup_ZF&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;strong&gt;begin&lt;br&gt;&lt;/strong&gt; &lt;br&gt;This theory file covers basic facts about rings.&lt;br&gt;&lt;br&gt;&lt;h1&gt;Definition and basic properties&lt;/h1&gt;&lt;br&gt;In this section we define what is a ring and list the basic properties of rings.&lt;br&gt;&lt;br&gt;We say that three sets &lt;span class=&quot;math&quot;&gt;(R,A,M)&lt;/span&gt; form a ring if &lt;span class=&quot;math&quot;&gt;(R,A)&lt;/span&gt; is an abelian group, &lt;span class=&quot;math&quot;&gt;(R,M)&lt;/span&gt; is a monoid and &lt;span class=&quot;math&quot;&gt;A&lt;/span&gt; is distributive with respect to &lt;span class=&quot;math&quot;&gt;M&lt;/span&gt; on &lt;span class=&quot;math&quot;&gt;R&lt;/span&gt;. &lt;span class=&quot;math&quot;&gt;A&lt;/span&gt; represents the additive operation on &lt;span class=&quot;math&quot;&gt;R&lt;/span&gt;. As such it is a subset of &lt;span class=&quot;math&quot;&gt;(R\times R)\times R&lt;/span&gt; (recall that in ZF set theory functions are sets). Similarly &lt;span class=&quot;math&quot;&gt;M&lt;/span&gt; represents the multiplicative operation on &lt;span class=&quot;math&quot;&gt;R&lt;/span&gt; and is also a subset of &lt;span class=&quot;math&quot;&gt;(R\times R)\times R&lt;/span&gt;. We don't require the multiplicative operation to be commutative in the definition of a ring.&lt;br&gt;&lt;br&gt; &lt;strong&gt;Definition&lt;br&gt;&lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; IsAring(R,A,M) \equiv  \text{IsAgroup}(R,A) \wedge  (A \text{ is commutative on } R) \wedge  &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;  \text{IsAmonoid}(R,M) \wedge  IsDistributive(R,A,M)&lt;/span&gt;&lt;br&gt;&lt;br&gt;We also define the notion of having no zero divisors. In standard notation the ring has no zero divisors if for all &lt;span class=&quot;math&quot;&gt;a,b \in R&lt;/span&gt; we have &lt;span class=&quot;math&quot;&gt;a\cdot b = 0&lt;/span&gt; implies &lt;span class=&quot;math&quot;&gt;a = 0&lt;/span&gt; or &lt;span class=&quot;math&quot;&gt;b = 0&lt;/span&gt;.&lt;br&gt;&lt;br&gt; &lt;strong&gt;Definition&lt;br&gt;&lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; HasNoZeroDivs(R,A,M) \equiv  (\forall a\in R.\  \forall b\in R.\  &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;  M\langle  a,b\rangle  = TheNeutralElement(R,A) \longrightarrow &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;  a = TheNeutralElement(R,A) \vee  b = TheNeutralElement(R,A))&lt;/span&gt;&lt;br&gt;&lt;br&gt;Next we define a locale that will be used when considering rings.&lt;br&gt;&lt;br&gt; &lt;strong&gt;Locale &lt;/strong&gt; ring0&lt;br&gt; &lt;strong&gt;assumes &lt;/strong&gt; ringAssum: &lt;span class=&quot;math&quot;&gt; IsAring(R,A,M)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a + b \equiv  A\langle  a,b\rangle &lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; ( - a) \equiv  GroupInv(R,A)(a)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a - b \equiv  a + ( - b)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b \equiv  M\langle  a,b\rangle &lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; 0  \equiv  TheNeutralElement(R,A)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; 1  \equiv  TheNeutralElement(R,M)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt;  2  \equiv  1  + 1 &lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a^2  \equiv  a\cdot a&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;In the &lt;em&gt;ring0&lt;/em&gt; context we can use theorems proven in some other contexts.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L1&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; monoid0(R,M)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; group0(R,A)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; A \text{ is commutative on } R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;ringAssum&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;IsAring_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;IsAring_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAring_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAring&amp;lt;/nowiki&amp;gt;:
$ IsAring(R,A,M) \equiv  \text{IsAgroup}(R,A) \wedge  (A \text{ is commutative on } R) \wedge  $
$  \text{IsAmonoid}(R,M) \wedge  IsDistributive(R,A,M)$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;group0_def&lt;/span&gt; ,  &lt;span&gt;monoid0_def&lt;/span&gt;&lt;br&gt;&lt;br&gt;The additive operation in a ring is distributive with respect to the multiplicative operation.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;ring_oper_distr&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot (b + c) = a\cdot b  +  a\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (b + c)\cdot a = b\cdot a  +  c\cdot a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;ringAssum&lt;/span&gt; ,  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;IsAring_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;IsAring_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAring_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAring&amp;lt;/nowiki&amp;gt;:
$ IsAring(R,A,M) \equiv  \text{IsAgroup}(R,A) \wedge  (A \text{ is commutative on } R) \wedge  $
$  \text{IsAmonoid}(R,M) \wedge  IsDistributive(R,A,M)$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsDistributive_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsDistributive_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsDistributive_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsDistributive&amp;lt;/nowiki&amp;gt;:
$ IsDistributive(X,A,M) \equiv  (\forall a\in X.\ \forall b\in X.\ \forall c\in X.\ $
$  M\langle a,A\langle b,c\rangle \rangle  = A\langle M\langle a,b\rangle ,M\langle a,c\rangle \rangle  \wedge  $
$  M\langle A\langle b,c\rangle ,a\rangle  = A\langle M\langle b,a\rangle ,M\langle c,a\rangle  \rangle )$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Zero and one of the ring are elements of the ring. The negative of zero is zero.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L2&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; 0 \in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; 1 \in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - 0 ) = 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L2 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L2 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 \in G \wedge  (\forall g\in G.\ (1 \cdot g = g \wedge  g\cdot 1  = g))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Monoid_ZF &quot; openedtext=&quot;unit_is_neutral &quot; closedtip=&quot; Monoid_ZF &quot; closedtext=&quot;unit_is_neutral &quot; class=&quot;button&quot; title=&quot; Monoid_ZF &quot; href=&quot;javascript:;&quot;&gt;unit_is_neutral &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' monoid0 '') '' &amp;lt;nowiki&amp;gt;unit_is_neutral&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ e = TheNeutralElement(G,f)$  '' shows '' $ e \in  G \wedge  (\forall g\in G.\  e \oplus  g = g \wedge  g \oplus  e = g)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_one &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_one &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_one &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_one&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 ^{-1} = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;The next lemma lists some properties of a ring that require one element of a ring.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L3&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; ( - a) \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - ( - a)) = a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a + 0  = a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; 0  + a = a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot 1  = a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; 1 \cdot a = a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a - a = 0 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a - 0  = a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt;  2 \cdot a = a + a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - a) + a = 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inverse_in_group &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inverse_in_group &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inverse_in_group &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inverse_in_group&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x^{-1}\in G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L2 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L2 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 1 \in G \wedge  (\forall g\in G.\ (1 \cdot g = g \wedge  g\cdot 1  = g))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Monoid_ZF &quot; openedtext=&quot;unit_is_neutral &quot; closedtip=&quot; Monoid_ZF &quot; closedtext=&quot;unit_is_neutral &quot; class=&quot;button&quot; title=&quot; Monoid_ZF &quot; href=&quot;javascript:;&quot;&gt;unit_is_neutral &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' monoid0 '') '' &amp;lt;nowiki&amp;gt;unit_is_neutral&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ e = TheNeutralElement(G,f)$  '' shows '' $ e \in  G \wedge  (\forall g\in G.\  e \oplus  g = g \wedge  g \oplus  e = g)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Properties that require two elements of a ring.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L4&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a + b \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a - b \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a + b = b + a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;ringAssum&lt;/span&gt; ,  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L1 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L1 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(G,P)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Monoid_ZF &quot; openedtext=&quot;group0_1_L1 &quot; closedtip=&quot; Monoid_ZF &quot; closedtext=&quot;group0_1_L1 &quot; class=&quot;button&quot; title=&quot; Monoid_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' monoid0 '') '' &amp;lt;nowiki&amp;gt;group0_1_L1&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\oplus b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;IsAring_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;IsAring_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAring_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAring&amp;lt;/nowiki&amp;gt;:
$ IsAring(R,A,M) \equiv  \text{IsAgroup}(R,A) \wedge  (A \text{ is commutative on } R) \wedge  $
$  \text{IsAmonoid}(R,M) \wedge  IsDistributive(R,A,M)$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Cancellation of an element on both sides of equality. This is a property of groups, written in the (additive) notation we use for the additive operation in rings.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;ring_cancel_add&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a  +  b = a&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b = 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L7 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L7 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  ''and'' $ a\cdot b = a$  '' shows '' $ b=1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Any element of a ring multiplied by zero is zero.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L6&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; x\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; 0 \cdot x = 0 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; x\cdot 0  = 0 &lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;let &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a = x\cdot 1 &lt;/span&gt;&lt;br&gt; &lt;strong&gt;let &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b = x\cdot 0 &lt;/span&gt;&lt;br&gt; &lt;strong&gt;let &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; c = 1 \cdot x&lt;/span&gt;&lt;br&gt; &lt;strong&gt;let &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; d = 0 \cdot x&lt;/span&gt;&lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a  +  b = x\cdot (1   +  0 )&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c  +  d = (1   +  0 )\cdot x&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; x\cdot (1   +  0 ) = a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (1   +  0 )\cdot x = c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a  +  b = a&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; T1: &lt;span class=&quot;math&quot;&gt; c  +  d = c&lt;/span&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b \in  R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; T2: &lt;span class=&quot;math&quot;&gt; c \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d \in  R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; b = 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_cancel_add &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_cancel_add &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_cancel_add &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_cancel_add&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  ''and'' $ a  +  b = a$  '' shows '' $ b = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; T2, T1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; d = 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_cancel_add &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_cancel_add &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_cancel_add &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_cancel_add&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  ''and'' $ a  +  b = a$  '' shows '' $ b = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; x\cdot 0  = 0 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; 0 \cdot x = 0 &lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Negative can be pulled out of a product.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L7&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; ( - a)\cdot b =  - (a\cdot b)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot ( - b) =  - (a\cdot b)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - a)\cdot b = a\cdot ( - b)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  I: &lt;span class=&quot;math&quot;&gt; a\cdot b \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - a) \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (( - a)\cdot b) \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - b) \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot ( - b) \in  R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; ( - a)\cdot b  +  a\cdot b = 0 &lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; II: &lt;span class=&quot;math&quot;&gt; a\cdot ( - b)  +  a\cdot b = 0 &lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, I  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; ( - a)\cdot b  +  a\cdot b = (( - a) +  a)\cdot b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot ( - b)  +  a\cdot b= a\cdot (( - b) + b)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (( - a) +  a)\cdot b = 0 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (( - b) + b) = 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L6 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L6 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in G$  '' shows '' $ x\cdot x^{-1} = 1  \wedge  x^{-1}\cdot x = 1 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L6 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L6 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in R$  '' shows '' $ 0 \cdot x = 0 $,   $ x\cdot 0  = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; ( - a)\cdot b  +  a\cdot b = 0 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot ( - b)  +  a\cdot b = 0 &lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; ( - a)\cdot b =  - (a\cdot b)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L9 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L9 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L9 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L9&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  ''and'' $ a\cdot b = 1 $  '' shows '' $ a = b^{-1}$  ''and'' $ b = a^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; I, II  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot ( - b) =  - (a\cdot b)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L9 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L9 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L9 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L9&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  ''and'' $ b\in G$  ''and'' $ a\cdot b = 1 $  '' shows '' $ a = b^{-1}$  ''and'' $ b = a^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; ( - a)\cdot b = a\cdot ( - b)&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Minus times minus is plus.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L7A&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; ( - a)\cdot ( - b) = a\cdot b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L7 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L7 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ ( - a)\cdot b =  - (a\cdot b)$,  
$ a\cdot ( - b) =  - (a\cdot b)$,   $ ( - a)\cdot b = a\cdot ( - b)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Subtraction is distributive with respect to multiplication.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L8&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot (b - c) = a\cdot b  -  a\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (b - c)\cdot a = b\cdot a  -  c\cdot a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L7 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L7 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ ( - a)\cdot b =  - (a\cdot b)$,  
$ a\cdot ( - b) =  - (a\cdot b)$,   $ ( - a)\cdot b = a\cdot ( - b)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Other basic properties involving two elements of a ring.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L9&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; ( - b) - a = ( - a) - b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - (a + b)) = ( - a) - b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - (a - b)) = (( - a) + b)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a - ( - b) = a + b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;span&gt;ringAssum&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;IsAring_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;IsAring_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAring_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAring&amp;lt;/nowiki&amp;gt;:
$ IsAring(R,A,M) \equiv  \text{IsAgroup}(R,A) \wedge  (A \text{ is commutative on } R) \wedge  $
$  \text{IsAmonoid}(R,M) \wedge  IsDistributive(R,A,M)$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L4 &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L4 &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ b^{-1}\cdot a^{-1} = a^{-1}\cdot b^{-1}$,  
$ (a\cdot b)^{-1} = a^{-1}\cdot b^{-1}$,   $ (a\cdot b^{-1})^{-1} = a^{-1}\cdot b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_inv_of_inv &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_inv_of_inv &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_inv_of_inv &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_inv_of_inv&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$  '' shows '' $ a = (a^{-1})^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;If the difference of two element is zero, then those elements are equal.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L9A&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a - b = 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a=b&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; group0(R,A)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; A\langle a,GroupInv(R,A)(b)\rangle  = TheNeutralElement(R,A)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a=b&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L11A &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L11A &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L11A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L11A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  ''and'' $ a\cdot b^{-1} = 1 $  '' shows '' $ a=b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Other basic properties involving three elements of a ring.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L10&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a + (b + c) = a + b + c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a - (b + c) = a - b - c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a - (b - c) = a - b + c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;span&gt;ringAssum&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;IsAring_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;IsAring_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAring_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAring&amp;lt;/nowiki&amp;gt;:
$ IsAring(R,A,M) \equiv  \text{IsAgroup}(R,A) \wedge  (A \text{ is commutative on } R) \wedge  $
$  \text{IsAmonoid}(R,M) \wedge  IsDistributive(R,A,M)$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L4A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L4A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L4A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L4A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot b\cdot c = c\cdot a\cdot b$,  
$ a^{-1}\cdot (b^{-1}\cdot c^{-1})^{-1} = (a\cdot (b\cdot c)^{-1})^{-1}$,  
$ a\cdot (b\cdot c)^{-1} = a\cdot b^{-1}\cdot c^{-1}$,  
$ a\cdot (b\cdot c^{-1})^{-1} = a\cdot b^{-1}\cdot c$,  
$ a\cdot b^{-1}\cdot c^{-1} = a\cdot c^{-1}\cdot b^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Another property with three elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L10A&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a + (b - c) = a + b - c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L10 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L10 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L10 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L10&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + (b + c) = a + b + c$,   $ a - (b + c) = a - b - c$,   $ a - (b - c) = a - b + c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Associativity of addition and multiplication.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L11&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a + b + c = a + (b + c)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c = a\cdot (b\cdot c)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;span&gt;ringAssum&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group_oper_assoc &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group_oper_assoc &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group_oper_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group_oper_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$,   $ c\in G$  '' shows '' $ a\cdot (b\cdot c) = a\cdot b\cdot c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;IsAring_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;IsAring_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAring_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAring&amp;lt;/nowiki&amp;gt;:
$ IsAring(R,A,M) \equiv  \text{IsAgroup}(R,A) \wedge  (A \text{ is commutative on } R) \wedge  $
$  \text{IsAmonoid}(R,M) \wedge  IsDistributive(R,A,M)$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Monoid_ZF &quot; openedtext=&quot;IsAmonoid_def &quot; closedtip=&quot; Monoid_ZF &quot; closedtext=&quot;IsAmonoid_def &quot; class=&quot;button&quot; title=&quot; Monoid_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAmonoid_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAmonoid&amp;lt;/nowiki&amp;gt;:
$ \text{IsAmonoid}(G,f) \equiv $
$  f \text{ is associative on } G \wedge  $
$  (\exists e\in G.\  (\forall  g\in G.\  ( (f(\langle e,g\rangle ) = g) \wedge  (f(\langle g,e\rangle ) = g))))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsAssociative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsAssociative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAssociative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAssociative&amp;lt;/nowiki&amp;gt;:
$ P \text{ is associative on } G \equiv  P : G\times G\rightarrow G \wedge  $
$  (\forall  x \in  G.\  \forall  y \in  G.\  \forall  z \in  G.\  $
$  ( P(\langle P(\langle x,y\rangle ),z\rangle ) = P( \langle x,P(\langle y,z\rangle )\rangle  )))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;An interpretation of what it means that a ring has no zero divisors.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L12&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; HasNoZeroDivs(R,A,M)&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\neq 0 &lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\neq 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\neq 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;HasNoZeroDivs_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;HasNoZeroDivs_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;HasNoZeroDivs_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;HasNoZeroDivs&amp;lt;/nowiki&amp;gt;:
$ HasNoZeroDivs(R,A,M) \equiv  (\forall a\in R.\  \forall b\in R.\  $
$  M\langle  a,b\rangle  = TheNeutralElement(R,A) \longrightarrow $
$  a = TheNeutralElement(R,A) \vee  b = TheNeutralElement(R,A))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;In rings with no zero divisors we can cancel nonzero factors.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L12A&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; HasNoZeroDivs(R,A,M)&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; a\cdot c = b\cdot c&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A4: &lt;span class=&quot;math&quot;&gt; c\neq 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a=b&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; a\cdot c \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a - b \in  R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2, A3  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a - b = 0  \vee  c=0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L8 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L8 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L8 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L8&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b - c) = a\cdot b  -  a\cdot c$,   $ (b - c)\cdot a = b\cdot a  -  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;HasNoZeroDivs_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;HasNoZeroDivs_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;HasNoZeroDivs_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;HasNoZeroDivs&amp;lt;/nowiki&amp;gt;:
$ HasNoZeroDivs(R,A,M) \equiv  (\forall a\in R.\  \forall b\in R.\  $
$  M\langle  a,b\rangle  = TheNeutralElement(R,A) \longrightarrow $
$  a = TheNeutralElement(R,A) \vee  b = TheNeutralElement(R,A))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2, A4  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a - b = 0 &lt;/span&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a=b&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L9A &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L9A &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L9A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L9A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  ''and'' $ a - b = 0 $  '' shows '' $ a=b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;In rings with no zero divisors if two elements are different, then after multiplying by a nonzero element they are still different.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L12B&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; HasNoZeroDivs(R,A,M)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\neq b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\neq 0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot c \neq  b\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;A1&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L12A &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L12A &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L12A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L12A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ HasNoZeroDivs(R,A,M)$  ''and'' $ a\in R$,   $ b\in R$,   $ c\in R$  ''and'' $ a\cdot c = b\cdot c$  ''and'' $ c\neq 0 $  '' shows '' $ a=b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;In rings with no zero divisors multiplying a nonzero element by a nonone element changes the value.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L12C&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; HasNoZeroDivs(R,A,M)&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; 0 \neq a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; 1 \neq b&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a \neq  a\cdot b&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;a openedtip=&quot;hide { &quot; openedtext=&quot;{ &quot; closedtip=&quot;show { &quot; closedtext=&quot;{ &quot; class=&quot;button&quot; title=&quot;hide { &quot; href=&quot;javascript:;&quot;&gt;{ &lt;/a&gt;&lt;div style=&quot;display: block;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;assume &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a = a\cdot b&lt;/span&gt;&lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a = 0  \vee  b - 1  = 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L8 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L8 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L8 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L8&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b - c) = a\cdot b  -  a\cdot c$,   $ (b - c)\cdot a = b\cdot a  -  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;HasNoZeroDivs_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;HasNoZeroDivs_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;HasNoZeroDivs_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;HasNoZeroDivs&amp;lt;/nowiki&amp;gt;:
$ HasNoZeroDivs(R,A,M) \equiv  (\forall a\in R.\  \forall b\in R.\  $
$  M\langle  a,b\rangle  = TheNeutralElement(R,A) \longrightarrow $
$  a = TheNeutralElement(R,A) \vee  b = TheNeutralElement(R,A))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2, A3  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; False&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L9A &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L9A &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L9A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L9A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  ''and'' $ a - b = 0 $  '' shows '' $ a=b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;  &lt;strong&gt;}&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a \neq  a\cdot b&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;If a square is nonzero, then the element is nonzero.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L13&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a^2  \neq  0 &lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\neq 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L6 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L6 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in R$  '' shows '' $ 0 \cdot x = 0 $,   $ x\cdot 0  = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Square of an element and its opposite are the same.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L14&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; ( - a)^2  = ((a)^2 )&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L7A &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L7A &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L7A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L7A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ ( - a)\cdot ( - b) = a\cdot b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Adding zero to a set that is closed under addition results in a set that is also closed under addition. This is a property of groups.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L15&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; H \subseteq  R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; H \text{ is closed under } A&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (H \cup  \{0 \}) \text{ is closed under } A&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;group0_2_L17 &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;group0_2_L17 &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_2_L17 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_2_L17&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ H\subseteq G$  ''and'' $ H \text{ is closed under } P$  '' shows '' $ (H \cup  \{1 \}) \text{ is closed under } P$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Adding zero to a set that is closed under multiplication results in a set that is also closed under multiplication.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L16&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; H \subseteq  R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; H \text{ is closed under } M&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (H \cup  \{0 \}) \text{ is closed under } M&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L6 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L6 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in R$  '' shows '' $ 0 \cdot x = 0 $,   $ x\cdot 0  = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsOpClosed_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsOpClosed_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsOpClosed_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsOpClosed&amp;lt;/nowiki&amp;gt;:
$ A \text{ is closed under } f \equiv  \forall x\in A.\  \forall y\in A.\  f\langle x,y\rangle  \in  A$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;The ring is trivial iff &lt;span class=&quot;math&quot;&gt;0=1&lt;/span&gt;.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L17&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; R = \{0 \} \longleftrightarrow  0 =1 &lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;assume &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; R = \{0 \}&lt;/span&gt;&lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; 0 =1 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;next &lt;/strong&gt; &lt;br&gt; &lt;strong&gt;assume &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; 0  = 1 &lt;/span&gt;&lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; R \subseteq  \{0 \}&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L6 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L6 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L6 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L6&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x\in R$  '' shows '' $ 0 \cdot x = 0 $,   $ x\cdot 0  = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \{0 \} \subseteq  R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; R = \{0 \}&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;The sets &lt;span class=&quot;math&quot;&gt;\{m\cdot x. x\in R\}&lt;/span&gt; and &lt;span class=&quot;math&quot;&gt;\{-m\cdot x. x\in R\}&lt;/span&gt; are the same.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_1_L18&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; m\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \{m\cdot x.\  x\in R\} = \{( - m)\cdot x.\  x\in R\}&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;a openedtip=&quot;hide { &quot; openedtext=&quot;{ &quot; closedtip=&quot;show { &quot; closedtext=&quot;{ &quot; class=&quot;button&quot; title=&quot;hide { &quot; href=&quot;javascript:;&quot;&gt;{ &lt;/a&gt;&lt;div style=&quot;display: block;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;fix &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a&lt;/span&gt;&lt;br&gt; &lt;strong&gt;assume &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a \in  \{m\cdot x.\  x\in R\}&lt;/span&gt;&lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;obtain &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; x&lt;/span&gt; &lt;strong&gt;where &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; x\in R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a = m\cdot x&lt;/span&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; ( - x) \in  R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a = ( - m)\cdot ( - x)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L7A &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L7A &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L7A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L7A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ ( - a)\cdot ( - b) = a\cdot b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a \in  \{( - m)\cdot x.\  x\in R\}&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;  &lt;strong&gt;}&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \{m\cdot x.\  x\in R\} \subseteq  \{( - m)\cdot x.\  x\in R\}&lt;/span&gt; &lt;br&gt; &lt;strong&gt;next &lt;/strong&gt; &lt;br&gt;&lt;a openedtip=&quot;hide { &quot; openedtext=&quot;{ &quot; closedtip=&quot;show { &quot; closedtext=&quot;{ &quot; class=&quot;button&quot; title=&quot;hide { &quot; href=&quot;javascript:;&quot;&gt;{ &lt;/a&gt;&lt;div style=&quot;display: block;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;fix &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a&lt;/span&gt;&lt;br&gt; &lt;strong&gt;assume &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a \in  \{( - m)\cdot x.\  x\in R\}&lt;/span&gt;&lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;obtain &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; x&lt;/span&gt; &lt;strong&gt;where &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; x\in R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a = ( - m)\cdot x&lt;/span&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; ( - x) \in  R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a = m\cdot ( - x)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L7 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L7 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ ( - a)\cdot b =  - (a\cdot b)$,  
$ a\cdot ( - b) =  - (a\cdot b)$,   $ ( - a)\cdot b = a\cdot ( - b)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a \in  \{m\cdot x.\  x\in R\}&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;  &lt;strong&gt;}&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \{( - m)\cdot x.\  x\in R\} \subseteq  \{m\cdot x.\  x\in R\}&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Rearrangement lemmas&lt;/h1&gt;&lt;br&gt;In happens quite often that we want to show a fact like &lt;span class=&quot;math&quot;&gt;(a+b)c+d = (ac+d-e)+(bc+e)&lt;/span&gt;in rings. This is trivial in romantic math and probably there is a way to make it trivial in formalized math. However, I don't know any other way than to tediously prove each such rearrangement when it is needed. This section collects facts of this type.&lt;br&gt;&lt;br&gt;Rearrangements with two elements of a ring.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_2_L1&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a + b\cdot a = (b + 1 )\cdot a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Rearrangements with two elements and cancelling.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_2_L1A&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a - b + b = a&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a + b - a = b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - a) + b + a = b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; ( - a) + (b + a) = b&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a + (b - a) = b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Group_ZF &quot; openedtext=&quot;inv_cancel_two &quot; closedtip=&quot; Group_ZF &quot; closedtext=&quot;inv_cancel_two &quot; class=&quot;button&quot; title=&quot; Group_ZF &quot; href=&quot;javascript:;&quot;&gt;inv_cancel_two &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;inv_cancel_two&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b^{-1}\cdot b = a$,  
$ a\cdot b\cdot b^{-1} = a$,   $ a^{-1}\cdot (a\cdot b) = b$,   $ a\cdot (a^{-1}\cdot b) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L6A &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L6A &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L6A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L6A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b\cdot a^{-1} = b$,  
$ a^{-1}\cdot b\cdot a = b$,   $ a^{-1}\cdot (b\cdot a) = b$,   $ a\cdot (b\cdot a^{-1}) = b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;In commutative rings &lt;span class=&quot;math&quot;&gt;a-(b+1)c = (a-d-c)+(d-bc)&lt;/span&gt;. For unknown reasons we have to use the raw set notation in the proof, otherwise all methods fail.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_2_L2&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a - (b + 1 )\cdot c = (a - d - c) + (d - b\cdot c)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;let &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; B = b\cdot c&lt;/span&gt;&lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; ringAssum  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; A \text{ is commutative on } R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;IsAring_def &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;IsAring_def &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAring_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAring&amp;lt;/nowiki&amp;gt;:
$ IsAring(R,A,M) \equiv  \text{IsAgroup}(R,A) \wedge  (A \text{ is commutative on } R) \wedge  $
$  \text{IsAmonoid}(R,M) \wedge  IsDistributive(R,A,M)$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; B \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; A\langle a, GroupInv(R,A)(A\langle B, c\rangle )\rangle  =&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;    A\langle A\langle A\langle a, GroupInv(R, A)(d)\rangle ,GroupInv(R, A)(c)\rangle ,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;    A\langle d,GroupInv(R, A)(B)\rangle \rangle &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L8 &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L8 &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L8 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L8&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$,   $ d\in G$  '' shows '' $ a\cdot (b\cdot c)^{-1} = (a\cdot d^{-1}\cdot c^{-1})\cdot (d\cdot b^{-1})$,  
$ a\cdot b\cdot (c\cdot d) = c\cdot a\cdot (b\cdot d)$,  
$ a\cdot b\cdot (c\cdot d) = a\cdot c\cdot (b\cdot d)$,  
$ a\cdot (b\cdot c^{-1})\cdot d = a\cdot b\cdot d\cdot c^{-1}$,  
$ (a\cdot b)\cdot (c\cdot d)^{-1}\cdot (b\cdot d^{-1})^{-1} = a\cdot c^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L2 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L2 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L2 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L2&amp;lt;/nowiki&amp;gt;:  '' shows '' $ 0 \in R$,   $ 1 \in R$,   $ ( - 0 ) = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Rerrangement about adding linear functions.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_2_L3&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; x\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (a\cdot x  +  b)  +  (c\cdot x  +  d) = (a + c)\cdot x  +  (b + d)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; group0(R,A)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; A \text{ is commutative on } R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot x \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\cdot x \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; A\langle A\langle  a\cdot x,b\rangle ,A\langle  c\cdot x,d\rangle \rangle  = A\langle A\langle  a\cdot x,c\cdot x\rangle ,A\langle  b,d\rangle \rangle &lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;group0_4_L8 &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;group0_4_L8 &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;group0_4_L8 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;group0_4_L8&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$,   $ d\in G$  '' shows '' $ a\cdot (b\cdot c)^{-1} = (a\cdot d^{-1}\cdot c^{-1})\cdot (d\cdot b^{-1})$,  
$ a\cdot b\cdot (c\cdot d) = c\cdot a\cdot (b\cdot d)$,  
$ a\cdot b\cdot (c\cdot d) = a\cdot c\cdot (b\cdot d)$,  
$ a\cdot (b\cdot c^{-1})\cdot d = a\cdot b\cdot d\cdot c^{-1}$,  
$ (a\cdot b)\cdot (c\cdot d)^{-1}\cdot (b\cdot d^{-1})^{-1} = a\cdot c^{-1}$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (a\cdot x  +  b)  +  (c\cdot x  +  d) = (a + c)\cdot x  +  (b + d)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Rearrangement with three elements&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_2_L4&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; M \text{ is commutative on } R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c) = a\cdot c\cdot b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some other rearrangements with three elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;ring_rearr_3_elemA&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; M \text{ is commutative on } R&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot (a\cdot c)  -  b\cdot ( - b\cdot c) = (a\cdot a  +  b\cdot b)\cdot c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot ( - b\cdot c)  +  b\cdot (a\cdot c) = 0 &lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; b\cdot c \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot a \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot b \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot (b\cdot c) \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (b\cdot c) \in  R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (a\cdot c)  -  b\cdot ( - b\cdot c) = (a\cdot a  +  b\cdot b)\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L7 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L7 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ ( - a)\cdot b =  - (a\cdot b)$,  
$ a\cdot ( - b) =  - (a\cdot b)$,   $ ( - a)\cdot b = a\cdot ( - b)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot ( - b\cdot c)  +  b\cdot (a\cdot c) = ( - a\cdot (b\cdot c))  +  b\cdot a\cdot c&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L7 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L7 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L7 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L7&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ ( - a)\cdot b =  - (a\cdot b)$,  
$ a\cdot ( - b) =  - (a\cdot b)$,   $ ( - a)\cdot b = a\cdot ( - b)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = 0 &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L3 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L3 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L3 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L3&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$  '' shows '' $ ( - a) \in  R$,   $ ( - ( - a)) = a$,   $ a + 0  = a$,   $ 0  + a = a$,   $ a\cdot 1  = a$,  
$ 1 \cdot a = a$,   $ a - a = 0 $,   $ a - 0  = a$,   $  2 \cdot a = a + a$,   $ ( - a) + a = 0 $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot ( - b\cdot c)  +  b\cdot (a\cdot c) = 0 &lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Some rearrangements with four elements. Properties of abelian groups.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_2_L5&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a  -  b  -  c  -  d = a  -  d  -  b  -  c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a  +  b  +  c  -  d = a  -  d  +  b  +  c&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a  +  b  -  c  -  d = a  -  c  +  (b  -  d)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a  +  b  +  c  +  d = a  +  c  +  (b  +  d)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L1 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L1 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L1 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L1&amp;lt;/nowiki&amp;gt;:  '' shows '' $ monoid0(R,M)$,   $ group0(R,A)$,   $ A \text{ is commutative on } R$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;rearr_ab_gr_4_elemB &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;rearr_ab_gr_4_elemB &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;rearr_ab_gr_4_elemB &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;rearr_ab_gr_4_elemB&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$,   $ d\in G$  '' shows '' $ a\cdot b^{-1}\cdot c^{-1}\cdot d^{-1} = a\cdot d^{-1}\cdot b^{-1}\cdot c^{-1}$,  
$ a\cdot b\cdot c\cdot d^{-1} = a\cdot d^{-1}\cdot b\cdot c$,  
$ a\cdot b\cdot c^{-1}\cdot d^{-1} =  a\cdot c^{-1}\cdot (b\cdot d^{-1})$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; AbelianGroup_ZF &quot; openedtext=&quot;rearr_ab_gr_4_elemA &quot; closedtip=&quot; AbelianGroup_ZF &quot; closedtext=&quot;rearr_ab_gr_4_elemA &quot; class=&quot;button&quot; title=&quot; AbelianGroup_ZF &quot; href=&quot;javascript:;&quot;&gt;rearr_ab_gr_4_elemA &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' group0 '') '' &amp;lt;nowiki&amp;gt;rearr_ab_gr_4_elemA&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ P \text{ is commutative on } G$  ''and'' $ a\in G$,   $ b\in G$,   $ c\in G$,   $ d\in G$  '' shows '' $ a\cdot b\cdot c\cdot d = a\cdot d\cdot b\cdot c$,  
$ a\cdot b\cdot c\cdot d = a\cdot c\cdot (b\cdot d)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Two big rearranegements with six elements, useful for proving properties of complex addition and multiplication.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; ring0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;Ring_ZF_2_L6&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; e\in R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; f\in R&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot (c\cdot e  -  d\cdot f)  -  b\cdot (c\cdot f  +  d\cdot e) =&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;  (a\cdot c  -  b\cdot d)\cdot e  -  (a\cdot d  +  b\cdot c)\cdot f&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (c\cdot f  +  d\cdot e)  +  b\cdot (c\cdot e  -  d\cdot f) =&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;  (a\cdot c  -  b\cdot d)\cdot f  +  (a\cdot d  +  b\cdot c)\cdot e&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (c + e)  -  b\cdot (d + f) = a\cdot c  -  b\cdot d  +  (a\cdot e  -  b\cdot f)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (d + f)  +  b\cdot (c + e) = a\cdot d  +  b\cdot c  +  (a\cdot f  +  b\cdot e)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; c\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot c \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot d \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot d \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot c \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot c\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot d\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot c\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot d\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot c\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\cdot d\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot c\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot d\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot c\cdot e  -  a\cdot d\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot c\cdot e  -  b\cdot d\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot c\cdot f  +  a\cdot d\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot c\cdot f  -  b\cdot d\cdot f \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot c  +  a\cdot e \in  R&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot d  +  a\cdot f \in  R&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L4 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L4 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L4 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L4&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$  '' shows '' $ a + b \in  R$,   $ a - b \in  R$,   $ a\cdot b \in  R$,   $ a + b = b + a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (c\cdot e  -  d\cdot f)  -  b\cdot (c\cdot f  +  d\cdot e) =&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;    (a\cdot c  -  b\cdot d)\cdot e  -  (a\cdot d  +  b\cdot c)\cdot f&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L8 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L8 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L8 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L8&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b - c) = a\cdot b  -  a\cdot c$,   $ (b - c)\cdot a = b\cdot a  -  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L10 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L10 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L10 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L10&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + (b + c) = a + b + c$,   $ a - (b + c) = a - b - c$,   $ a - (b - c) = a - b + c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_2_L5 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_2_L5 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_2_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_2_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$,   $ d\in R$  '' shows '' $ a  -  b  -  c  -  d = a  -  d  -  b  -  c$,   $ a  +  b  +  c  -  d = a  -  d  +  b  +  c$,  
$ a  +  b  -  c  -  d = a  -  c  +  (b  -  d)$,   $ a  +  b  +  c  +  d = a  +  c  +  (b  +  d)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (c\cdot f  +  d\cdot e)  +  b\cdot (c\cdot e  -  d\cdot f) =&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;    (a\cdot c  -  b\cdot d)\cdot f  +  (a\cdot d  +  b\cdot c)\cdot e&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L8 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L8 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L8 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L8&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b - c) = a\cdot b  -  a\cdot c$,   $ (b - c)\cdot a = b\cdot a  -  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L11 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L11 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L11 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L11&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + b + c = a + (b + c)$,   $ a\cdot b\cdot c = a\cdot (b\cdot c)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L10A &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L10A &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L10A &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L10A&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + (b - c) = a + b - c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_2_L5 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_2_L5 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_2_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_2_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$,   $ d\in R$  '' shows '' $ a  -  b  -  c  -  d = a  -  d  -  b  -  c$,   $ a  +  b  +  c  -  d = a  -  d  +  b  +  c$,  
$ a  +  b  -  c  -  d = a  -  c  +  (b  -  d)$,   $ a  +  b  +  c  +  d = a  +  c  +  (b  +  d)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L10 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L10 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L10 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L10&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + (b + c) = a + b + c$,   $ a - (b + c) = a - b - c$,   $ a - (b - c) = a - b + c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, T  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot (c + e)  -  b\cdot (d + f) = a\cdot c  -  b\cdot d  +  (a\cdot e  -  b\cdot f)&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a\cdot (d + f)  +  b\cdot (c + e) = a\cdot d  +  b\cdot c  +  (a\cdot f  +  b\cdot e)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;ring_oper_distr &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;ring_oper_distr &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;ring_oper_distr &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;ring_oper_distr&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a\cdot (b + c) = a\cdot b  +  a\cdot c$,   $ (b + c)\cdot a = b\cdot a  +  c\cdot a$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_1_L10 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_1_L10 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_1_L10 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_1_L10&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$  '' shows '' $ a + (b + c) = a + b + c$,   $ a - (b + c) = a - b - c$,   $ a - (b - c) = a - b + c$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Ring_ZF &quot; openedtext=&quot;Ring_ZF_2_L5 &quot; closedtip=&quot; Ring_ZF &quot; closedtext=&quot;Ring_ZF_2_L5 &quot; class=&quot;button&quot; title=&quot; Ring_ZF &quot; href=&quot;javascript:;&quot;&gt;Ring_ZF_2_L5 &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' ring0 '') '' &amp;lt;nowiki&amp;gt;Ring_ZF_2_L5&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in R$,   $ b\in R$,   $ c\in R$,   $ d\in R$  '' shows '' $ a  -  b  -  c  -  d = a  -  d  -  b  -  c$,   $ a  +  b  +  c  -  d = a  -  d  +  b  +  c$,  
$ a  +  b  -  c  -  d = a  -  c  +  (b  -  d)$,   $ a  +  b  +  c  +  d = a  +  c  +  (b  +  d)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt; &lt;strong&gt;end&lt;br&gt;&lt;br&gt;&lt;/strong&gt; &lt;h1&gt;&lt;a openedtip=&quot;click to add comment&quot; openedtext=&quot;Comments on Ring_ZF&quot; closedtip=&quot;click to add comment&quot; closedtext=&quot;Comments on Ring_ZF&quot; title=&quot;click to add comment&quot; href=&quot;javascript:;&quot;&gt;Comments on Ring_ZF&lt;/a&gt;&lt;/h1&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;span&gt; &lt;div&gt; &lt;iframe style=&quot;width: 60%; height: 500px;&quot; src=&quot;http://www.haloscan.com/comments/slawekk/Ring_ZF&quot;&gt;&lt;/iframe&gt; &lt;/div&gt; &lt;/span&gt;&lt;/div&gt; &lt;br&gt;</description>
<link>http://formalmath.tiddlyspot.com#Ring_ZF</link>
<pubDate>Tue, 21 Oct 2008 00:13:00 GMT</pubDate>
</item>
<item>
<title>Test Sliders</title>
<description>&lt;span class=&quot;math&quot;&gt;a \cdot b = b\cdot a&lt;/span&gt;&lt;a openedtip=&quot;hide proof&quot; openedtext=&quot;proof&quot; closedtip=&quot;show proof&quot; closedtext=&quot;proof&quot; class=&quot;button&quot; title=&quot;show proof&quot; href=&quot;javascript:;&quot;&gt;proof&lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;show&lt;/strong&gt; &lt;span class=&quot;math&quot;&gt;a \cdot b = b\cdot a&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt; &lt;a openedtip=&quot;  in Group_ZF.thy &quot; openedtext=&quot;commutative_assumption &quot; closedtip=&quot;  in Group_ZF.thy &quot; closedtext=&quot;commutative_assumption &quot; class=&quot;button&quot; title=&quot;  in Group_ZF.thy &quot; href=&quot;javascript:;&quot;&gt;commutative_assumption &lt;/a&gt;&lt;div style=&quot;display: none; left: 0px; top: 0px;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;span class=&quot;math&quot;&gt;\forall x,y \in G.\  x\cdot y = y \cdot x &lt;/span&gt;&lt;/div&gt;&lt;br&gt;&lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;br&gt;&lt;a openedtip=&quot;hide {&quot; openedtext=&quot;{&quot; closedtip=&quot;show {&quot; closedtext=&quot;{&quot; class=&quot;button&quot; title=&quot;hide {&quot; href=&quot;javascript:;&quot;&gt;{&lt;/a&gt;&lt;div style=&quot;display: block;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;fix x assume &lt;span class=&quot;math&quot;&gt;x\in A&lt;/span&gt;&lt;br&gt;show &lt;span class=&quot;math&quot;&gt;x \in B&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;} thus &lt;span class=&quot;math&quot;&gt;A \subseteq B&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
<link>http://formalmath.tiddlyspot.com#%5B%5BTest%20Sliders%5D%5D</link>
<pubDate>Thu, 16 Oct 2008 00:50:00 GMT</pubDate>
</item>
<item>
<title>StyleSheet</title>
<description>blockquote { margin-right:0; }</description>
<link>http://formalmath.tiddlyspot.com#StyleSheet</link>
<pubDate>Mon, 29 Sep 2008 23:11:00 GMT</pubDate>
</item>
<item>
<title>Semigroup_ZF</title>
<description> &lt;strong&gt;theory&lt;/strong&gt; &lt;a tiddlylink=&quot;Semigroup_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Semigroup_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Semigroup_ZF&quot; class=&quot;externalLink&quot;&gt;Semigroup_ZF&lt;/a&gt; &lt;strong&gt;imports&lt;/strong&gt; &lt;a tiddlylink=&quot;func_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#func_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#func_ZF&quot; class=&quot;externalLink&quot;&gt;func_ZF&lt;/a&gt; &lt;a tiddlylink=&quot;Fold_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Fold_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Fold_ZF&quot; class=&quot;externalLink&quot;&gt;Fold_ZF&lt;/a&gt; &lt;a tiddlylink=&quot;Enumeration_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Enumeration_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Enumeration_ZF&quot; class=&quot;externalLink&quot;&gt;Enumeration_ZF&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;strong&gt;begin&lt;br&gt;&lt;/strong&gt; &lt;br&gt;It seems that the minimal setup needed to talk about a product of a sequence is a set with a binary operation. Such object is called &quot;magma&quot;. However, interesting properties show up when the binary operation is associative and such alebraic structure is called a semigroup. In this theory file we define and study sequences of partial products of sequences of magma and semigroup elements.&lt;br&gt;&lt;br&gt;&lt;h1&gt;Products of sequences of semigroup elements&lt;/h1&gt;&lt;br&gt;Semigroup is a a magma in which the binary operation is associative. In this section we mostly study the products of sequences of elements of semigroup. The goal is to establish the fact that taking the product of a sequence is distributive with respect to concatenation of sequences, i.e for two sequences &lt;span class=&quot;math&quot;&gt;a,b&lt;/span&gt; of the semigroup elements we have &lt;span class=&quot;math&quot;&gt;\prod (a\sqcup b) = (\prod a)\cdot (\prod b)&lt;/span&gt;, where &quot;&lt;span class=&quot;math&quot;&gt;a \sqcup b&lt;/span&gt;&quot; is concatenation of &lt;span class=&quot;math&quot;&gt;a&lt;/span&gt; and &lt;span class=&quot;math&quot;&gt;b&lt;/span&gt; (&lt;span class=&quot;math&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;math&quot;&gt; ++&lt;/span&gt;&lt;span class=&quot;math&quot;&gt;b&lt;/span&gt; in Haskell notation). Less formally, we want to show that we can discard parantheses in expressions of the form &lt;span class=&quot;math&quot;&gt;(a_0\cdot a_1\cdot .. \cdot a_n)\cdot (b_0\cdot .. \cdot b_k)&lt;/span&gt;.&lt;br&gt;&lt;br&gt;First we define a notion similar to &lt;em&gt;Fold&lt;/em&gt;, except that that the initial element of the fold is given by the first element of sequence. By analogy with Haskell fold we call that &lt;em&gt;Fold1&lt;/em&gt;&lt;br&gt;&lt;br&gt; &lt;strong&gt;Definition&lt;br&gt;&lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; Fold1(f,a) \equiv  Fold(f,a(0),Tail(a))&lt;/span&gt;&lt;br&gt;&lt;br&gt;Suppose &lt;span class=&quot;math&quot;&gt;a: \mathbb{N} \rightarrow G&lt;/span&gt; is a sequence of elements of a semigroup &lt;span class=&quot;math&quot;&gt;G&lt;/span&gt; and &lt;span class=&quot;math&quot;&gt;\Lambda = \{i_0, i_1, .. , i_{n-1}\} \subseteq \mathbb{N}&lt;/span&gt; is a finite set of indices. We want to define &lt;span class=&quot;math&quot;&gt;\prod_{i\in \Lambda} a_i = a_{i_0}\cdot a_{i_1} \cdot .. \cdot a_{i-1}&lt;/span&gt;. To do that we use the notion of &lt;em&gt;Enumeration&lt;/em&gt; defined in the &lt;em&gt;&lt;a tiddlylink=&quot;Enumeration_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#Enumeration_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#Enumeration_ZF&quot; class=&quot;externalLink&quot;&gt;Enumeration_ZF&lt;/a&gt;&lt;/em&gt; theory file that takes a set of indices and lists them in increasing order, thus converting it to list. Then we use the &lt;em&gt;Fold1&lt;/em&gt; to multiply the resulting list. Recall that in Isabelle/ZF the capital letter &lt;strong&gt;O&lt;/strong&gt; denotes the composition of two functions (or relations).&lt;br&gt;&lt;br&gt; &lt;strong&gt;Definition&lt;br&gt;&lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; SetFold(f,a,\Lambda ) = Fold1(f,a\circ Enumeration(\Lambda ,Le))&lt;/span&gt;&lt;br&gt;&lt;br&gt;The definition of the &lt;em&gt;semigr0&lt;/em&gt; context below introduces notation for writing about finite sequences and semigroup products. In the context we fix the carrier and denote it &lt;span class=&quot;math&quot;&gt;G&lt;/span&gt;. The binary operation on &lt;span class=&quot;math&quot;&gt;G&lt;/span&gt; is called &lt;span class=&quot;math&quot;&gt;f&lt;/span&gt;. All theorems proven in the context &lt;em&gt;semigr0&lt;/em&gt; will implicitly assume that &lt;span class=&quot;math&quot;&gt;f&lt;/span&gt; is an associative operation on &lt;span class=&quot;math&quot;&gt;G&lt;/span&gt;. We will use multiplicative notation for the semigroup operation. The product of a sequence &lt;span class=&quot;math&quot;&gt;a&lt;/span&gt; is denoted &lt;span class=&quot;math&quot;&gt;\prod a&lt;/span&gt;. For a finite set &lt;span class=&quot;math&quot;&gt;\Lambda \subseteq \mathbb{N}&lt;/span&gt; we will write &lt;span class=&quot;math&quot;&gt;\sigma (\Lambda )&lt;/span&gt; to denote the enumeration of the elements of &lt;span class=&quot;math&quot;&gt;\Lambda&lt;/span&gt;, i.e. the only order isomorphism &lt;span class=&quot;math&quot;&gt;|\Lambda | \rightarrow \Lambda&lt;/span&gt;, where &lt;span class=&quot;math&quot;&gt;|\Lambda | \in \mathbb{N}&lt;/span&gt; is the number of elements of &lt;span class=&quot;math&quot;&gt;\Lambda &lt;/span&gt;. We also define notation for taking a product over a set of indices of some sequence of semigroup elements. The product of semigroup elements over some set &lt;span class=&quot;math&quot;&gt;\Lambda \subseteq \mathbb{N}&lt;/span&gt; of indices of a sequence &lt;span class=&quot;math&quot;&gt;a:\mathbb{N} \rightarrow G&lt;/span&gt; (i.e. &lt;span class=&quot;math&quot;&gt;\prod_{i\in \Lambda} a_i&lt;/span&gt;) is denoted &lt;span class=&quot;math&quot;&gt; \prod (\Lambda ,a)&lt;/span&gt;. We will write &lt;span class=&quot;math&quot;&gt;a\hookleftarrow x&lt;/span&gt; for the result of appending an element &lt;span class=&quot;math&quot;&gt;x&lt;/span&gt; to the finite sequence (list) &lt;span class=&quot;math&quot;&gt;a&lt;/span&gt;. This is a bit nonstandard, but I don't have a better idea for the &quot;append&quot; notation. Finally, &lt;span class=&quot;math&quot;&gt;a\sqcup b&lt;/span&gt; will denote the concatenation of the lists &lt;span class=&quot;math&quot;&gt;a&lt;/span&gt; and &lt;span class=&quot;math&quot;&gt;b&lt;/span&gt;.&lt;br&gt;&lt;br&gt; &lt;strong&gt;Locale &lt;/strong&gt; semigr0&lt;br&gt; &lt;strong&gt;assumes &lt;/strong&gt; assoc_assum: &lt;span class=&quot;math&quot;&gt; f \text{ is associative on } G&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; x \cdot  y \equiv  f\langle x,y\rangle &lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \prod  a \equiv  Fold1(f,a)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \sigma (A) \equiv  Enumeration(A,Le)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \prod (\Lambda ,a) \equiv  SetFold(f,a,\Lambda )&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a \hookleftarrow  x \equiv  Append(a,x)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;defines &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a \sqcup  b \equiv  Concat(a,b)&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;The next lemma shows our assumption on the associativity of the semigroup operation in the notation defined in in the &lt;em&gt;semigr0&lt;/em&gt; context.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;semigr_assoc&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; x \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; y \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; z \in  G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; x\cdot y\cdot z = x\cdot (y\cdot z)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;prems&lt;/span&gt; ,  &lt;span&gt;assoc_assum&lt;/span&gt; ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsAssociative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsAssociative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAssociative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAssociative&amp;lt;/nowiki&amp;gt;:
$ P \text{ is associative on } G \equiv  P : G\times G\rightarrow G \wedge  $
$  (\forall  x \in  G.\  \forall  y \in  G.\  \forall  z \in  G.\  $
$  ( P(\langle P(\langle x,y\rangle ),z\rangle ) = P( \langle x,P(\langle y,z\rangle )\rangle  )))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;In the way we define associativity the assumption that &lt;span class=&quot;math&quot;&gt;f&lt;/span&gt; is associative on &lt;span class=&quot;math&quot;&gt;G&lt;/span&gt; also implies that it is a binary operation on &lt;span class=&quot;math&quot;&gt;X&lt;/span&gt;.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;semigr_binop&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; f : G\times G \rightarrow  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assoc_assum&lt;/span&gt; ,  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsAssociative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsAssociative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsAssociative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsAssociative&amp;lt;/nowiki&amp;gt;:
$ P \text{ is associative on } G \equiv  P : G\times G\rightarrow G \wedge  $
$  (\forall  x \in  G.\  \forall  y \in  G.\  \forall  z \in  G.\  $
$  ( P(\langle P(\langle x,y\rangle ),z\rangle ) = P( \langle x,P(\langle y,z\rangle )\rangle  )))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Semigroup operation is closed.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;semigr_closed&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;assms&lt;/span&gt; ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_binop &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_binop &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_binop &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;semigr_binop&amp;lt;/nowiki&amp;gt;:  '' shows '' $ f : G\times G \rightarrow  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;apply_funtype&lt;/span&gt;&lt;br&gt;&lt;br&gt;Lemma &lt;em&gt;append_1elem&lt;/em&gt; written in the notation used in the &lt;em&gt;semigr0&lt;/em&gt; context.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;append_1elem_nice&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; n \in  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a: n \rightarrow  X&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b : 1 \rightarrow  X&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a \sqcup  b = a \hookleftarrow  b(0)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;prems&lt;/span&gt; ,  &lt;span&gt;append_1elem&lt;/span&gt;&lt;br&gt;&lt;br&gt;Lemma &lt;em&gt;concat_init_last_elem&lt;/em&gt; rewritten in the notation used in the &lt;em&gt;semigr0&lt;/em&gt; context.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;concat_init_last&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; n \in  nat&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; k \in  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a: n \rightarrow  X&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b : succ(k) \rightarrow  X&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (a \sqcup  Init(b)) \hookleftarrow  b(k) = a \sqcup  b&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;prems&lt;/span&gt; ,  &lt;span&gt;concat_init_last_elem&lt;/span&gt;&lt;br&gt;&lt;br&gt;The product of semigroup (actually, magma &lt;span&gt;â&lt;/span&gt; we don't need associativity for this) elements is in the semigroup.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;prod_type&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; n \in  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a : succ(n) \rightarrow  G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (\prod  a) \in  G&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; assms  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; succ(n) \in  nat&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; f : G\times G \rightarrow  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; Tail(a) : n \rightarrow  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_binop &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_binop &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_binop &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;semigr_binop&amp;lt;/nowiki&amp;gt;:  '' shows '' $ f : G\times G \rightarrow  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;tail_props&lt;/span&gt;&lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; assms  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a(0) \in  G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; G \neq  0&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Nat_ZF_IML &quot; openedtext=&quot;empty_in_every_succ &quot; closedtip=&quot; Nat_ZF_IML &quot; closedtext=&quot;empty_in_every_succ &quot; class=&quot;button&quot; title=&quot; Nat_ZF_IML &quot; href=&quot;javascript:;&quot;&gt;empty_in_every_succ &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;empty_in_every_succ&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  '' shows '' $ 0 \in  succ(n)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;apply_funtype&lt;/span&gt;&lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a) \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;Fold1_def &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;Fold1_def &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;Fold1_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;Fold1&amp;lt;/nowiki&amp;gt;:
$ Fold1(f,a) \equiv  Fold(f,a(0),Tail(a))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Fold_ZF &quot; openedtext=&quot;fold_props &quot; closedtip=&quot; Fold_ZF &quot; closedtext=&quot;fold_props &quot; class=&quot;button&quot; title=&quot; Fold_ZF &quot; href=&quot;javascript:;&quot;&gt;fold_props &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''theorem''  &amp;lt;nowiki&amp;gt;fold_props&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  ''and'' $ f : X\times Y \rightarrow  X$,   $ a:n \rightarrow  Y$,   $ x\in X$,   $ Y\neq 0$  '' shows '' $ Fold(f,x,a) =  FoldSeq(f,x,a)(n)$  ''and'' $ Fold(f,x,a) \in  X$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;What is the product of one element list?&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;prod_of_1elem&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a: 1 \rightarrow  G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (\prod  a) = a(0)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; f : G\times G \rightarrow  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_binop &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_binop &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_binop &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;semigr_binop&amp;lt;/nowiki&amp;gt;:  '' shows '' $ f : G\times G \rightarrow  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; Tail(a) : 0 \rightarrow  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;tail_props&lt;/span&gt;&lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a(0) \in  G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; G \neq  0&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;apply_funtype&lt;/span&gt;&lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a) =  a(0)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Fold_ZF &quot; openedtext=&quot;fold_empty &quot; closedtip=&quot; Fold_ZF &quot; closedtext=&quot;fold_empty &quot; class=&quot;button&quot; title=&quot; Fold_ZF &quot; href=&quot;javascript:;&quot;&gt;fold_empty &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''theorem''  &amp;lt;nowiki&amp;gt;fold_empty&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ f : X\times Y \rightarrow  X$  ''and'' $ a:0\rightarrow Y$,   $ x\in X$,   $ Y\neq 0$  '' shows '' $ Fold(f,x,a) = x$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;Fold1_def &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;Fold1_def &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;Fold1_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;Fold1&amp;lt;/nowiki&amp;gt;:
$ Fold1(f,a) \equiv  Fold(f,a(0),Tail(a))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;What happens to the product of a list when we append an element to the list?&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;prod_append&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; n \in  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a : succ(n) \rightarrow  G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; x\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (\prod  a\hookleftarrow x) = (\prod  a) \cdot  x&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  I: &lt;span class=&quot;math&quot;&gt; Tail(a) : n \rightarrow  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a(0) \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;tail_props&lt;/span&gt; ,  &lt;a openedtip=&quot; Nat_ZF_IML &quot; openedtext=&quot;empty_in_every_succ &quot; closedtip=&quot; Nat_ZF_IML &quot; closedtext=&quot;empty_in_every_succ &quot; class=&quot;button&quot; title=&quot; Nat_ZF_IML &quot; href=&quot;javascript:;&quot;&gt;empty_in_every_succ &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;empty_in_every_succ&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  '' shows '' $ 0 \in  succ(n)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;apply_funtype&lt;/span&gt;&lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; assms  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a\hookleftarrow x) = Fold(f,a(0),Tail(a)\hookleftarrow x)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;head_of_append&lt;/span&gt; ,  &lt;span&gt;tail_append_commute&lt;/span&gt; ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;Fold1_def &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;Fold1_def &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;Fold1_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;Fold1&amp;lt;/nowiki&amp;gt;:
$ Fold1(f,a) \equiv  Fold(f,a(0),Tail(a))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A3, I  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = (\prod  a) \cdot  x&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_binop &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_binop &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_binop &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;semigr_binop&amp;lt;/nowiki&amp;gt;:  '' shows '' $ f : G\times G \rightarrow  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Fold_ZF &quot; openedtext=&quot;fold_append &quot; closedtip=&quot; Fold_ZF &quot; closedtext=&quot;fold_append &quot; class=&quot;button&quot; title=&quot; Fold_ZF &quot; href=&quot;javascript:;&quot;&gt;fold_append &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''theorem''  &amp;lt;nowiki&amp;gt;fold_append&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  ''and'' $ f : X\times Y \rightarrow  X$  ''and'' $ a:n\rightarrow Y$  ''and'' $ x\in X$  ''and'' $ y\in Y$  '' shows '' $ FoldSeq(f,x,Append(a,y))(n) = Fold(f,x,a)$  ''and'' $ Fold(f,x,Append(a,y)) = f\langle Fold(f,x,a), y\rangle $ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;Fold1_def &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;Fold1_def &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;Fold1_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;Fold1&amp;lt;/nowiki&amp;gt;:
$ Fold1(f,a) \equiv  Fold(f,a(0),Tail(a))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;The main theorem of the section: taking the product of a sequence is distributive with respect to concatenation of sequences. The proof is by induction on the length of the second list.&lt;br&gt;&lt;br&gt; &lt;strong&gt;theorem&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;prod_conc_distr&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; n \in  nat&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; k \in  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a : succ(n) \rightarrow  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b: succ(k) \rightarrow  G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; k \in  nat&lt;/span&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \forall b \in  succ(0) \rightarrow  G.\  (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;a openedtip=&quot;hide { &quot; openedtext=&quot;{ &quot; closedtip=&quot;show { &quot; closedtext=&quot;{ &quot; class=&quot;button&quot; title=&quot;hide { &quot; href=&quot;javascript:;&quot;&gt;{ &lt;/a&gt;&lt;div style=&quot;display: block;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;fix &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b&lt;/span&gt;&lt;br&gt; &lt;strong&gt;assume &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; b : succ(0) \rightarrow  G&lt;/span&gt;&lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; succ(n) \in  nat&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a : succ(n) \rightarrow  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b : 1 \rightarrow  G&lt;/span&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a \sqcup  b = a \hookleftarrow  b(0)&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;append_1elem_nice &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;append_1elem_nice &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;append_1elem_nice &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;append_1elem_nice&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  ''and'' $ a: n \rightarrow  X$  ''and'' $ b : 1 \rightarrow  X$  '' shows '' $ a \sqcup  b = a \hookleftarrow  b(0)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2, A3  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;apply_funtype&lt;/span&gt; ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;prod_append &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;prod_append &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;prod_append &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;prod_append&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  ''and'' $ a : succ(n) \rightarrow  G$  ''and'' $ x\in G$  '' shows '' $ (\prod  a\hookleftarrow x) = (\prod  a) \cdot  x$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_binop &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_binop &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_binop &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;semigr_binop&amp;lt;/nowiki&amp;gt;:  '' shows '' $ f : G\times G \rightarrow  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;prod_of_1elem &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;prod_of_1elem &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;prod_of_1elem &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;prod_of_1elem&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a: 1 \rightarrow  G$  '' shows '' $ (\prod  a) = a(0)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;  &lt;strong&gt;}&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;thus&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt;&lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \forall j \in  nat.\  &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;    (\forall b \in  succ(j) \rightarrow  G.\  (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b)) \longrightarrow &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;math&quot;&gt;    (\forall b \in  succ(succ(j)) \rightarrow  G.\  (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b))&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;a openedtip=&quot;hide { &quot; openedtext=&quot;{ &quot; closedtip=&quot;show { &quot; closedtext=&quot;{ &quot; class=&quot;button&quot; title=&quot;hide { &quot; href=&quot;javascript:;&quot;&gt;{ &lt;/a&gt;&lt;div style=&quot;display: block;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;fix &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; j&lt;/span&gt;&lt;br&gt; &lt;strong&gt;assume &lt;/strong&gt; A4: &lt;span class=&quot;math&quot;&gt; j \in  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A5: &lt;span class=&quot;math&quot;&gt; (\forall b \in  succ(j) \rightarrow  G.\  (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b))&lt;/span&gt;&lt;br&gt;&lt;a openedtip=&quot;hide { &quot; openedtext=&quot;{ &quot; closedtip=&quot;show { &quot; closedtext=&quot;{ &quot; class=&quot;button&quot; title=&quot;hide { &quot; href=&quot;javascript:;&quot;&gt;{ &lt;/a&gt;&lt;div style=&quot;display: block;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;fix &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; b&lt;/span&gt;&lt;br&gt; &lt;strong&gt;assume &lt;/strong&gt; A6: &lt;span class=&quot;math&quot;&gt; b : succ(succ(j)) \rightarrow  G&lt;/span&gt;&lt;br&gt; &lt;strong&gt;let &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; c = Init(b)&lt;/span&gt;&lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A4, A6  &lt;strong&gt;have&lt;/strong&gt;  T: &lt;span class=&quot;math&quot;&gt; b(succ(j)) \in  G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; I: &lt;span class=&quot;math&quot;&gt; c : succ(j) \rightarrow  G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; II: &lt;span class=&quot;math&quot;&gt; b = c\hookleftarrow b(succ(j))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;apply_funtype&lt;/span&gt; ,  &lt;span&gt;init_props&lt;/span&gt;&lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A1, A2, A4, A6  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; succ(n) \in  nat&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; succ(j) \in  nat&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a : succ(n) \rightarrow  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b : succ(succ(j)) \rightarrow  G&lt;/span&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  III: &lt;span class=&quot;math&quot;&gt; (a \sqcup  c) \hookleftarrow  b(succ(j)) = a \sqcup  b&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;concat_init_last &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;concat_init_last &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;concat_init_last &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;concat_init_last&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$,   $ k \in  nat$  ''and'' $ a: n \rightarrow  X$  ''and'' $ b : succ(k) \rightarrow  X$  '' shows '' $ (a \sqcup  Init(b)) \hookleftarrow  b(k) = a \sqcup  b$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A4, I, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  c\hookleftarrow b(succ(j))) = (\prod  c) \cdot  b(succ(j))&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;prod_append &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;prod_append &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;prod_append &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;prod_append&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  ''and'' $ a : succ(n) \rightarrow  G$  ''and'' $ x\in G$  '' shows '' $ (\prod  a\hookleftarrow x) = (\prod  a) \cdot  x$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; II  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a) \cdot  (\prod  b) = (\prod  a) \cdot  ((\prod  c) \cdot  b(succ(j)))&lt;/span&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2, A4, T, I  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a) \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; (\prod  c) \in  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b(succ(j)) \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;prod_type &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;prod_type &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;prod_type &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;prod_type&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  ''and'' $ a : succ(n) \rightarrow  G$  '' shows '' $ (\prod  a) \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a) \cdot  (\prod  b) =  ((\prod  a) \cdot  (\prod  c)) \cdot  b(succ(j))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_assoc &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_assoc &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;semigr_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x \in  G$,   $ y \in  G$,   $ z \in  G$  '' shows '' $ x\cdot y\cdot z = x\cdot (y\cdot z)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A5, I  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a) \cdot  (\prod  b) = (\prod  (a \sqcup  c))\cdot b(succ(j))&lt;/span&gt; &lt;br&gt; &lt;strong&gt;moreover&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A1, A2, A4, I  &lt;strong&gt;have&lt;/strong&gt;  T1: &lt;span class=&quot;math&quot;&gt; succ(n) \in  nat&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; succ(j) \in  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a : succ(n) \rightarrow  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c : succ(j) \rightarrow  G&lt;/span&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; Concat(a,c): succ(n) \ \sharp + succ(j) \rightarrow  G&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;span&gt;concat_props&lt;/span&gt; &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A4, T  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; succ(n \ \sharp + j) \in  nat&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; a \sqcup  c : succ(succ(n \ \sharp +j)) \rightarrow  G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b(succ(j)) \in  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Nat_ZF_IML &quot; openedtext=&quot;succ_plus &quot; closedtip=&quot; Nat_ZF_IML &quot; closedtext=&quot;succ_plus &quot; class=&quot;button&quot; title=&quot; Nat_ZF_IML &quot; href=&quot;javascript:;&quot;&gt;succ_plus &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;succ_plus&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$,   $ k \in  nat$  '' shows '' $ succ(n \ \sharp + j) \in  nat$,   $ succ(n) \ \sharp + succ(j) = succ(succ(n \ \sharp + j))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;then &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  (a \sqcup  c)\hookleftarrow b(succ(j))) = (\prod  (a \sqcup  c))\cdot b(succ(j))&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;prod_append &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;prod_append &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;prod_append &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;prod_append&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  ''and'' $ a : succ(n) \rightarrow  G$  ''and'' $ x\in G$  '' shows '' $ (\prod  a\hookleftarrow x) = (\prod  a) \cdot  x$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; III  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  (a \sqcup  c))\cdot b(succ(j)) =  \prod  (a \sqcup  b)&lt;/span&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b)&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;  &lt;strong&gt;}&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;hence&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\forall b \in  succ(succ(j)) \rightarrow  G.\  (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b))&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;  &lt;strong&gt;}&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;thus&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt;&lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;ultimately &lt;/strong&gt;  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \forall b \in  succ(k) \rightarrow  G.\  (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b)&lt;/span&gt; &lt;strong&gt;   by (rule &lt;/strong&gt; &lt;a openedtip=&quot; Nat_ZF_IML &quot; openedtext=&quot;ind_on_nat &quot; closedtip=&quot; Nat_ZF_IML &quot; closedtext=&quot;ind_on_nat &quot; class=&quot;button&quot; title=&quot; Nat_ZF_IML &quot; href=&quot;javascript:;&quot;&gt;ind_on_nat &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''theorem''  &amp;lt;nowiki&amp;gt;ind_on_nat&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n\in nat$  ''and'' $ P(0)$  ''and'' $ \forall k\in nat.\  P(k)\longrightarrow P(succ(k))$  '' shows '' $ P(n)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  &lt;strong&gt;)&lt;/strong&gt; &lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; (\prod  a) \cdot  (\prod  b) = \prod  (a \sqcup  b)&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Products over sets of indices&lt;/h1&gt;&lt;br&gt;In this section we study the properties of the expessions of the frm &lt;span class=&quot;math&quot;&gt;\prod_{i\in \Lambda} a_i = a_{i_0}\cdot a_{i_1} \cdot .. \cdot a_{i-1}&lt;/span&gt;, i.e. what we denote as &lt;span class=&quot;math&quot;&gt; \prod (\Lambda ,a)&lt;/span&gt;.&lt;br&gt;&lt;br&gt;We can use the &lt;em&gt;enums&lt;/em&gt; locale for proving theorems about order on natural numbers.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;  &lt;span&gt;enums_valid_for_nat&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; enums(nat,Le)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;NatOrder_ZF_1_L2&lt;/span&gt; ,  &lt;span&gt;enums_def&lt;/span&gt;&lt;br&gt;&lt;br&gt;A composition of enumeration of a nonempty finite subset of &lt;span class=&quot;math&quot;&gt;\mathbb{N}&lt;/span&gt; with a sequence of elements of &lt;span class=&quot;math&quot;&gt;G&lt;/span&gt; is a nonempty list of elements of &lt;span class=&quot;math&quot;&gt;G&lt;/span&gt;.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;nat_enum&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a: nat \rightarrow  G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; \Lambda  \in  FinPow(nat)&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; \Lambda \neq 0&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \exists n \in  nat .\  |\Lambda | = succ(n) \wedge  a\circ \sigma (\Lambda ) : succ(n) \rightarrow  G&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2, A3  &lt;strong&gt;obtain &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; n&lt;/span&gt; &lt;strong&gt;where &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; n \in  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; |\Lambda | = succ(n)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Finite_ZF &quot; openedtext=&quot;card_non_empty_succ &quot; closedtip=&quot; Finite_ZF &quot; closedtext=&quot;card_non_empty_succ &quot; class=&quot;button&quot; title=&quot; Finite_ZF &quot; href=&quot;javascript:;&quot;&gt;card_non_empty_succ &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;card_non_empty_succ&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ A \in  FinPow(X)$  ''and'' $ A \neq  0$  '' shows '' $ \exists n \in  nat.\  |A| = succ(n)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \sigma (\Lambda ) : |\Lambda | \rightarrow  \Lambda &lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;enums_valid_for_nat &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;enums_valid_for_nat &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;enums_valid_for_nat &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;enums_valid_for_nat&amp;lt;/nowiki&amp;gt;:  '' shows '' $ enums(nat,Le)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;enums.enum_props&lt;/span&gt;&lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\circ \sigma (\Lambda ): |\Lambda | \rightarrow  G&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Finite_ZF &quot; openedtext=&quot;FinPow_def &quot; closedtip=&quot; Finite_ZF &quot; closedtext=&quot;FinPow_def &quot; class=&quot;button&quot; title=&quot; Finite_ZF &quot; href=&quot;javascript:;&quot;&gt;FinPow_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;FinPow&amp;lt;/nowiki&amp;gt;:
$ FinPow(X) \equiv  \{A \in  Pow(X).\  Finite(A)\}$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;comp_fun_subset&lt;/span&gt;&lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; n \in  nat&lt;/span&gt;, and, &lt;span class=&quot;math&quot;&gt; |\Lambda | = succ(n)&lt;/span&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;The &lt;em&gt;enum_append&lt;/em&gt; lemma from the &lt;em&gt;Enemeration&lt;/em&gt; theory specialized for natural numbers.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;nat_enum_append&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; \Lambda  \in  FinPow(nat)&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; n \in  nat - \Lambda &lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \forall k\in \Lambda .\  k \leq n&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \sigma (\Lambda  \cup  \{n\}) = \sigma (\Lambda )\hookleftarrow  n&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; assms  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; enums(nat,Le)&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \forall k \in   \Lambda .\  \langle k,n\rangle  \in  Le&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;enums_valid_for_nat &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;enums_valid_for_nat &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;enums_valid_for_nat &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;enums_valid_for_nat&amp;lt;/nowiki&amp;gt;:  '' shows '' $ enums(nat,Le)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Finite_ZF &quot; openedtext=&quot;FinPow_def &quot; closedtip=&quot; Finite_ZF &quot; closedtext=&quot;FinPow_def &quot; class=&quot;button&quot; title=&quot; Finite_ZF &quot; href=&quot;javascript:;&quot;&gt;FinPow_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;FinPow&amp;lt;/nowiki&amp;gt;:
$ FinPow(X) \equiv  \{A \in  Pow(X).\  Finite(A)\}$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;Le_def&lt;/span&gt;&lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1, A2  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;enums.enum_append&lt;/span&gt;&lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;Definition of product over a set expressed in notation of the &lt;em&gt;semigr0&lt;/em&gt; locale.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;setproddef&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \prod (\Lambda ,a) = \prod  (a\circ \sigma (\Lambda ))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;SetFold_def &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;SetFold_def &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;SetFold_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;SetFold&amp;lt;/nowiki&amp;gt;:
$ SetFold(f,a,\Lambda ) = Fold1(f,a\circ Enumeration(\Lambda ,Le))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;A generalization of &lt;em&gt;prod_append&lt;/em&gt; to the products over sets of indices.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;gen_prod_append&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; a : nat \rightarrow  G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; \Lambda  \in  FinPow(nat)&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A3: &lt;span class=&quot;math&quot;&gt; \Lambda  \neq  0&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A4: &lt;span class=&quot;math&quot;&gt; n \in  nat -  \Lambda &lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A5: &lt;span class=&quot;math&quot;&gt; \forall k\in \Lambda .\  k \leq n&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \prod (\Lambda  \cup  \{n\}, a) = (\prod (\Lambda ,a)) \cdot  a(n)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \prod (\Lambda  \cup  \{n\}, a) =  \prod  (a\circ \sigma (\Lambda  \cup  \{n\}))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;setproddef &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;setproddef &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;setproddef &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;setproddef&amp;lt;/nowiki&amp;gt;:  '' shows '' $ \prod (\Lambda ,a) = \prod  (a\circ \sigma (\Lambda ))$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2, A4, A5  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = \prod  (a\circ (\sigma (\Lambda )\hookleftarrow  n))&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;nat_enum_append &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;nat_enum_append &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;nat_enum_append &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;nat_enum_append&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ \Lambda  \in  FinPow(nat)$  ''and'' $ n \in  nat - \Lambda $  ''and'' $ \forall k\in \Lambda .\  k \leq n$  '' shows '' $ \sigma (\Lambda  \cup  \{n\}) = \sigma (\Lambda )\hookleftarrow  n$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = \prod  ((a\circ \sigma (\Lambda ))\hookleftarrow  a(n))&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2, A4  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; |\Lambda | \in  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; \sigma (\Lambda ) : |\Lambda | \rightarrow  nat&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; n \in  nat&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Finite_ZF &quot; openedtext=&quot;card_fin_is_nat &quot; closedtip=&quot; Finite_ZF &quot; closedtext=&quot;card_fin_is_nat &quot; class=&quot;button&quot; title=&quot; Finite_ZF &quot; href=&quot;javascript:;&quot;&gt;card_fin_is_nat &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;card_fin_is_nat&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ A \in  FinPow(X)$  '' shows '' $ |A| \in  nat$  ''and'' $ A \approx  |A|$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;enums_valid_for_nat &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;enums_valid_for_nat &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;enums_valid_for_nat &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''  &amp;lt;nowiki&amp;gt;enums_valid_for_nat&amp;lt;/nowiki&amp;gt;:  '' shows '' $ enums(nat,Le)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;enums.enum_fun&lt;/span&gt;&lt;br&gt; &lt;strong&gt;with &lt;/strong&gt; A1  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; thesis&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;span&gt;list_compose_append&lt;/span&gt;&lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; assms  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = (\prod  (a\circ \sigma (\Lambda )))\cdot a(n)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;nat_enum &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;nat_enum &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;nat_enum &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;nat_enum&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a: nat \rightarrow  G$  ''and'' $ \Lambda  \in  FinPow(nat)$  ''and'' $ \Lambda \neq 0$  '' shows '' $ \exists n \in  nat .\  |\Lambda | = succ(n) \wedge  a\circ \sigma (\Lambda ) : succ(n) \rightarrow  G$
&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;span&gt;apply_funtype&lt;/span&gt; ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;prod_append &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;prod_append &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;prod_append &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;prod_append&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ n \in  nat$  ''and'' $ a : succ(n) \rightarrow  G$  ''and'' $ x\in G$  '' shows '' $ (\prod  a\hookleftarrow x) = (\prod  a) \cdot  x$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  = (\prod (\Lambda ,a)) \cdot  a(n)&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;SetFold_def &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;SetFold_def &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;SetFold_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;SetFold&amp;lt;/nowiki&amp;gt;:
$ SetFold(f,a,\Lambda ) = Fold1(f,a\circ Enumeration(\Lambda ,Le))$&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;finally &lt;/strong&gt;  &lt;strong&gt;show&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \prod (\Lambda  \cup  \{n\}, a) = (\prod (\Lambda ,a)) \cdot  a(n)&lt;/span&gt; &lt;br&gt; &lt;strong&gt;qed&lt;/strong&gt;&lt;/blockquote&gt;&lt;/div&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Commutative semigroups&lt;/h1&gt;&lt;br&gt;Commutative semigroups are those whose operation is commutative, i.e. &lt;span class=&quot;math&quot;&gt;\cdot b = b\cdot a&lt;/span&gt;. This implies that for any permutation &lt;span class=&quot;math&quot;&gt;s : n \rightarrow n&lt;/span&gt; we have &lt;span class=&quot;math&quot;&gt;\prod_{j=0}^n a_j = \prod_{j=0}^n a_{s (j)}&lt;/span&gt;, or, closer to the notation we are using in the &lt;em&gt;semigr0&lt;/em&gt; context, &lt;span class=&quot;math&quot;&gt;\prod a = \prod (a \circ s )&lt;/span&gt;. Maybe one day we will be able to prove this, but for now the goal is to prove something simpler: that if the semigroup operation is commutative taking the product of a sequence is distributive with respect to the operation: &lt;span class=&quot;math&quot;&gt;\prod_{j=0}^n (a_j\cdot b_j) = \left(\prod_{j=0}^n a_j)\right) \left(\prod_{j=0}^n b_j)\right)&lt;/span&gt;. Many of the rearrangements (namely those that don't use the inverse) proven in the &lt;em&gt;&lt;a tiddlylink=&quot;AbelianGroup_ZF&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://formalmath.tiddlyspot.com#AbelianGroup_ZF&quot; href=&quot;http://formalmath.tiddlyspot.com#AbelianGroup_ZF&quot; class=&quot;externalLink&quot;&gt;AbelianGroup_ZF&lt;/a&gt;&lt;/em&gt; theory hold in fact in semigroups. Some of them will be reproven in this section.&lt;br&gt;&lt;br&gt;A rearrangement of four elements.&lt;br&gt;&lt;br&gt; &lt;strong&gt;lemma&lt;/strong&gt;   &lt;strong&gt;(in &lt;/strong&gt; semigr0 &lt;strong&gt;) &lt;/strong&gt; &lt;span&gt;rearr4elems&lt;/span&gt;:&lt;br&gt; &lt;strong&gt;   assumes &lt;/strong&gt; A1: &lt;span class=&quot;math&quot;&gt; f \text{ is commutative on } G&lt;/span&gt; &lt;strong&gt;and &lt;/strong&gt; A2: &lt;span class=&quot;math&quot;&gt; a\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; b\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; c\in G&lt;/span&gt;,  &lt;span class=&quot;math&quot;&gt; d\in G&lt;/span&gt; &lt;strong&gt;   shows &lt;/strong&gt; &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot d) = a\cdot c\cdot (b\cdot d)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot (c\cdot d) = a\cdot b\cdot c\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_closed &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_closed &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;semigr_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_assoc &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_assoc &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_assoc &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;semigr_assoc&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ x \in  G$,   $ y \in  G$,   $ z \in  G$  '' shows '' $ x\cdot y\cdot z = x\cdot (y\cdot z)$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d =  a\cdot c\cdot (b\cdot d)&lt;/span&gt;&lt;a openedtip=&quot;hide proof &quot; openedtext=&quot;proof &quot; closedtip=&quot;show proof &quot; closedtext=&quot;proof &quot; class=&quot;button&quot; title=&quot;show proof &quot; href=&quot;javascript:;&quot;&gt;proof &lt;/a&gt;&lt;div style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;sliderPanel&quot;&gt;&lt;blockquote&gt;&lt;strong&gt;from &lt;/strong&gt; A1, A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; a\cdot b\cdot c\cdot d = c\cdot (a\cdot b)\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; func_ZF &quot; openedtext=&quot;IsCommutative_def &quot; closedtip=&quot; func_ZF &quot; closedtext=&quot;IsCommutative_def &quot; class=&quot;button&quot; title=&quot; func_ZF &quot; href=&quot;javascript:;&quot;&gt;IsCommutative_def &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;Definition of &amp;lt;nowiki&amp;gt;IsCommutative&amp;lt;/nowiki&amp;gt;:
$ f \text{ is commutative on } G \equiv  \forall x\in G.\  \forall y\in G.\  f\langle x,y\rangle  = f\langle y,x\rangle $&quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt;  ,  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_closed &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_closed &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&quot;''lemma''   ''(in '' semigr0 '') '' &amp;lt;nowiki&amp;gt;semigr_closed&amp;lt;/nowiki&amp;gt;:  ''assumes '' $ a\in G$,   $ b\in G$  '' shows '' $ a\cdot b \in  G$ &quot; style=&quot;display: none;&quot; transient=&quot;false&quot; class=&quot;floatingPanel&quot;&gt;&lt;/div&gt; &lt;br&gt; &lt;strong&gt;also&lt;/strong&gt;   &lt;strong&gt;from &lt;/strong&gt; A2  &lt;strong&gt;have&lt;/strong&gt;  &lt;span class=&quot;math&quot;&gt; \ldots  =  c\cdot a\cdot b\cdot d&lt;/span&gt; &lt;strong&gt;using&lt;/strong&gt;  &lt;a openedtip=&quot; Semigroup_ZF &quot; openedtext=&quot;semigr_closed &quot; closedtip=&quot; Semigroup_ZF &quot; closedtext=&quot;semigr_closed &quot; class=&quot;button&quot; title=&quot; Semigroup_ZF &quot; href=&quot;javascript:;&quot;&gt;semigr_closed &lt;/a&gt;&lt;div rendered=&quot;false&quot; blockquote=&quot;false&quot; raw=&qu