This commit is contained in:
Boris Marinov 2020-12-28 06:47:53 +02:00
parent 41f29d4085
commit 8b5fad7e67
12 changed files with 1930 additions and 40 deletions

View File

@ -1 +1,120 @@
<svg xmlns:i="&amp;ns_ai;" xmlns="http://www.w3.org/2000/svg" width="595.3" height="150"><switch transform="translate(0 -209)"><g i:extraneous="self"><circle cy="119.77" cx="454.19" stroke-miterlimit="10" transform="rotate(22.196)" r="33.002" fill="#999491" stroke="#858585" stroke-width="8.049"/><path d="M222.375 263.16s1.349-.377 3.681-.949c1.228-.316 2.577-.693 4.235-1.076 1.658-.384 3.438-.828 5.526-1.279 8.045-1.796 18.933-3.538 29.841-4.411 10.909-.874 22.025-.825 30.314-.252 4.084.317 7.607.473 9.961.77l1.486.14 1.919-14.87c10.605 6.895 20.3 14.39 28.774 22.49a189.074 189.074 0 00-32.943 11.372l1.797-14.81-1.486-.142c-2.353-.297-5.755-.513-9.774-.715-8.102-.52-18.91-.575-29.632.352-10.787.813-21.366 2.549-29.289 4.284-1.966.39-3.746.835-5.404 1.218-1.658.384-3.007.76-4.112 1.016-2.333.572-3.56.888-3.56.888z" fill="#9d539f" stroke-width=".3"/><path d="M214.522 280.719s1.442-.355 3.933-.892c1.311-.298 2.753-.652 4.524-1.012 1.77-.36 3.672-.778 5.903-1.202 8.594-1.689 20.224-3.327 31.877-4.148 11.653-.821 23.528-.775 32.383-.236 4.362.298 8.126.444 10.64.723l1.587.133 2.05-13.981c11.33 6.483 21.685 13.528 30.738 21.144-12.459 2.688-24.296 6.345-35.19 10.692l1.919-13.925-1.587-.133c-2.515-.279-6.149-.482-10.442-.672-8.655-.488-20.2-.54-31.654.331-11.522.765-22.823 2.396-31.287 4.028-2.1.367-4.002.784-5.773 1.145-1.77.36-3.212.714-4.393.955-2.491.537-3.802.835-3.802.835z" fill="#e90909" stroke-width=".3"/><path d="M210.41 309.727s1.548.389 4.227.977c1.409.325 2.958.714 4.862 1.108 1.903.394 3.947.851 6.345 1.314 9.236 1.846 21.734 3.628 34.253 4.507 12.519.879 25.274.798 34.782.18 4.684-.34 8.726-.512 11.426-.827l1.704-.15 2.252 15.456c12.145-7.198 23.243-15.016 32.939-23.46-13.391-2.943-26.119-6.957-37.836-11.737l2.112 15.395-1.704.15c-2.7.316-6.602.55-11.213.77-9.294.563-21.695.65-34-.286-12.379-.816-24.522-2.592-33.619-4.376-2.257-.4-4.301-.857-6.205-1.251-1.903-.394-3.452-.782-4.721-1.045-2.679-.589-4.088-.914-4.088-.914z" fill="#0e2db8" stroke-width=".3"/><path d="M224.392 302.217s1.346.246 3.663.59c1.221.197 2.567.444 4.212.665 1.644.22 3.414.491 5.482.736 7.973 1.006 18.687 1.657 29.323 1.412 10.637-.246 21.372-1.463 29.316-2.923 3.91-.755 7.296-1.285 9.537-1.838.946-.2 1.42-.302 1.42-.302l3.517 15.115c9.475-8.215 18.002-16.95 25.283-26.183a176.183 176.183 0 01-33.099-8.254l3.393 15.064-1.42.302c-2.24.553-5.502 1.132-9.363 1.763-7.77 1.385-18.205 2.577-28.667 2.747-10.512.295-20.927-.382-28.776-1.338-1.943-.195-3.713-.466-5.357-.687-1.645-.22-2.99-.467-4.087-.615-2.317-.344-3.538-.54-3.538-.54z" fill="#04bd3d" stroke-width=".3"/><circle cy="191.463" cx="286.217" stroke-miterlimit="10" transform="rotate(22.196)" r="33.002" fill="#b5b5b1" stroke="#878578" stroke-width="8.049"/></g></switch></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:i="&amp;#38;ns_ai;"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="595.3"
height="150"
version="1.1"
id="svg1893"
sodipodi:docname="arrows.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
<metadata
id="metadata1899">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs1897" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2276"
inkscape:window-height="1283"
id="namedview1895"
showgrid="false"
inkscape:snap-bbox="true"
inkscape:snap-global="true"
inkscape:zoom="2.3349572"
inkscape:cx="326.82094"
inkscape:cy="50.881862"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="g1889" />
<switch
transform="translate(0 -209)"
id="switch1891">
<g
i:extraneous="self"
id="g1889"
transform="translate(10.178158,5.8979328)">
<circle
cx="381.58987"
cy="291.34216"
r="30.896246"
id="circle266-9"
style="opacity:0.13;stroke:#000000;stroke-width:7.53567;stroke-miterlimit:10" />
<circle
cy="119.77"
cx="454.19"
stroke-miterlimit="10"
transform="rotate(22.196)"
r="33.001999"
fill="#999491"
stroke="#858585"
stroke-width="8.049"
id="circle1877" />
<circle
cx="197.73561"
cy="292.48212"
r="30.896246"
id="circle266-9-3"
style="opacity:0.13;stroke:#000000;stroke-width:7.53567;stroke-miterlimit:10" />
<path
d="m 222.375,263.16 c 0,0 1.349,-0.377 3.681,-0.949 1.228,-0.316 2.577,-0.693 4.235,-1.076 1.658,-0.384 3.438,-0.828 5.526,-1.279 8.045,-1.796 18.933,-3.538 29.841,-4.411 10.909,-0.874 22.025,-0.825 30.314,-0.252 4.084,0.317 7.607,0.473 9.961,0.77 l 1.486,0.14 1.919,-14.87 c 10.605,6.895 20.3,14.39 28.774,22.49 a 189.074,189.074 0 0 0 -32.943,11.372 l 1.797,-14.81 -1.486,-0.142 c -2.353,-0.297 -5.755,-0.513 -9.774,-0.715 -8.102,-0.52 -18.91,-0.575 -29.632,0.352 -10.787,0.813 -21.366,2.549 -29.289,4.284 -1.966,0.39 -3.746,0.835 -5.404,1.218 -1.658,0.384 -3.007,0.76 -4.112,1.016 -2.333,0.572 -3.56,0.888 -3.56,0.888 z"
fill="#9d539f"
stroke-width="0.3"
id="path1879" />
<path
d="m 214.522,280.719 c 0,0 1.442,-0.355 3.933,-0.892 1.311,-0.298 2.753,-0.652 4.524,-1.012 1.77,-0.36 3.672,-0.778 5.903,-1.202 8.594,-1.689 20.224,-3.327 31.877,-4.148 11.653,-0.821 23.528,-0.775 32.383,-0.236 4.362,0.298 8.126,0.444 10.64,0.723 l 1.587,0.133 2.05,-13.981 c 11.33,6.483 21.685,13.528 30.738,21.144 -12.459,2.688 -24.296,6.345 -35.19,10.692 l 1.919,-13.925 -1.587,-0.133 c -2.515,-0.279 -6.149,-0.482 -10.442,-0.672 -8.655,-0.488 -20.2,-0.54 -31.654,0.331 -11.522,0.765 -22.823,2.396 -31.287,4.028 -2.1,0.367 -4.002,0.784 -5.773,1.145 -1.77,0.36 -3.212,0.714 -4.393,0.955 -2.491,0.537 -3.802,0.835 -3.802,0.835 z"
fill="#e90909"
stroke-width="0.3"
id="path1881" />
<path
d="m 210.41,309.727 c 0,0 1.548,0.389 4.227,0.977 1.409,0.325 2.958,0.714 4.862,1.108 1.903,0.394 3.947,0.851 6.345,1.314 9.236,1.846 21.734,3.628 34.253,4.507 12.519,0.879 25.274,0.798 34.782,0.18 4.684,-0.34 8.726,-0.512 11.426,-0.827 l 1.704,-0.15 2.252,15.456 c 12.145,-7.198 23.243,-15.016 32.939,-23.46 -13.391,-2.943 -26.119,-6.957 -37.836,-11.737 l 2.112,15.395 -1.704,0.15 c -2.7,0.316 -6.602,0.55 -11.213,0.77 -9.294,0.563 -21.695,0.65 -34,-0.286 -12.379,-0.816 -24.522,-2.592 -33.619,-4.376 -2.257,-0.4 -4.301,-0.857 -6.205,-1.251 -1.903,-0.394 -3.452,-0.782 -4.721,-1.045 -2.679,-0.589 -4.088,-0.914 -4.088,-0.914 z"
fill="#0e2db8"
stroke-width="0.3"
id="path1883" />
<path
d="m 224.392,302.217 c 0,0 1.346,0.246 3.663,0.59 1.221,0.197 2.567,0.444 4.212,0.665 1.644,0.22 3.414,0.491 5.482,0.736 7.973,1.006 18.687,1.657 29.323,1.412 10.637,-0.246 21.372,-1.463 29.316,-2.923 3.91,-0.755 7.296,-1.285 9.537,-1.838 0.946,-0.2 1.42,-0.302 1.42,-0.302 l 3.517,15.115 c 9.475,-8.215 18.002,-16.95 25.283,-26.183 a 176.183,176.183 0 0 1 -33.099,-8.254 l 3.393,15.064 -1.42,0.302 c -2.24,0.553 -5.502,1.132 -9.363,1.763 -7.77,1.385 -18.205,2.577 -28.667,2.747 -10.512,0.295 -20.927,-0.382 -28.776,-1.338 -1.943,-0.195 -3.713,-0.466 -5.357,-0.687 -1.645,-0.22 -2.99,-0.467 -4.087,-0.615 -2.317,-0.344 -3.538,-0.54 -3.538,-0.54 z"
fill="#04bd3d"
stroke-width="0.3"
id="path1885" />
<circle
cy="191.463"
cx="286.21701"
stroke-miterlimit="10"
transform="rotate(22.196)"
r="33.001999"
fill="#b5b5b1"
stroke="#878578"
stroke-width="8.049"
id="circle1887" />
</g>
<circle
cx="390.29419"
cy="297.34653"
r="31.458786"
id="circle266"
style="opacity:0.13;stroke:#000000;stroke-width:7.67287;stroke-miterlimit:10"
transform="translate(13.672047,18.04996)" />
</switch>
</svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -0,0 +1,201 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg290"
sodipodi:docname="addition_commutative.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
<metadata
id="metadata296">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs294">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 88.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="595.3 : 88.5 : 1"
inkscape:persp3d-origin="297.65 : 59 : 1"
id="perspective1968" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview292"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="363.75339"
inkscape:cy="81.929955"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg290"
showguides="true"
inkscape:guide-bbox="true"
inkscape:document-rotation="0" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="140.21312"
y="100.27731"
id="text2953"><tspan
sodipodi:role="line"
id="tspan2951"
x="140.21312"
y="100.27731"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">+</tspan></text>
<g
id="g701">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="68.63739"
y="107.01456"
id="text3032-1"><tspan
sodipodi:role="line"
id="tspan3030-8"
x="68.63739"
y="107.01456"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#cccccc;stroke-width:1.57497">x</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="67.107735"
y="103.72162"
id="text3032"><tspan
sodipodi:role="line"
id="tspan3030"
x="67.107735"
y="103.72162"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">x</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="279.53336"
y="99.057312"
id="text2953-1"><tspan
sodipodi:role="line"
id="tspan2951-7"
x="279.53336"
y="99.057312"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">=</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="410.26471"
y="100.97964"
id="text2953-3"><tspan
sodipodi:role="line"
id="tspan2951-6"
x="410.26471"
y="100.97964"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">+</tspan></text>
<g
id="g760">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:1.57497;"
x="203.11075"
y="106.17343"
id="text3032-7-2"><tspan
sodipodi:role="line"
id="tspan3030-9-0"
x="203.11075"
y="106.17343"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497;fill:#cccccc;">y</tspan></text>
<g
id="g705">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="199.92342"
y="104.64442"
id="text3032-7"><tspan
sodipodi:role="line"
id="tspan3030-9"
x="199.92342"
y="104.64442"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">y</tspan></text>
</g>
</g>
<g
id="g701-7"
transform="translate(414.35522,1.7842463)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="68.63739"
y="107.01456"
id="text3032-1-3"><tspan
sodipodi:role="line"
id="tspan3030-8-6"
x="68.63739"
y="107.01456"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#cccccc;stroke-width:1.57497">x</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="67.107735"
y="103.72162"
id="text3032-12"><tspan
sodipodi:role="line"
id="tspan3030-93"
x="67.107735"
y="103.72162"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">x</tspan></text>
</g>
<g
id="g760-1"
transform="translate(140.26041,-2.6718727)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="203.11075"
y="106.17343"
id="text3032-7-2-9"><tspan
sodipodi:role="line"
id="tspan3030-9-0-4"
x="203.11075"
y="106.17343"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#cccccc;stroke-width:1.57497">y</tspan></text>
<g
id="g705-7">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="199.92342"
y="104.64442"
id="text3032-7-8"><tspan
sodipodi:role="line"
id="tspan3030-9-4"
x="199.92342"
y="104.64442"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">y</tspan></text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.3 KiB

132
04_monoids/balls.svg Normal file
View File

@ -0,0 +1,132 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg3397"
sodipodi:docname="balls.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
<metadata
id="metadata3403">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3401" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1249"
inkscape:window-height="553"
id="namedview3399"
showgrid="false"
inkscape:zoom="2.3349572"
inkscape:cx="297.64999"
inkscape:cy="115.55631"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="svg3397" />
<circle
cx="83.400002"
cy="59.799999"
r="24.6"
id="circle3365"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="271.79999"
cy="72.099998"
r="24.6"
id="circle3367"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="179.8"
cy="121.4"
r="24.6"
id="circle3369"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="483.79999"
cy="80.400002"
r="24.6"
id="circle3371"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="539.70001"
cy="133.7"
r="24.6"
id="circle3373"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
cx="373.79999"
cy="121.4"
r="24.6"
id="circle3375"
style="opacity:0.13;stroke:#000000;stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#fce600"
stroke="#ffdd00"
cx="78.599998"
cy="51.599998"
r="24.6"
id="circle3379"
style="stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="267"
cy="63.900002"
r="24.6"
id="circle3381"
style="stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#d71920"
stroke="#be1e2d"
cx="175"
cy="113.1"
r="24.6"
id="circle3383"
style="stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#f58235"
stroke="#e76524"
cx="479"
cy="72.099998"
r="24.6"
id="circle3385"
style="stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#8967ac"
stroke="#651c5f"
cx="534.90002"
cy="125.4"
r="24.6"
id="circle3387"
style="stroke-width:6;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="369"
cy="113.1"
r="24.6"
id="circle3389"
style="stroke-width:6;stroke-miterlimit:10" />
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@ -0,0 +1,238 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 223"
version="1.1"
id="svg290"
sodipodi:docname="balls_arithmetic.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)"
width="595.29999"
height="223">
<metadata
id="metadata296">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs294">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 46.5 : 1"
inkscape:vp_y="0 : 5.6497175 : 0"
inkscape:vp_z="1 : 46.5 : 1"
inkscape:persp3d-origin="0.50000001 : 46.333333 : 1"
id="perspective1968" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview292"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="294.81048"
inkscape:cy="81.929955"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg290"
showguides="true"
inkscape:guide-bbox="true"
inkscape:document-rotation="0" />
<circle
cx="172.00294"
cy="70.42627"
r="21.732838"
id="circle258-8"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
cx="267.61407"
cy="72.600937"
r="21.732838"
id="circle260-7"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#fce600"
stroke="#ffdd00"
cx="167.76237"
cy="63.181992"
r="21.732838"
id="circle272-3"
style="stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="263.37354"
cy="65.356659"
r="21.732838"
id="circle274-5"
style="stroke-width:5.30069;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.62716"
id="path357-1"
cx="217.06706"
cy="65.644913"
rx="10.920961"
ry="10.828999" />
<circle
cx="82.795029"
cy="71.46376"
r="21.60948"
id="circle3369-5"
style="opacity:0.13;stroke:#000000;stroke-width:5.2706;stroke-miterlimit:10" />
<circle
fill="#d71920"
stroke="#be1e2d"
cx="78.578552"
cy="64.172745"
r="21.60948"
id="circle3383-7"
style="stroke-width:5.2706;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.62716"
id="path357-4-0"
cx="125.14213"
cy="64.952225"
rx="10.920961"
ry="10.828999" />
<circle
cx="495.38004"
cy="73.153397"
r="21.732838"
id="circle260-7-6"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="491.1395"
cy="65.909134"
r="21.732838"
id="circle274-5-2"
style="stroke-width:5.30069;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.62716"
id="path357-1-9"
cx="447.08374"
cy="66.326065"
rx="10.920961"
ry="10.828999" />
<circle
cx="404.21857"
cy="73.291824"
r="21.484453"
id="circle3371"
style="opacity:0.13;stroke:#000000;stroke-width:5.24011;stroke-miterlimit:10" />
<circle
fill="#f58235"
stroke="#e76524"
cx="400.02649"
cy="66.043015"
r="21.484453"
id="circle3385"
style="stroke-width:5.24011;stroke-miterlimit:10" />
<rect
style="fill:#000000;fill-rule:evenodd;stroke-width:0.687923"
id="rect42"
width="35.2635"
height="3.7368894"
x="313.52997"
y="62.009583" />
<rect
style="fill:#000000;fill-rule:evenodd;stroke-width:0.687923"
id="rect42-3"
width="35.2635"
height="3.7368894"
x="313.332"
y="68.035568" />
<circle
cx="265.59952"
cy="151.93979"
r="21.732838"
id="circle258-8-6"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#fce600"
stroke="#ffdd00"
cx="261.35895"
cy="144.69553"
r="21.732838"
id="circle272-3-5"
style="stroke-width:5.30069;stroke-miterlimit:10" />
<circle
cx="176.3916"
cy="152.97728"
r="21.60948"
id="circle3369-5-6"
style="opacity:0.13;stroke:#000000;stroke-width:5.2706;stroke-miterlimit:10" />
<circle
fill="#d71920"
stroke="#be1e2d"
cx="172.17513"
cy="145.68628"
r="21.60948"
id="circle3383-7-2"
style="stroke-width:5.2706;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.62716"
id="path357-4-0-9"
cx="218.73871"
cy="146.46576"
rx="10.920961"
ry="10.828999" />
<circle
cx="405.44214"
cy="154.0616"
r="21.484453"
id="circle3371-0"
style="opacity:0.13;stroke:#000000;stroke-width:5.24011;stroke-miterlimit:10" />
<circle
fill="#f58235"
stroke="#e76524"
cx="401.25006"
cy="146.81279"
r="21.484453"
id="circle3385-9"
style="stroke-width:5.24011;stroke-miterlimit:10" />
<rect
style="fill:#000000;fill-rule:evenodd;stroke-width:0.687923"
id="rect42-36"
width="35.2635"
height="3.7368894"
x="314.75354"
y="142.77937" />
<rect
style="fill:#000000;fill-rule:evenodd;stroke-width:0.687923"
id="rect42-3-0"
width="35.2635"
height="3.7368894"
x="314.55557"
y="148.80534" />
<path
style="fill:none;stroke:#c50000;stroke-width:8.8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 238.96644,41.383294 c 10.37312,6.346392 17.57481,17.165556 26.08372,25.64464 4.56518,4.549186 10.20835,8.136808 14.82287,12.680545 1.24928,1.230121 7.8316,10.243058 8.49715,10.243058"
id="path963" />
<path
style="fill:none;stroke:#c50000;stroke-width:8.8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 464.23584,40.300487 c 10.37312,6.346392 17.57481,17.165556 26.08372,25.64464 4.56518,4.549186 10.20835,8.136808 14.82287,12.680545 1.24928,1.230121 7.8316,10.243058 8.49715,10.243058"
id="path963-6" />
</svg>

After

Width:  |  Height:  |  Size: 6.9 KiB

View File

@ -0,0 +1,251 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 223"
version="1.1"
id="svg290"
sodipodi:docname="balls_associativity.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)"
width="595.29999"
height="223">
<metadata
id="metadata296">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs294">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 46.5 : 1"
inkscape:vp_y="0 : 5.6497175 : 0"
inkscape:vp_z="1 : 46.5 : 1"
inkscape:persp3d-origin="0.50000001 : 46.333333 : 1"
id="perspective1968" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview292"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="363.75339"
inkscape:cy="81.929955"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg290"
showguides="true"
inkscape:guide-bbox="true"
inkscape:document-rotation="0" />
<circle
cx="253.52988"
cy="39.383438"
r="21.732838"
id="circle258-8"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
cx="349.14102"
cy="41.558113"
r="21.732838"
id="circle260-7"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
cx="463.03207"
cy="41.920647"
r="21.732838"
id="circle268-3"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#fce600"
stroke="#ffdd00"
cx="249.28931"
cy="32.13916"
r="21.732838"
id="circle272-3"
style="stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="344.90048"
cy="34.313828"
r="21.732838"
id="circle274-5"
style="stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="458.79153"
cy="34.588028"
r="21.732838"
id="circle282-0"
style="fill:#aa4400;stroke:#552200;stroke-width:5.30069;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.62716"
id="path357-1"
cx="298.59399"
cy="34.602081"
rx="10.920961"
ry="10.828999" />
<path
d="m 392.29161,28.9586 c 5.71752,-1.04639 5.9634,-1.32777 13.29789,-1.5824 2.16287,-0.006 7.43472,-0.0612 8.6853,0.004 l 0.78781,0.0136 0.38923,-5.74501 c 5.83157,3.6263 11.20321,7.65477 15.95396,12.1058 -6.04523,2.27325 -11.74737,5.13658 -16.95853,8.39766 l 0.54513,-6.18623 -0.78785,-0.0136 c -1.25105,-0.0651 -6.4609,-0.0517 -8.58569,0.0197 -6.83577,0.21149 -7.31727,0.54093 -12.93474,1.61028 z"
fill="#e90909"
stroke-width="0.562384"
id="path1881-4"
sodipodi:nodetypes="cccccccccccc"
style="fill:#333333" />
<circle
cx="164.32198"
cy="40.420929"
r="21.60948"
id="circle3369-5"
style="opacity:0.13;stroke:#000000;stroke-width:5.2706;stroke-miterlimit:10" />
<circle
fill="#d71920"
stroke="#be1e2d"
cx="160.1055"
cy="33.129913"
r="21.60948"
id="circle3383-7"
style="stroke-width:5.2706;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.62716"
id="path357-4-0"
cx="206.66907"
cy="33.909393"
rx="10.920961"
ry="10.828999" />
<circle
cx="463.47723"
cy="111.17284"
r="21.732838"
id="circle268-3-9"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="459.23669"
cy="103.84021"
r="21.732838"
id="circle282-0-9"
style="fill:#aa4400;stroke:#552200;stroke-width:5.30069;stroke-miterlimit:10" />
<path
d="m 391.64538,98.773113 c 5.71752,-1.04639 5.9634,-1.32777 13.29789,-1.5824 2.16287,-0.006 7.43472,-0.0612 8.6853,0.004 l 0.78781,0.0136 0.38923,-5.74501 c 5.83157,3.6263 11.20321,7.65477 15.95396,12.105807 -6.04523,2.27324 -11.74737,5.13657 -16.95853,8.39765 l 0.54513,-6.18622 -0.78785,-0.0136 c -1.25105,-0.0651 -6.4609,-0.0517 -8.58569,0.0197 -6.83577,0.21148 -7.31727,0.54092 -12.93474,1.61027 z"
fill="#e90909"
stroke-width="0.562384"
id="path1881-4-6"
sodipodi:nodetypes="cccccccccccc"
style="fill:#333333" />
<circle
cx="164.76712"
cy="109.6731"
r="21.60948"
id="circle3369-5-4"
style="opacity:0.13;stroke:#000000;stroke-width:5.2706;stroke-miterlimit:10" />
<circle
fill="#d71920"
stroke="#be1e2d"
cx="160.55066"
cy="102.38208"
r="21.60948"
id="circle3383-7-5"
style="stroke-width:5.2706;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.62716"
id="path357-4-0-5"
cx="237.05321"
cy="103.95302"
rx="10.920961"
ry="10.828999" />
<circle
cx="302.35699"
cy="112.46152"
r="21.159822"
id="circle3375"
style="opacity:0.13;stroke:#000000;stroke-width:5.16093;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="298.22827"
cy="105.32224"
r="21.159822"
id="circle3389"
style="stroke-width:5.16093;stroke-miterlimit:10" />
<circle
cx="345.29681"
cy="185.79593"
r="21.732838"
id="circle260-7-6"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
cx="461.76321"
cy="186.53711"
r="21.732838"
id="circle268-3-0"
style="opacity:0.13;stroke:#000000;stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="341.05627"
cy="178.55167"
r="21.732838"
id="circle274-5-2"
style="stroke-width:5.30069;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="457.52267"
cy="179.2045"
r="21.732838"
id="circle282-0-6"
style="fill:#aa4400;stroke:#552200;stroke-width:5.30069;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.62716"
id="path357-1-9"
cx="275.00055"
cy="180.9686"
rx="10.920961"
ry="10.828999" />
<path
d="m 391.02273,173.57506 c 5.71752,-1.04639 5.9634,-1.32777 13.29789,-1.5824 2.16287,-0.006 7.43472,-0.0612 8.6853,0.004 l 0.78781,0.0136 0.38923,-5.745 c 5.83157,3.6263 11.20321,7.65476 15.95396,12.1058 -6.04523,2.27324 -11.74737,5.13658 -16.95853,8.39765 l 0.54513,-6.18622 -0.78785,-0.0136 c -1.25105,-0.0651 -6.4609,-0.0517 -8.58569,0.0197 -6.83577,0.21149 -7.31727,0.54093 -12.93474,1.61028 z"
fill="#e90909"
stroke-width="0.562384"
id="path1881-4-9"
sodipodi:nodetypes="cccccccccccc"
style="fill:#333333" />
<circle
cx="210.13536"
cy="187.93436"
r="21.484453"
id="circle3371"
style="opacity:0.13;stroke:#000000;stroke-width:5.24011;stroke-miterlimit:10" />
<circle
fill="#f58235"
stroke="#e76524"
cx="205.9433"
cy="180.68555"
r="21.484453"
id="circle3385"
style="stroke-width:5.24011;stroke-miterlimit:10" />
</svg>

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg290"
sodipodi:docname="balls_identity.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
<metadata
id="metadata296">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs294">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 88.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="595.3 : 88.5 : 1"
inkscape:persp3d-origin="297.65 : 59 : 1"
id="perspective1968" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview292"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="363.75339"
inkscape:cy="81.929955"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg290"
showguides="true"
inkscape:guide-bbox="true" />
<circle
cx="159.88254"
cy="92.87291"
r="31.051683"
id="circle258"
style="opacity:0.13;stroke:#000000;stroke-width:7.57358;stroke-miterlimit:10" />
<circle
cx="296.49088"
cy="95.980049"
r="31.051683"
id="circle260"
style="opacity:0.13;stroke:#000000;stroke-width:7.57358;stroke-miterlimit:10" />
<circle
cx="436.35678"
cy="96.498062"
r="31.051683"
id="circle268"
style="opacity:0.13;stroke:#000000;stroke-width:7.57358;stroke-miterlimit:10" />
<circle
fill="#fce600"
stroke="#ffdd00"
cx="153.82367"
cy="82.522354"
r="31.051683"
id="circle272"
style="stroke-width:7.57358;stroke-miterlimit:10;fill:#ffffff;stroke:#ececec" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="290.43204"
cy="85.629494"
r="31.051683"
id="circle274"
style="stroke-width:7.57358;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:2.32487"
id="path357"
cx="224.26979"
cy="86.041336"
rx="15.603771"
ry="15.472375" />
<path
d="m 335.28342,77.977988 c 8.16914,-1.49507 8.52045,-1.897106 18.99991,-2.260915 3.09029,-0.0081 10.62266,-0.08749 12.40947,0.0056 l 1.12562,0.01945 0.55613,-8.208414 c 8.33209,5.181226 16.00704,10.937059 22.79487,17.296658 -8.63736,3.247994 -16.78454,7.339097 -24.23019,11.998495 l 0.77887,-8.838823 -1.12567,-0.01945 c -1.78749,-0.09303 -9.23128,-0.07387 -12.26715,0.02819 -9.76689,0.302173 -10.45485,0.772874 -18.48105,2.30075 z"
fill="#e90909"
stroke-width="0.803529"
id="path1881"
sodipodi:nodetypes="cccccccccccc"
style="fill:#333333" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="431.25534"
cy="88.564934"
r="31.051683"
id="circle274-0"
style="stroke-width:7.57358;stroke-miterlimit:10" />
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

115
04_monoids/balls_rule.svg Normal file
View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg290"
sodipodi:docname="balls_rule.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
<metadata
id="metadata296">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs294">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 88.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="595.3 : 88.5 : 1"
inkscape:persp3d-origin="297.65 : 59 : 1"
id="perspective1968" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview292"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="363.75339"
inkscape:cy="81.929955"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg290"
showguides="true"
inkscape:guide-bbox="true" />
<circle
cx="159.88254"
cy="92.87291"
r="31.051683"
id="circle258"
style="opacity:0.13;stroke:#000000;stroke-width:7.57358;stroke-miterlimit:10" />
<circle
cx="296.49088"
cy="95.980049"
r="31.051683"
id="circle260"
style="opacity:0.13;stroke:#000000;stroke-width:7.57358;stroke-miterlimit:10" />
<circle
cx="436.35678"
cy="96.498062"
r="31.051683"
id="circle268"
style="opacity:0.13;stroke:#000000;stroke-width:7.57358;stroke-miterlimit:10" />
<circle
fill="#fce600"
stroke="#ffdd00"
cx="153.82367"
cy="82.522354"
r="31.051683"
id="circle272"
style="stroke-width:7.57358;stroke-miterlimit:10" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="290.43204"
cy="85.629494"
r="31.051683"
id="circle274"
style="stroke-width:7.57358;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="430.29794"
cy="86.021271"
r="31.051683"
id="circle282"
style="stroke-width:7.57358;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:2.32487"
id="path357"
cx="224.26979"
cy="86.041336"
rx="15.603771"
ry="15.472375" />
<path
d="m 335.28342,77.977988 c 8.16914,-1.49507 8.52045,-1.897106 18.99991,-2.260915 3.09029,-0.0081 10.62266,-0.08749 12.40947,0.0056 l 1.12562,0.01945 0.55613,-8.208414 c 8.33209,5.181226 16.00704,10.937059 22.79487,17.296658 -8.63736,3.247994 -16.78454,7.339097 -24.23019,11.998495 l 0.77887,-8.838823 -1.12567,-0.01945 c -1.78749,-0.09303 -9.23128,-0.07387 -12.26715,0.02819 -9.76689,0.302173 -10.45485,0.772874 -18.48105,2.30075 z"
fill="#e90909"
stroke-width="0.803529"
id="path1881"
sodipodi:nodetypes="cccccccccccc"
style="fill:#333333" />
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg290"
sodipodi:docname="monoid_commutative.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
<metadata
id="metadata296">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs294">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 88.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="595.3 : 88.5 : 1"
inkscape:persp3d-origin="297.65 : 59 : 1"
id="perspective1968" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview292"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="363.75339"
inkscape:cy="81.929955"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg290"
showguides="true"
inkscape:guide-bbox="true"
inkscape:document-rotation="0" />
<circle
cx="204.06375"
cy="49.779579"
r="22.096531"
id="circle258"
style="opacity:0.13;stroke:#000000;stroke-width:5.3894;stroke-miterlimit:10" />
<circle
cx="301.27493"
cy="51.990639"
r="22.096531"
id="circle260"
style="opacity:0.13;stroke:#000000;stroke-width:5.3894;stroke-miterlimit:10" />
<circle
cx="400.8042"
cy="52.359253"
r="22.096531"
id="circle268"
style="opacity:0.13;stroke:#000000;stroke-width:5.3894;stroke-miterlimit:10" />
<circle
fill="#fce600"
stroke="#ffdd00"
cx="199.75223"
cy="42.414078"
r="22.096531"
id="circle272"
style="stroke-width:5.3894;stroke-miterlimit:10" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="296.96341"
cy="44.62513"
r="22.096531"
id="circle274"
style="stroke-width:5.3894;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="396.49271"
cy="44.903923"
r="22.096531"
id="circle282"
style="stroke-width:5.3894;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.65439"
id="path357"
cx="249.88205"
cy="44.918198"
rx="11.103721"
ry="11.010219" />
<path
d="m 328.87988,39.18028 c 5.8132,-1.063899 6.0632,-1.34999 13.52043,-1.608878 2.19907,-0.0058 7.55914,-0.06226 8.83064,0.004 l 0.801,0.01384 0.39574,-5.841148 c 5.92916,3.686986 11.39069,7.782865 16.22094,12.308387 -6.14638,2.311289 -11.94396,5.222538 -17.24232,8.538188 l 0.55425,-6.28975 -0.80103,-0.01384 c -1.27199,-0.0662 -6.56903,-0.05257 -8.72937,0.02006 -6.95016,0.215027 -7.43972,0.549981 -13.1512,1.637225 z"
fill="#e90909"
stroke-width="0.571795"
id="path1881"
sodipodi:nodetypes="cccccccccccc"
style="fill:#333333" />
<circle
cx="300.56372"
cy="118.20016"
r="22.096531"
id="circle258-3"
style="opacity:0.13;stroke:#000000;stroke-width:5.3894;stroke-miterlimit:10" />
<circle
cx="201.89514"
cy="118.0756"
r="22.096531"
id="circle260-6"
style="opacity:0.13;stroke:#000000;stroke-width:5.3894;stroke-miterlimit:10" />
<circle
cx="401.47339"
cy="119.88653"
r="22.096531"
id="circle268-7"
style="opacity:0.13;stroke:#000000;stroke-width:5.3894;stroke-miterlimit:10" />
<circle
fill="#fce600"
stroke="#ffdd00"
cx="296.2522"
cy="110.83466"
r="22.096531"
id="circle272-5"
style="stroke-width:5.3894;stroke-miterlimit:10" />
<circle
fill="#39bced"
stroke="#008dd2"
cx="197.58362"
cy="110.71009"
r="22.096531"
id="circle274-3"
style="stroke-width:5.3894;stroke-miterlimit:10" />
<circle
fill="#54b948"
stroke="#00873a"
cx="397.1619"
cy="112.4312"
r="22.096531"
id="circle282-5"
style="stroke-width:5.3894;stroke-miterlimit:10" />
<ellipse
style="fill:#333333;fill-rule:evenodd;stroke-width:1.65439"
id="path357-6"
cx="250.55122"
cy="112.44547"
rx="11.103721"
ry="11.010219" />
<path
d="m 329.54906,106.70755 c 5.8132,-1.0639 6.0632,-1.34999 13.52043,-1.60888 2.19907,-0.006 7.55914,-0.0623 8.83064,0.004 l 0.801,0.0138 0.39574,-5.841143 c 5.92916,3.686983 11.39069,7.782863 16.22094,12.308393 -6.14638,2.31129 -11.94396,5.22254 -17.24232,8.53819 l 0.55425,-6.28975 -0.80103,-0.0138 c -1.27199,-0.0662 -6.56903,-0.0526 -8.72937,0.0201 -6.95016,0.21502 -7.43972,0.54998 -13.1512,1.63722 z"
fill="#e90909"
stroke-width="0.571795"
id="path1881-2"
sodipodi:nodetypes="cccccccccccc"
style="fill:#333333" />
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg290"
sodipodi:docname="numbers_addition.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
<metadata
id="metadata296">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs294">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 88.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="595.3 : 88.5 : 1"
inkscape:persp3d-origin="297.65 : 59 : 1"
id="perspective1968" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview292"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="363.75339"
inkscape:cy="81.929955"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg290"
showguides="true"
inkscape:guide-bbox="true" />
<g
id="g3114"
transform="translate(6.8951543,-55.231453)"
style="fill:#b3b3b3">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="129.50179"
y="165.9559"
id="text3032-8"><tspan
sodipodi:role="line"
id="tspan3030-9"
x="129.50179"
y="165.9559"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#b3b3b3;stroke-width:1.57497">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="267.37091"
y="165.09778"
id="text3032-7-4"><tspan
sodipodi:role="line"
id="tspan3030-2-1"
x="267.37091"
y="165.09778"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#b3b3b3;stroke-width:1.57497">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="409.62881"
y="165.75974"
id="text3032-3-6"><tspan
sodipodi:role="line"
id="tspan3030-5-4"
x="409.62881"
y="165.75974"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#b3b3b3;stroke-width:1.57497">2</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="209.64571"
y="100.67403"
id="text2953"><tspan
sodipodi:role="line"
id="tspan2951"
x="209.64571"
y="100.67403"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">+</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="133.86652"
y="108.5712"
id="text3032"><tspan
sodipodi:role="line"
id="tspan3030"
x="133.86652"
y="108.5712"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="271.73563"
y="107.71309"
id="text3032-7"><tspan
sodipodi:role="line"
id="tspan3030-2"
x="271.73563"
y="107.71309"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="413.99356"
y="108.37503"
id="text3032-3"><tspan
sodipodi:role="line"
id="tspan3030-5"
x="413.99356"
y="108.37503"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="348.96594"
y="97.454025"
id="text2953-1"><tspan
sodipodi:role="line"
id="tspan2951-7"
x="348.96594"
y="97.454025"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">=</tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -0,0 +1,152 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
viewBox="0 0 595.3 177"
version="1.1"
id="svg290"
sodipodi:docname="numbers_multiplication.svg"
inkscape:version="1.0.1 (0767f8302a, 2020-10-17)">
<metadata
id="metadata296">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs294">
<inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : 88.5 : 1"
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_z="595.3 : 88.5 : 1"
inkscape:persp3d-origin="297.65 : 59 : 1"
id="perspective1968" />
</defs>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="2560"
inkscape:window-height="1376"
id="namedview292"
showgrid="false"
inkscape:zoom="2.8284271"
inkscape:cx="363.75339"
inkscape:cy="81.929955"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg290"
showguides="true"
inkscape:guide-bbox="true" />
<g
id="g3114"
transform="translate(6.8951543,-55.231453)"
style="fill:#b3b3b3">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="129.50179"
y="165.9559"
id="text3032-8"><tspan
sodipodi:role="line"
id="tspan3030-9"
x="129.50179"
y="165.9559"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#b3b3b3;stroke-width:1.57497">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="267.37091"
y="165.09778"
id="text3032-7-4"><tspan
sodipodi:role="line"
id="tspan3030-2-1"
x="267.37091"
y="165.09778"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#b3b3b3;stroke-width:1.57497">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#b3b3b3;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="409.62881"
y="165.75974"
id="text3032-3-6"><tspan
sodipodi:role="line"
id="tspan3030-5-4"
x="409.62881"
y="165.75974"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#b3b3b3;stroke-width:1.57497">2</tspan></text>
</g>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="209.64571"
y="100.67403"
id="text2953"><tspan
sodipodi:role="line"
id="tspan2951"
x="209.64571"
y="100.67403"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">x</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="133.86652"
y="108.5712"
id="text3032"><tspan
sodipodi:role="line"
id="tspan3030"
x="133.86652"
y="108.5712"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="271.73563"
y="107.71309"
id="text3032-7"><tspan
sodipodi:role="line"
id="tspan3030-2"
x="271.73563"
y="107.71309"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">1</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:62.9988px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.57497"
x="413.99356"
y="108.37503"
id="text3032-3"><tspan
sodipodi:role="line"
id="tspan3030-5"
x="413.99356"
y="108.37503"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.57497">2</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none"
x="348.96594"
y="97.454025"
id="text2953-1"><tspan
sodipodi:role="line"
id="tspan2951-7"
x="348.96594"
y="97.454025"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold'">=</tspan></text>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@ -7,48 +7,59 @@ Since we are done with categories, let's look at some other structures that are
What are monoids
===
Monoids are simpler than categories. A monoid is defined by a collection (set) of objects and an operation that allows us to combine two objects and produce a third one of the same kind.
The monoid operation
---
Monoids are simpler than categories. A monoid is defined by a collection (set) of elements and an operation that allows us to combine two element and produce a third one of the same kind.
Let's take our familiar colourful balls.
[Balls](balls.svg)
In this case a monoid would be a rule (operation) for "combining" two balls into one where the rule should (like functional composition) be "associative" i.e. applying it on the same number of elements in a different order should make no difference.
In this case a monoid would be a rule (operation) for "combining" two balls into one.
An example of such rule would be blending the colors of the balls, as if we are mixing paint.
[A rule for combining balls](balls_rule.svg)
You can probably think of other ways to define such a rule. This will help you realize that there can be many ways to create a monoid from the same set of items. The monoid is not the set itself, it is the set *together with the rule*.
You can probably think of other ways to define such a rule. This will help you realize that there can be many ways to create a monoid from a given set of items. The monoid is not the set itself, it is the set *together with the rule*.
Associativity
---
The monoid rule should, like functional composition, be "associative" i.e. applying it on the same number of elements in a different order should make no difference.
[Associativity in the color mixing operation](balls_associativity.svg)
When a rule is associative, this means we can use all kinds of algebraic operations to any sequence of terms (or in other words to apply equation reasoning), like for example we can add or remove a term that is present at both sides of an equation and retaining the equality of the existing terms:
[Associativity in the color mixing operation](balls_arithmetic.svg)
The identity element
---
Actually, not any (associative) rule for combining elements makes them form a monoid (it makes them form a "semigroup", which is also a thing, but I won't go into that). In order to be a monoid, a collection must feature what is called an "identity element" of a given rule (or a zero element, if you prefer) - one that dissapears when combined with other element. So the identity element **i** is such that when you combine any element with the identity element, the result would be that element (not the identity but the other one). Or simply **x • i = x and i • x = x for any x**. In the case of our color-mixing monoid the identity element is the white ball.
Actually, not any (associative) rule for combining elements makes the balls form a monoid (it makes them form a "semigroup", which is also a thing, but that's a separate topic). In order to be a monoid, a set must feature what is called an "identity element" of a given rule (or a *zero* element, if you prefer) - one that, when combined with any other element gives back that same element not the identity but the other one. Or simply **x • i = x and i • x = x for any x**. In the case of our color-mixing monoid the identity element is the color white, represented by the white ball:
[The identity element of the color-mixing monoid](balls_identity.svg)
If you remember from the last chapter that functional composition is also associative and that it also contains an identity element, you might start suspecting that it forms a monoid in some way, and that is really the case (if this book were a whodunit pulp fiction, it would be a really bad one) We will go into more details later.
As you probably remember from the last chapter, functional composition is also associative and it also contains an identity element, so you might start suspecting that it forms a monoid in some way. And it is really the case with one little caveat.
Some basic examples
To keep the suspense alive, let's see some simpler monoids before we dwelve into that:
Basic monoids
===
Monoids from numbers
---
Mathematics is not all about numbers, but you can numbers do pop in in most areas of mathematics and monoids are no exception. The set of natural numbers *N* form a monoid, when combined with the all to familiar operation of addition.
Mathematics is not all about numbers, however numbers do tend to pop up in most of its areas and monoids are no exception. The set of natural numbers *N* form a monoid when combined with the all too familiar operation of addition (or to use the official terminology *N* *form* a monoid *under* addition).
[The monoid of numbers under addition](numbers_addition.svg)
The natural numbers also form a monoid under multiplication (this is another way of saying it).
(if you see a **1 + 1 = 2** in your texbook you know you are working on math foundations(or you are in kindergarden)).
The natural numbers also form a monoid under multiplication as well:
[The monoid of numbers under multiplication](numbers_multiplication.svg)
To get the correct intuition about monoids, it's best to think of numbers not as quantities, but as operations, e.g. **+ 1** ** x 1** etc.
**Task:** Which are the identity elements of those monoids?
**Task:** Go through other mathematical operations and figure out why don't they are not monoidal.
@ -56,9 +67,7 @@ To get the correct intuition about monoids, it's best to think of numbers not as
Monoids from boolean operations
---
Thinking about other operations that we have covered (operation being a function which takes a pair of element of a given type and returns one element of the same type), we may remember the boolean operations **AND** and **OR**. which operate on the set, consisting of just two values **{ True, False }**. Those operations form monoids too.
Do those operations form monoids? Proving that they do is easy enough by just ennumerating all cases.
Thinking about other operations that we covered (operation being a function which takes a pair of element of a given type and returns one element of the same type), we may remember the boolean operations **AND** and **OR**. which operate on the set, consisting of just two values **{ True, False }**. Those operations form monoids too. Proving that they do is easy enough by just ennumerating all cases.
We can prove that **AND** is associative by expanding the formula **(A AND B) AND C = A AND (B AND C)** in all possible ways:
@ -74,40 +83,74 @@ And we can prove that **TRUE** is the identity element by expanding the other fo
...and then do the same for **A AND I = A**.
In general, we can use monoids and related structures as a way to model how a set of (associative) actions that are performed on a given object (or objects) alter it's state. We can do that provided that the object's state is determined solemnly by the actions that are performed on it - this allows us to leave the object out of the equation and concentrate on how the actions are combined.
As per usual in the abstract algebra, the actions (and objects) can be anything, from mixing colors in paint, or adding a quantities to a given set of things.
Other related structures
===
Monoid actions obey only one rule - they are associative (two if you count the existance of the identity element). In some cases we come across actions that obey other rules that are also interesting. Imposing more (or less) rules to the way in which actions are combinded results in the definition of other monoid-like structures.
Commutative monoids
Intuitions
---
Monoids reflect the fact that sometimes the order in which the actions are performed might change the outcome. But sometimes action order does not matter i.e. combining a given set of actions yields the same result no matter which one is first and which one is second. Those operation are called commutative operations. A nice example of this is the addition of quantities - it does not matter whether if I have given you 1 apple and then 2 more, or if I have given you 2 first and then 1 more i.e. **x + y = y + x**.
In order to form the correct intuition about monoids, try to avoid thinking of the elements in the set as objects, but instead think of them as *actions*. For example, when thinking about numbers don't think of them as *quantities* (as in two apples, two oranges etc.), but as *operations*, (e.g. as the action of addding one to a given quantity). In other words, don't think of the element by itself, but only think of it together with the operation (in this case addition).
Monoids with operations that are commutative are called *commutative monoids*. All monoids that we examined so far are also *commutative*.
This touches a programming concept which is very popular in category-theory inspired languages - currying - that is based on the idea that a function that accepts two arguments together with one of those arguments already supplied can be viewed as a function which takes one argument. e.g. the function `add(number, number)` together with the element `2` is equivalent to the `addTwo(number)` function.
In general, we use monoids and related structures as a way to model how a set of (associative) actions that are performed on a given object (or objects) alter it's state. We can do that, provided that the object's state is determined solemnly by the actions that are performed on it, this allows us to leave the object out of the equation and concentrate on how the actions are combined. And as per usual in the actions (and objects) can be anything, from mixing colors in paint, or adding a quantities to a given set of things etc.
Other monoid-like objects
===
Monoid operations obey only one law - they are associative (two, if you count the existence of the identity element). In some cases we come across operations that also obey other rules that are also interesting. Imposing more (or less) rules to the way in which actions are combinded results in the definition of other monoid-like structures.
Commutative monoids
---
Looking at the monoid laws and the examples we gave so far, we observe that all of them obey one more rule (law) which we didn't specify, namely that the order in which the operations are applied is irrelevant to the end result.
[Commutative monoid operation](monoid_commutative.svg)
s we discussed, not all monoids are commutative, and we will see some non-commutative ones later.
Such operations (ones for which combining a given set of objects yields the same result no matter which one is first and which one is second) are called *commutative* operations. Monoids with operations that are commutative are called *commutative monoids*.
As we said, addition is commutative as well - it does not matter whether if I have given you 1 apple and then 2 more, or if I have given you 2 first and then 1 more i.e. **x + y = y + x**.
[Commutative monoid operation](addition_commutative.svg)
All monoids that we examined so far are also *commutative*, and we will see some non-commutative ones later.
Groups
---
Monoids don't have any rules related to when (and if) a given set of action would result in the object going back in a previous step, i.e. monoid actions are onse that cannot be undone.
A group is just a monoid in which each element has what is called an "inverse" element where the element and its inverse cancel each other out when applied one after the other, in other words , **forall x, there must exist x' such that x • x' = i** ( where **i** is the identity element).
If we view *monoids* as a means of modelling the effect of applying a set of (associative) actions, we use *groups* to model the eeffects of actions are also *reversible*.
An nice example of a group can be found in the realm of numbers (really, numbers are a nice example of almost all properties) - it is the set of integers under addition, where the inverse of each number is its opposite number. The above formula, then, becomes **x + (-x) = 0**
The study of groups is a field that is much bigger than the theory of monoids (and perhaps bigger than category theory itself).
The study of groups is a field that is much bigger than the theory of monoids (and perhaps bigger than category theory itself). And it all started with the what are now called the "symmetry groups" which we will look into with more details.
Summary
---
Here are the algebraic structures that we have seen so far and the laws that they obey.
| | Semigroups | Monoids | Groups |
|---| --- | --- |
|Associativity| X | X | X |
|Identity| | X | X |
|Invertability | | | X |
Symmetry groups
===
An interesting set of groups/monoids of *symmetries* of some object
Group of rotations
---
Group of reflections
---
Cancellation law
---
Categories
---
A
===
Some more advanced examples
===
@ -116,10 +159,6 @@ The trivial monoid
---
Peano arithmetic
Symmetry monoids
---
An interesting set of groups/monoids (which doesn't look like one at first is) are the groups of symmetries of some object
Monoids as categories
===